Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

image2ascii edge detection

159 views
Skip to first unread message

Markus Gebhard

unread,
Jan 31, 2002, 3:55:10 PM1/31/02
to
Hi,

Recently there was a discussion about edge tracing and edge detection
algorithms for automatic image2ascii conversion. I have already
presented some results from a simple edge _tracing_ algorithm. They were
quite funny, but real edge _detection_ requires a little bit more
effort.
Well, although I have very few time, I have managed to dig out some edge
detection code from my earlier investigations and implemented the worlds
very first (as far as I know) _real_ edge _detection_ image2ascii
algorithm.

It is not very easy to use and will only work well on few images.
However the results may be useful if the image contains many lines and
edges. Here is an example:

1.edge _detection_:
. .
| | , . .
. || | _,-'
` |_| , -| _| |,' :,'-
` ||`.,'\ / - |,',.'. -
/ | | \L,-| ,' / -''': _.,
., . ,' / '| ,' L ,-',- =. .-
- /: -. | /' : . ./- ,')_.-,- '--
..:' .- .\-/'\ ,- \ .' - |, _,' .-/
. -- .' '\ /)',' | |_- , /' /
.| . : / ' | '' , ,',\'_ / < ,.' .'
\ '\^, | | ,' , |/ /'/ .' '' /.-'/'
._`. - | | '/' ||/ '_/ ,' _/-'
'-.. _' . \,\ | / \` / / , ' ,-- .,,'/ _
_ . '' - |_ ,.' . .'/' ,--''---= _,-'
. -'.. ^-,`. |','/ /- ,' ,' __ _
-.. ' .\' ,'/' ,_| . _/:
= .' _,_ / . , / _-,--''''' ''':''
..--`'' -^= _)'_ / ' / __. ..,.
--= ', .,''`' --- '--...'
-.'.,' -- `-
| / '
|||
| |
|||
|\|
\ |
|| |
_ ,' . .
--':'`:-- ''..
2. Whereas edge _tracing_:
/_/
/\ | / / / ___
/ | || /| |,'_ \
/\,' _\ \|_||_| |_| \
O / _ _|_|__|_ _ |_
O / / || \ _|_|_ |_|_ `-./
/\_/ |_/ \_| |_| |_| / | / /
/ |_/ _ |_/_\
/ _ __ __ |_| | \ /
| _| \ _ |__| _ |__| |_ /|
\ |_|`.| \ | | _ _ \_|\
/\_| / |_ _ |_||_| |_|_ \
| |__/| |_ ,' | _ _ |_| __\
/__ _ / | | _|/ | |_| |__|
_| `-. |__|_|_/ / | _ _______ __/
O / _\ `. _ / / _|_||_______|_,'
/ |__/\___||_|_ | / ,' | _ |____
| |_| |_/ / ,' __|_| __\
``--..________ _ |_/ _ |__| |_
`.|_| ,--'' \_____ _ \
\ ,' `-./ \
| /
| |
\ |
||
/ |
| |
_| `-.
_,' \
/___________\
3.Four pixel per character greyscale conversion:
. .
,.. | . .`. .
. `;; `` J..r ..`.`
:, :.;....| .; :.: ...``
` :.`.o:j J c: 1.=.u:`..`
..J.. | Jo=.^t .%.r`v` ` .` `.
.:.`,. :,0``4O: x:J J'.i.,: J:.,...`
.,,3c``..:`;.| ouyJr.|`w J` ,..^.`.:``
....7,`v,`=z.|,x' \Ja:,:.vJ``.|. ..`` .`.
..=`7, `u..`:.| Jx`:.r3| |,r.`J.,`` .`
.... z. c xJo|.u!.:a| c`.3:.n:.4:..`` .`
,. `..|^,.; 9`,u2:..4k: |r 2``.J:.: .J```.`
`..`?;.c` .; :Js2: .C=`||,`.O2:.:.,` ..J^`
`....``...|..` . 0 .z: j.f`..%`.?=v.c=^J .:.
. ```::.j% ,.x .:% .`..;`..7'``^^`.;.:^`
..```. V0^%,..,J..% ,ja?' .^ ...c`
.`...`` `,.`je,`G% ,.O` ..:......a:`
..:.`.....,;. `,31 ..+ .`.`^````` ``````
````` `^?sa,`.X..! ..&...J,. .,:?.
`Uu.'.l..f: .``=|.``..``
.`.Z&2: `^^. `
`JZ!
`JD
;JD
.=X
`J4
``4.
.J4;
..:.3A...
`````````%`
4. Now manualy pasting 1. to the foreground of 3.:
. .
,.. | | ,`. .
. `|| |` J..r _,-'`
:` |_|.,.-| _| |,' .:,'-
` ||`.,'\ / c- |,',.'...-
/.J.| | J\L,-| ,'./`v-''':`_.,
.,.`.. :,'``4/: x'| ,'.L.,-',-.=...-
-,/:c-...:`|./'o:y.r./-w J,')_.-,-.'--
..:'7.-v.\-/'\,,- \J.',:.vJ-`.|, ._,' .-/
..=--, `u..':'\ /)','r3| |_-.,J./'` /`
.|.. :. / 'xJo|.''.:,| ,',\'_n/.<:.,.' .'
,\ `.'\^,.| 9`|u,'.,4k: |/ /'/..'.''./.-'/'
`._`.;.-` .| |J'/' .C=`||/`.O2'_/.,' ._/-'
'-..._'`...\,\` | / .\` /./`,.'`,--v.,,'/ .:_
_ . ''`:-.j% |_x ,.' .`.'/'.,--''---=;_,-'
..-'.. V^-,`..|','/ /-a,' ,' .__c_
.-...'` `,.`je,.\' ,'/' ,_|....._/:`
=..'`.._,_,/. `.31 ,./ _-,--''''' ''':''
..--`'' -^=sa_)'_../ './..__.. ...,.
--=.',l..,''`' .---|'--...'
.-.'.,' `--. `-
|JZ/ '
|||
|J|
|||
|\|
\`|.
||4|
_ .,'..A...
--':'`:--%`''..

Here comes another example:
1.edge _detection_:

_ '"''`'' .= _
' -' ___-' .
_ .. /-' ___ . _
- `. > \\` ,' `.
' _ -' '' :. ' ,- '.
' :'-.:_ ' \ : . _____ ``
__ ':_: ._ ._ . ' ,= -::,.... `
_/: __ ..._ -: / _,. : = . - ----=_-..
/ ,'--.|/ ... _ \ \
| ,_ -- . |'.
| `| |||
| , | |
_/ | |
\ ` | | | ||
- --' .._ ..--- | '
,..< .< . _, =\=. | |
\ --- - ` ^- ' -- . ' ' '
' `-'' ' '
-


|
'`''.,-'
_,'
\ '`--------- / ,
/ `. -,..__,-'
/ `.
/ `-. ,-|
,' `-,__ _,' '-.._
_,' `''' `-.._
,,' ``-..___
,-' `--._
,,-'
,-'
,-'
,'
,'

