Settings

The page will reload to apply your changes.
Theme

ASCII Art Font

ASCII Art Menu

Original Usenet thread from alt.ascii-art, started 25 Apr 2001.
 _   _                     _        _             _     _           
| | | |___  ___ _ __   ___| |_     / \   _ __ ___| |__ (_)_   _____ 
| | | / __|/ _ \ '_ \ / _ \ __|   / _ \ | '__/ __| '_ \| \ \ / / _ \
| |_| \__ \  __/ | | |  __/ |_   / ___ \| | | (__| | | | |\ V /  __/
 \___/|___/\___|_| |_|\___|\__| /_/   \_\_|  \___|_| |_|_| \_/ \___|
image 2 ascii logo

image 2 ascii logo

alt.ascii-art · 5 messages · 25 Apr 2001 - 27 Apr 2001
In preperation for the contest I've cooked up three filters for the
conversion. Two of them show promise (each returns decent results on
some images).

Here's what one of them did with the image2ascii contest logo, for
a width of 75.

 .________________________________________________________________________
 | ./ __.                  ._     ..  . . __ __..__                   `\ |
 |./   | ?\\ <:,,-+-<:,    ','    || -?:'| `  |  |              .      `\|
 |'   -?.???.\-?`-{ \-.    <-|   .#"?.|-'`-/ -?..?-             |        |
 |               "'                                          ^--}-/'     |
 |       ._____________.                     #. |\  >.        ./`\.      |
 |       `"*###HMH#####' `H#\.              ?&b,R9\d$b.                  |
 |             |M|         "*#Hb\.              |$"'   |\                |
 |   _?_.      |M|            ``#H#o.          .&9\   .&?\          -+.  |
 |   .'\       |M|                ""HHb_        ??     |?           ``   |
 |             |M|      ooooooooooo##HMMM#\.   ,R$.   ./H\               |
 |             |M|      *###########HMMMM#'' #.`||  +  |$' p.      ,     |
 |       _\.   |M|               .,dMH*'    ,Mb,M&\,?b_d&\,?\.   `?<:    |
 |       -`    |M|            .o#H*''        #:""`"" """`""#.            |
 |             |M|        .,dHH""           JHL           ?Eb.           |
 |             |M|       {H*''           |\ ?b  |.     |. "L: |.         |
 |     . +MMMMMMMMMMMMM|                .MH\dMb_/?.   ./&\,Ib_d&,        |
 |  .  |                                `'`""'""'       `""'""'`         |
 |  ``-H-`                                                               |
 |.   /":     /"' _. _. ._. ._  o_ ..  o_ ._  ._ _..     "\ /^,,"\ `|   ,|
 |`,          | .| | LLL|:| *-' | . L  |   J  | |J J    . _ | || | .|  ,?|
 | `.          "  `' """|?'  "'  " `"'  " `"' `' " "    `"' `'  "  ""'|' |
 `""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


Elijah
------
has another method to cook up yet

Eli the Bearded wrote:
> 
> In preperation for the contest I've cooked up three filters for the
> conversion. Two of them show promise (each returns decent results on
> some images).
> 
> Here's what one of them did with the image2ascii contest logo, for
> a width of 75.
[snip: image]

Great, on the logo your filter beats all the ones I have developed for
Jave (even experimental ones).
I think we should add the logo as source image to the contest, too.

I am looking forward for very interesting results and algorithms :-)

Markus

In alt.ascii-art, Markus Gebhard  <ukg...@rz.uni-karlsruhe.de> wrote:
> Eli the Bearded wrote:
> > In preperation for the contest I've cooked up three filters for the
> > conversion. Two of them show promise (each returns decent results on
> > some images).
> Great, on the logo your filter beats all the ones I have developed for
> Jave (even experimental ones).

I didn't write the base method for that, just applied some filters and
let it go.

That method worked particularly well on the logo. My other pretty
good method works particularly well on the testscreen image. Nothing
I have works well for comp1d.jpg, lilies.gif, or Callahan_bag.jpg.

> I think we should add the logo as source image to the contest, too.

Sounds good, but I posted that because I wanted to show off what
this method I have could do with a well-known (:^) non-contest image.

> I am looking forward for very interesting results and algorithms :-)

Will you be sharing your algorithms? I don't care much about the
actual code, just the methods behind it.

Elijah
------
has a half finished program using a new method he wants to try

Eli the Bearded wrote:

> Will you be sharing your algorithms? I don't care much about the
> actual code, just the methods behind it.

I consider releasing the source code of the image2ascii part of Jave
later this year.
But the algorithms in there are quite easy, I have already discussed
them in another thread in this group:
"Re: Gwyneth Paltrow - Jave image->ascii conversion .. and discussion of
algorithms" 

I just take 4 (or 1 - depending on the algorithm one uses) pixels from
the origional image and try to find the best fit in a table. In this
table (almost) all ascii characters have asigned values for their grey
shade in each quarter.
So there is only one tricky part: Find a good table with those gray
values. I have written a program to create those tables and I was very
surprised that:
a) the results of the 2x2 conversion is that good
and
b) when you take 3x3 pixels it does not work any longer.

So my algorithms are based on gray shades which only seem to work for up
to a grid of 2x2, while other algorithms are based on a black/white
decission. E.g. you can take a 3x3 grid and asign black/white pixels for
each region to each ascii character:
+---+
| # |
|###|
|# #|
+---+

For future enhancements in Jave's image2ascii tool, I consider writing
additional algorithms by
a) trying grey shades in a 2x3 or 3x2 raster
b) using the black/white methode with some ideas I have

So now that I have put my cards on the table, what are your ideas and
experiences?

Markus

In alt.ascii-art, Markus Gebhard  <ukg...@rz.uni-karlsruhe.de> wrote:
> Eli the Bearded wrote:
[asked about algorithms for image->ascii]
> So my algorithms are based on gray shades which only seem to work for up
> to a grid of 2x2, while other algorithms are based on a black/white
> decission. E.g. you can take a 3x3 grid and asign black/white pixels for
> each region to each ascii character:

The tool that did that rendering of the logo looks at black and
white pixels from a 4 tall and 2 wide grid. I've posted a perl
script here that takes a grayscale image which has been already
scaled 50% in height and tries to pick a single best character
for each pixel. Below I've charted the input and output of the 
4x2 method. Beware: it is long. (500+ lines, easily made thanks
to perl's "format" command.)

I'm working on another method that tries to assign characters based
on a 2x2 grid black and white grid. It will again assume the image
has been reduced in its Y-scale to match the font proportions. (I
think this is a cleaner way than 2x1, 3x1, 4x2, etc, since it makes
it easier to scale for fonts that are not exactly twice as tall as
wide.)

> For future enhancements in Jave's image2ascii tool, I consider writing
> additional algorithms by
> a) trying grey shades in a 2x3 or 3x2 raster
> b) using the black/white methode with some ideas I have
> 
> So now that I have put my cards on the table, what are your ideas and
> experiences?

Elijah
------
also working on mosaics of image thumbnails

format =
 @|||||||||||      @|||||||||||      @|||||||||||      @|||||||||||
 $h[0]{i},         $h[1]{i},         $h[2]{i},         $h[3]{i},
 @<<<<<<<<<<<      @<<<<<<<<<<<      @<<<<<<<<<<<      @<<<<<<<<<<<
 $h[0]{b},         $h[1]{b},         $h[2]{b},         $h[3]{b},

 ^<                ^<                ^<                ^<
 $h[0]{b},         $h[1]{b},         $h[2]{b},         $h[3]{b},
 ^<       @<       ^<       @<       ^<       @<       ^<       @<
 $h[0]{b},$h[0]{c},$h[1]{b},$h[1]{c},$h[2]{b},$h[2]{c},$h[3]{b},$h[3]{c}
 ^<                ^<                ^<                ^<
 $h[0]{b},         $h[1]{b},         $h[2]{b},         $h[3]{b},
 ^<                ^<                ^<                ^<
 $h[0]{b},         $h[1]{b},         $h[2]{b},         $h[3]{b},


.

      0                 1                 2                 3
 00 00 00 00       10 00 00 00       01 00 00 00       11 00 00 00

 00                10                01                11
 00                00       '        00       `        00       "
 00                00                00                00
 00                00                00                00


      4                 5                 6                 7
 00 10 00 00       10 10 00 00       01 10 00 00       11 10 00 00

 00                10                01                11
 10       -        10       '        10       '        10       '
 00                00                00                00
 00                00                00                00


      8                 9                 10                11
 00 01 00 00       10 01 00 00       01 01 00 00       11 01 00 00

 00                10                01                11
 01       -        01       `        01       `        01       `
 00                00                00                00
 00                00                00                00


      12                13                14                15
 00 11 00 00       10 11 00 00       01 11 00 00       11 11 00 00

 00                10                01                11
 11       -        11       ^        11       ^        11       "
 00                00                00                00
 00                00                00                00


      16                17                18                19
 00 00 10 00       10 00 10 00       01 00 10 00       11 00 10 00

 00                10                01                11
 00       .        00       :        00       :        00       :
 10                10                10                10
 00                00                00                00


      20                21                22                23
 00 10 10 00       10 10 10 00       01 10 10 00       11 10 10 00

 00                10                01                11
 10       |        10       |        10       /        10       ?
 10                10                10                10
 00                00                00                00


      24                25                26                27
 00 01 10 00       10 01 10 00       01 01 10 00       11 01 10 00

 00                10                01                11
 01       /        01       >        01       /        01       >
 10                10                10                10
 00                00                00                00


      28                29                30                31
 00 11 10 00       10 11 10 00       01 11 10 00       11 11 10 00

 00                10                01                11
 11       ~        11       +        11       /        11       *
 10                10                10                10
 00                00                00                00


      32                33                34                35
 00 00 01 00       10 00 01 00       01 00 01 00       11 00 01 00

 00                10                01                11
 00       .        00       :        00       :        00       :
 01                01                01                01
 00                00                00                00


      36                37                38                39
 00 10 01 00       10 10 01 00       01 10 01 00       11 10 01 00

 00                10                01                11
 10       \        10       \        10       <        10       <
 01                01                01                01
 00                00                00                00


      40                41                42                43
 00 01 01 00       10 01 01 00       01 01 01 00       11 01 01 00

 00                10                01                11
 01       |        01       \        01       |        01       ?
 01                01                01                01
 00                00                00                00


      44                45                46                47
 00 11 01 00       10 11 01 00       01 11 01 00       11 11 01 00

 00                10                01                11
 11       ~        11       \        11       +        11       *
 01                01                01                01
 00                00                00                00


      48                49                50                51
 00 00 11 00       10 00 11 00       01 00 11 00       11 00 11 00

 00                10                01                11
 00       -        00       :        00       :        00       :
 11                11                11                11
 00                00                00                00


      52                53                54                55
 00 10 11 00       10 10 11 00       01 10 11 00       11 10 11 00

 00                10                01                11
 10       ~        10       ?        10       <        10       <
 11                11                11                11
 00                00                00                00


      56                57                58                59
 00 01 11 00       10 01 11 00       01 01 11 00       11 01 11 00

 00                10                01                11
 01       ~        01       >        01       ?        01       >
 11                11                11                11
 00                00                00                00


      60                61                62                63
 00 11 11 00       10 11 11 00       01 11 11 00       11 11 11 00

 00                10                01                11
 11       =        11       b        11       d        11       #
 11                11                11                11
 00                00                00                00


      64                65                66                67
 00 00 00 10       10 00 00 10       01 00 00 10       11 00 00 10

 00                10                01                11
 00       .        00       :        00       :        00       :
 00                00                00                00
 10                10                10                10


      68                69                70                71
 00 10 00 10       10 10 00 10       01 10 00 10       11 10 00 10

 00                10                01                11
 10       :        10       !        10       /        10       ?
 00                00                00                00
 10                10                10                10


      72                73                74                75
 00 01 00 10       10 01 00 10       01 01 00 10       11 01 00 10

 00                10                01                11
 01       :        01       :        01       /        01       ?
 00                00                00                00
 10                10                10                10


      76                77                78                79
 00 11 00 10       10 11 00 10       01 11 00 10       11 11 00 10

 00                10                01                11
 11       :        11       ?        11       ?        11       P
 00                00                00                00
 10                10                10                10


      80                81                82                83
 00 00 10 10       10 00 10 10       01 00 10 10       11 00 10 10

 00                10                01                11
 00       ,        00       i        00       /        00       ?
 10                10                10                10
 10                10                10                10


      84                85                86                87
 00 10 10 10       10 10 10 10       01 10 10 10       11 10 10 10

 00                10                01                11
 10       |        10       |        10       |        10       T
 10                10                10                10
 10                10                10                10


      88                89                90                91
 00 01 10 10       10 01 10 10       01 01 10 10       11 01 10 10

 00                10                01                11
 01       /        01       ?        01       /        01       7
 10                10                10                10
 10                10                10                10


      92                93                94                95
 00 11 10 10       10 11 10 10       01 11 10 10       11 11 10 10

 00                10                01                11
 11       r        11       }        11       /        11       P
 10                10                10                10
 10                10                10                10


      96                97                98                99
 00 00 01 10       10 00 01 10       01 00 01 10       11 00 01 10

 00                10                01                11
 00       ,        00       :        00       ;        00       ?
 01                01                01                01
 10                10                10                10


     100               101               102               103
 00 10 01 10       10 10 01 10       01 10 01 10       11 10 01 10

 00                10                01                11
 10       >        10       ?        10       S        10       S
 01                01                01                01
 10                10                10                10


     104               105               106               107
 00 01 01 10       10 01 01 10       01 01 01 10       11 01 01 10

 00                10                01                11
 01       /        01       )        01       |        01       7
 01                01                01                01
 10                10                10                10


     108               109               110               111
 00 11 01 10       10 11 01 10       01 11 01 10       11 11 01 10

 00                10                01                11
 11       >        11       $        11       $        11       &
 01                01                01                01
 10                10                10                10


     112               113               114               115
 00 00 11 10       10 00 11 10       01 00 11 10       11 00 11 10

 00                10                01                11
 00       v        00       ?        00       ?        00       $
 11                11                11                11
 10                10                10                10


     116               117               118               119
 00 10 11 10       10 10 11 10       01 10 11 10       11 10 11 10

 00                10                01                11
 10       +        10       }        10       $        10       F
 11                11                11                11
 10                10                10                10


     120               121               122               123
 00 01 11 10       10 01 11 10       01 01 11 10       11 01 11 10

 00                10                01                11
 01       /        01       $        01       /        01       &
 11                11                11                11
 10                10                10                10


     124               125               126               127
 00 11 11 10       10 11 11 10       01 11 11 10       11 11 11 10

 00                10                01                11
 11       p        11       D        11       &        11       H
 11                11                11                11
 10                10                10                10


     128               129               130               131
 00 00 00 01       10 00 00 01       01 00 00 01       11 00 00 01

 00                10                01                11
 00       .        00       :        00       :        00       :
 00                00                00                00
 01                01                01                01


     132               133               134               135
 00 10 00 01       10 10 00 01       01 10 00 01       11 10 00 01

 00                10                01                11
 10       :        10       \        10       :        10       ?
 00                00                00                00
 01                01                01                01


     136               137               138               139
 00 01 00 01       10 01 00 01       01 01 00 01       11 01 00 01

 00                10                01                11
 01       :        01       \        01       !        01       ?
 00                00                00                00
 01                01                01                01


     140               141               142               143
 00 11 00 01       10 11 00 01       01 11 00 01       11 11 00 01

 00                10                01                11
 11       :        11       ?        11       ?        11       $
 00                00                00                00
 01                01                01                01


     144               145               146               147
 00 00 10 01       10 00 10 01       01 00 10 01       11 00 10 01

 00                10                01                11
 00       \        00       \        00       :        00       ?
 10                10                10                10
 01                01                01                01


     148               149               150               151
 00 10 10 01       10 10 10 01       01 10 10 01       11 10 10 01

 00                10                01                11
 10       \        10       |        10       (        10       $
 10                10                10                10
 01                01                01                01


     152               153               154               155
 00 01 10 01       10 01 10 01       01 01 10 01       11 01 10 01

 00                10                01                11
 01       <        01       %        01       ?        01       Z
 10                10                10                10
 01                01                01                01


     156               157               158               159
 00 11 10 01       10 11 10 01       01 11 10 01       11 11 10 01

 00                10                01                11
 11       <        11       $        11       $        11       &
 10                10                10                10
 01                01                01                01


     160               161               162               163
 00 00 01 01       10 00 01 01       01 00 01 01       11 00 01 01

 00                10                01                11
 00       ,        00       \        00       i        00       ?
 01                01                01                01
 01                01                01                01


     164               165               166               167
 00 10 01 01       10 10 01 01       01 10 01 01       11 10 01 01

 00                10                01                11
 10       \        10       \        10       ?        10       \
 01                01                01                01
 01                01                01                01


     168               169               170               171
 00 01 01 01       10 01 01 01       01 01 01 01       11 01 01 01

 00                10                01                11
 01       |        01       |        01       |        01       T
 01                01                01                01
 01                01                01                01


     172               173               174               175
 00 11 01 01       10 11 01 01       01 11 01 01       11 11 01 01

 00                10                01                11
 11       ?        11       \        11       4        11       9
 01                01                01                01
 01                01                01                01


     176               177               178               179
 00 00 11 01       10 00 11 01       01 00 11 01       11 00 11 01

 00                10                01                11
 00       v        00       ?        00       ?        00       $
 11                11                11                11
 01                01                01                01


     180               181               182               183
 00 10 11 01       10 10 11 01       01 10 11 01       11 10 11 01

 00                10                01                11
 10       \        10       \        10       $        10       &
 11                11                11                11
 01                01                01                01


     184               185               186               187
 00 01 11 01       10 01 11 01       01 01 11 01       11 01 11 01

 00                10                01                11
 01       +        01       $        01       {        01       &
 11                11                11                11
 01                01                01                01


     188               189               190               191
 00 11 11 01       10 11 11 01       01 11 11 01       11 11 11 01

 00                10                01                11
 11       q        11       &        11       &        11       H
 11                11                11                11
 01                01                01                01


     192               193               194               195
 00 00 00 11       10 00 00 11       01 00 00 11       11 00 00 11

 00                10                01                11
 00       _        00       :        00       :        00       ?
 00                00                00                00
 11                11                11                11


     196               197               198               199
 00 10 00 11       10 10 00 11       01 10 00 11       11 10 00 11

 00                10                01                11
 10       :        10       ?        10       ?        10       $
 00                00                00                00
 11                11                11                11


     200               201               202               203
 00 01 00 11       10 01 00 11       01 01 00 11       11 01 00 11

 00                10                01                11
 01       :        01       ?        01       ?        01       $
 00                00                00                00
 11                11                11                11


     204               205               206               207
 00 11 00 11       10 11 00 11       01 11 00 11       11 11 00 11

 00                10                01                11
 11       :        11       $        11       $        11       &
 00                00                00                00
 11                11                11                11


     208               209               210               211
 00 00 10 11       10 00 10 11       01 00 10 11       11 00 10 11

 00                10                01                11
 00       \        00       ?        00       ?        00       $
 10                10                10                10
 11                11                11                11


     212               213               214               215
 00 10 10 11       10 10 10 11       01 10 10 11       11 10 10 11

 00                10                01                11
 10       ?        10       L        10       $        10       [
 10                10                10                10
 11                11                11                11


     216               217               218               219
 00 01 10 11       10 01 10 11       01 01 10 11       11 01 10 11

 00                10                01                11
 01       <        01       Z        01       /        01       Z
 10                10                10                10
 11                11                11                11


     220               221               222               223
 00 11 10 11       10 11 10 11       01 11 10 11       11 11 10 11

 00                10                01                11
 11       c        11       k        11       &        11       R
 10                10                10                10
 11                11                11                11


     224               225               226               227
 00 00 01 11       10 00 01 11       01 00 01 11       11 00 01 11

 00                10                01                11
 00       ,        00       ?        00       ?        00       $
 01                01                01                01
 11                11                11                11


     228               229               230               231
 00 10 01 11       10 10 01 11       01 10 01 11       11 10 01 11

 00                10                01                11
 10       >        10       \        10       S        10       S
 01                01                01                01
 11                11                11                11


     232               233               234               235
 00 01 01 11       10 01 01 11       01 01 01 11       11 01 01 11

 00                10                01                11
 01       ?        01       $        01       J        01       ]
 01                01                01                01
 11                11                11                11


     236               237               238               239
 00 11 01 11       10 11 01 11       01 11 01 11       11 11 01 11

 00                10                01                11
 11       >        11       &        11       1        11       9
 01                01                01                01
 11                11                11                11


     240               241               242               243
 00 00 11 11       10 00 11 11       01 00 11 11       11 00 11 11

 00                10                01                11
 00       o        00       b        00       d        00       &
 11                11                11                11
 11                11                11                11


     244               245               246               247
 00 10 11 11       10 10 11 11       01 10 11 11       11 10 11 11

 00                10                01                11
 10       b        10       b        10       &        10       6
 11                11                11                11
 11                11                11                11


     248               249               250               251
 00 01 11 11       10 01 11 11       01 01 11 11       11 01 11 11

 00                10                01                11
 01       d        01       &        01       d        01       H
 11                11                11                11
 11                11                11                11


     252               253               254               255
 00 11 11 11       10 11 11 11       01 11 11 11       11 11 11 11

 00                10                01                11
 11       #        11       H        11       H        11       M
 11                11                11                11
 11                11                11                11

About this thread. These messages were posted publicly to the newsgroup alt.ascii-art in 2001 and are mirrored here unchanged as part of the Historic Archives – only email addresses are masked. The artwork and text belong to their original authors: if you copy a piece, keep the artist's initials or signature intact and credit them where you can. Are you one of the authors? Contact us to get your posts attributed, connected to your artist profile, or removed.