Original Usenet thread from alt.ascii-art, started 25 Apr 2001.
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.