2.edge _tracing_:
____________
,-':::___:::___\ _
,'::::,' |:| /:\__
,--':::::| ___|:_\ `.::`.
/:::::::::/ /::::|_ O `.::\
/::::::::,' |::::::\ \::`.
|:::::::/ /::::::|___ _|:::\
,':::::::|_____|_::::::::`.__ /:::::|_
/:::::::::::::__/ `-._________\ \::::::\
/_::::::::::,-' \::::::\
| |:::::::,' `.:::::\
\ |::::::| |::::|
|:::::::\ /:__::/
|:::::::| |/ ||
/:::::::::`-.____ \ \/
|:::::::::::::::`. _______
|:::::::::::::_:::\ /:_:::::\
\::::::___:::/ `-./ \/ `-.__/
\::::/ \_/
`-.|
|\ _
|:`. /:\
\:::`-. |::`._
|:::::`. \_____\
|:::::::\_________
/::::::::::::::::::\
/::::::::::::::::,-'
/:::::::::::::__,' _/
,':::::::::::::|____,,--'':|__
,'::::::::::::::::::::::::::::::`-.__
,--':::::::::::::::::::::::::::::::::::::`-.____
,-'::::::::::::::::::::::::::::::::::::::::::::::::`-.____
,-'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\
,-':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
,-'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
,':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
``--..____________________________________________________________,,--''

3. The same image with 4 pixel per character greyscale conversion:
...
..caczv?70?vccxo.
.``=xxzz=:`.|v:.```?==..
......:zOnx````.4oZ:`....::,..
.`::`cu4nxzc:`.&.sa+:...````.zvvs.
`.,.,;=zOVv:`.JSSZQQxc``` ```?===.
`,;=u,?vxa:``..4OxdXQc`` ......azoz:
.,`:cx4QQs,``...:=JQSno...c```..a:aozv,
....,.:czxuxOvvoxwZz:JOXZZX#Zxnoa.`?vOZZxx:..
.rJzZX#M#QQZOc::```````````::`...`Jz=:aZQo``
:`Jz4ZXS6v=:```` `:=?4QSSk;`.
:.:?4XQOz:``....` `z0dXX|.
``.z4QXOc:,````.``` Jxv=xO|`
..azwZwv==:,.`..``` `Jx: zz:
:?OX#Ozcz:,`.`.` .J:.`J:;
``JZXv==:::==::a.... ....,```....` `.`
,Qs4X=couugggQggmmn...`..uggBmQQga.`` .``
7#Z=:::?9MB3T!`?0vv`` `:%`9V:JF'``` `
` :Xc`,````7V=:``````` ```:` `
?|``...` .`..
`.:,..` ....` `
.`z:,..` ..=:`` .`
`zvo:......uaaa..... . ..`
`=z4xo....`J9MMHP"^ ....``
;z4ZO=O:,,.````` ..`````
.p?4ZQo`3@MMMMMQg@VV: ...`
.MMmeQQQx::3##Qaaaa2: `
.MMMMMMmQnxz::?77^^`` .,
..qMMMMMMMMmQs:,.` .JMl
..aMMMMMMMMMMMMMmQa......aMMMBma..
.JgMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBBma..
.aMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMma....
.JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMma,
..gMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
..gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
..MMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
JMMMMMMMMMMMMMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMBMMMMMMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMBMMMMBMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMBMMMBMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMBMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMBMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMBMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

4. Now manualy pasting 1. to the foreground of 3.:
...
..cac'"''`''cc=o.
.`'=xxzz=:`.|-:.iii-'=..
_......:zOnx````.4/-:`....::,..
.`-:``.4>xzc:`\\:s,':...````.zvv`.
`.,.,;=_O-':`.JS''QQ:c``` '``,=='.
`,;'u;'-.::``..'Ox\X:c`` ......__o`:
_.,`:':_:Q.,``...:=J'Sno..,=`-::,.:.oz`,
_/:..,.:c..._O-:o/wZz:JO_,.X:Zx=o..-?----=_-..
./JzZ,'--.|/Oc::```````````::`...`Jz=:_ZQ\`\
|`J,_ZXS6v=:```` `-=?4.SSk|'.
|.:?4XQOz:``....` `z`|X|||
|`.z4,XOc:,````.``` Jxv=|O|`
..azw_/v==:,.`..``` `Jx: |z|
\?`X#Ozcz:,`.`.` .|:|`|:||
``J-Xv==::-='::..... ....,---..|.' `.`
,Qs4X=couu,..<g.<m....`..u_,B=\=.a.|` |``
7\Z=:::---B3T-``0^-`` `:%`--:.F'`'` '
` :Xc`,````'V`-''````` '``:` `
-|``...` .`..
`.:,..` ....` `
.`z:,..` ..=:`` .`
`zvo:......|aaa..... . ..`
`=z4xo....`J`MM.8-' ....``
;z4ZO=O:,,.````` .,'````
.\?4ZQo`'`---------V/ ..,`
./M`.QQQx::3-,..__,-: `
./MMMMM.Qnxz::?77^^`` .,
../MMMMMMMM-.s:,.` .,-|
..,MMMMMMMMMMMMM-,_......,MMM'-...
._,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMB`-...
.,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-.....
.,-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM--.,
.,,-MMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
.,-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
.,-MMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
,MMMMMMMMMMMMMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMBMMMMMMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMBMMMMBMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMBMMMBMMMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMBMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMBMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMBMMMMMMMMBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

Well, maybe the results can be further improved. But I have one problem
with all this: There are now so many image2ascii algorithms and options
- it is hard to pick the right one for a certain image. I guess I will
have to compile a document with example images and sample results with
various settings...

However it will still take a few weeks until you all will be able to
test the new features in the next release of JavE. I am very busy moving
to a different flat and there also is my master thesis...

Markus
--
\-/ http://www.jave.de O_< Get JavE now! \-/
J|a|v|E /| J|a|v|E
/-\ Ascii-Art for eyeryone / \ - for free! /-\

0 new messages