http://www.ericharshbarger.org/lego/calista.html
cheers,
eric
--
----------------------------------------------------------------------
Eric Harshbarger / er...@ericharshbarger.org / www.ericharshbarger.org
"Oh please, if people are going to start telling the truth around
here... I'm going to bed." - Jackie-O (Parker Posey, THE HOUSE OF YES)
----------------------------------------------------------------------
That is extremely, exceptionally cool, no matter what "Dr. Square" says
about using programs to help you. I'm just shocked it was completed in only
four months!
Very well done.
..B..
"Eric Harshbarger" <er...@ericharshbarger.org> wrote in message
news:3C51F913...@ericharshbarger.org...
|
Very fun reading .. I enjoyed lots of his other works too and works by other
LEGO modellers like f.x. the Alien on this page:
http://community-1.webtv.net/craigo-lego/scificraigolego/
Now that we are in too good geeky links that have something to do with
ascii-art, check this page :
http://www.ai.mit.edu/~jsd/Projects/ImagesToText/
Jeremy S. De Bonet is a student at MIT .. and one of the many complex projects
he have done is a image to text algorithm.
I think the edge tracing algorithm shows promised allthough you can tell from
it's output which uses a very basic set of characters that Jeremy is no
ascii-artist , but rather a skilled programmer.
I think that had he read my ascii-art tutorial, and in particular had he seen my
sun of directions ..
(recap)
1/3 | 1/3
1/2 | | | 1/2
1/1 | | | | | 1/1
3/2 \ `. `. | ,' ,' / 3/2
2/1 \ \ | | | | | / / 2/1
. `. \ `. | | | ,' / ,' ,
3/1 `. \ \ | `. | ,' | / / ," 3/1
. `. `. \ `. | | | ,' / ,' ," ,
4/1 `-. `. \ \ | | | | | / / ," ,-" 4/1
-._ `-. `. `. \ `. `.|,' ,' / ,' ," ,-" _.-
5/1 `-._ `-. `. \ \ | ||| | / / ," ,-" _.-" 5/1
`--._ `-._ `-. `. `. \ `. ||| ,' / ,' ," ,-" _.-" _.--"
6/1.__ `--._ `-._ `-. `. \ / ," ,-" _.-" _.--" __.6/1
`--.__ `--._ `-._` _____ "_.-" _.--" __.--"
7/1 `--..__ `--.__ `--._ .-' `-. _.--" __.--" __..--" 7/1
--..__ `--..__ `--.__ ,' `. __.--" __..--" __..--
8/1 ``--..__ `--..__ / _ _ \ __..--" __..--'" 8/1
``--..__ ; (_) (_) : __..--'"
----------------------- | | ------------------------
..--''"" : | | ; ""``--..
8/1 ..--''"" .--''"" \ `.___.' / ""``--. ""``--.. 8/1
--''"" .--''"" .--'"" `. ,' ""`--. ""``--. ""``--
7/1 .--''"" .--'"" ,--' `-._____.-' CJ ``--. ""`--. ""``--. 7/1
.--'"" ,--'" _,-". . `-._ ``--. ""`--.
6/1'"" ,--'" _,-" .-' ,' / \ `. `-. `-._ ``--. ""`6/1
,--'" _,-" .-' ,' .' / .' ||| `. \ `. `. `-. `-._ ``--.
5/1" _,-" .-' ,' / / | ||| | \ \ `. `-. `-._ 5/1
,-" .-' ,' .' / .' .'|`. `. \ `. `. `-. `-.
4/1 .-' ,' / / | | | | | \ \ `. `-. 4/1
' ,' .' / .' | | | `. \ `. `. `
3/1 ,' / / | .' | `. | \ \ `. 3/1
' .' / .' | | | `. \ `. `
2/1 / / | | | | | \ \ 2/1
3/2 / .' .' | `. `. \ 3/2
1/1 | | | | | 1/1
1/2 | | | 1/2
1/3 | 1/3
.. he would have had a better understanding of asciilines and could have made a
much better algoritm.
From a different point of view his algorithm is the only edgetracing image to
ascii algorithm i have seen , and is a good showcase of this approach - it also
proves that it was right when I first suggested to Markus that a edgetracer
would be a good idea.
I would certainly like to see how this edgetracer handles the
testsuite/competition at :
http://www.jave.de/image2ascii/competition2001/contributions.html
( BTW .. we really should submit some more contributions - It would be nice to
compare more tools ..
This may seem pointless at the time because people all seem to know that JavE
does the best conversions ( http://www.jave.de/ ) but stick with it .. the point
was not just to find the best converter but also to learn from each and improve
the tools )
Hmmm .. I'm going to CC this to Jeremy Bonet - maybe he will try his algorithm
on the testsuite or even better explain the algorithm in details or even show
some sourcecode
Check out rest of Jeremy's site btw .. in particular the Imagemosaics and the
stuff about texture synthesis was very interesting to me.
Hey Jeremy ! How about releasing some working tools for the public to download
and use ? Let the world gain from your research :)
Kind Regards
CeeJay
CeeJay wrote:
[...]
> Now that we are in too good geeky links that have something to do with
> ascii-art, check this page :
>
> http://www.ai.mit.edu/~jsd/Projects/ImagesToText/
> From a different point of view his algorithm is the only edgetracing image to
> ascii algorithm i have seen , and is a good showcase of this approach - it also
> proves that it was right when I first suggested to Markus that a edgetracer
> would be a good idea.
[...]
> Hmmm .. I'm going to CC this to Jeremy Bonet - maybe he will try his algorithm
> on the testsuite or even better explain the algorithm in details or even show
> some sourcecode
I agree: the edge traced images are cool. Also the algorithm is quite
simple:
FOR ALL PIXELS x,y IN THE IMAGE DO:
IF ISSET(x,y)
IF NOTSET(x-1,y) AND NOTSET(x,y-1) PRINT /
ELSEIF NOTSET(x+1,y) AND NOTSET(x,y-1) PRINT \
ELSEIF NOTSET(x-1,y) AND NOTSET(x,y+1) PRINT \
ELSEIF NOTSET(x+1,y) AND NOTSET(x,y+1) PRINT /
ELSEIF NOTSET(x,y+1) PRINT _
ELSEIF NOTSET(x-1,y) OR NOTSET(x+1,y) PRINT |
END
ELSEIF ISSET(x,y+1) AND ISSET(x-1,y+1) AND ISSET(x+1,y+1) PRINT _
END
END
The results are somewhat funny:
_________
_________ _/ \_
_/ \_/__/ __\
/________ / \
/ | |
__/ _ \
/ / \ _ \
_/ _ / | | \_ |
/ __/ | | \ | \_/
|__/ / / \__ |
\ | | \_/
/ |
| /
/ |
/ /
| |
| |
| |
| |
| |
| |
/ |
| |_
/______\
______/ \______
__/ \___
__/ \_
_/ \_
/ \_
/ _______________ \
/ _/ \_ \
/ / \ \
/ / \ \
/ | | \
/ | \_ \
_/ / \__ \
/ | | |__/\
| | _| \
/ | ____ _/\_________/ |
| \_/ \ / _ |
/ _ ___ \ / _/ \_ _____ |
| / \ | / | | \___/ | |
_| | \/ \_/ | |
/ | / |
| \ / |
| | _/ |
| \ ____ / |
| | / \ / |
| \ /_ |___ / |
| | | \ | |
| \ / / _| |
| \_ \_____/ _/ |
| \_ /__/ |
| \_ __| |
| \_____/ |
\ |
| |
/ __ |
| | \_ |
| | \__ ____ |
| \ \______/ \ |
| ___/ \_ |
| _/ \ |
| ___/ | |
| / / |
| / | |
| / | |
| | / |
\__________/ \_______________/
/ \_ ________ _/ \
\_ \__ / ______\ __/ _/
\_ \ \_/ / _/
\_ \_ _/ _/
\_ \ / _/
\_/ ________ \_/
_ /______ \ _
/ \ ______| \ / \
| | _/ | | /
| | / _______ | ||
| / / |_______| | ||
\/ \ | \/
___ \__________/ __
_/ _\ / \__
/ _/ \_ \
_/ / ________ \_ \_
_/ _/ /________\ \_ \_
/ _/ \_ \
\_/ \_/
/_ __ _________________ _____ __ _ _ __ __________________ _\
| \ |/ _ _______ || | || |/ \| |/ \ |
|\ |_/ \_/ _ \ || \\_|| | | | /|
| \__________/ \/ \/ / \__/ \\ // \\ / /\_/ |
| ____________ _ _______ /__ / |
| / \ / \__ / \_ \ |
| \____ ____/ \_ \___ /___ \ |
| / | | \___ \__ | __ \ / |
| /_\ | | _______| \___ / | \ | \ |
| | | / \___| / | |_ |
| | | \______ _ |__/_| \ / |
| / | | _| ___/ \ \ /_\ |
| \ | | __/ ___/ | _________ | |
| ____| |____ / __/ _/ / _| \_ |
| / \ /___/ / |_/\ / \ |
| _/ / ___________/ /________\ /________\ |
| / | \/ |
| \_\ /\ _______ ____ /\ /\ / / |
|\ | / _ \ /\ /\ / /\ /\ / _ _\ || | /\ / | /|
|_/_________|\__|_| |_||__|\_|\_||_||_||_|_|____||_|\__/__|\_/_|
\_________________________________________________________________/
But this is no good point for starting a _real_ edge detection
algorithm. Anyway, may investigations on that topic show that chances
are very low for edge detection being the key to better image2ascii
algorithms.
Look at this example:
______________
__/ _ \__
__/ / | _ \__
_/ |_/ |_|___ \
/ _ _/ \__ \_
/ / | | _| \
/ |_/ |______/ \
/ \_
/ ________________ \
| _/ \__ |
|_ | \ |
\ | \ | \
/ | | |
| |__ |___ |
| \___ ________ | |/
\ \ / \ \ \
\ __ | \___ _/
\ ______/ || \__/
\_ | ||
| \ / |
\ \ / |
| \____| \__/ /\
\ ____/ ___//
| |______ /___/
/ \
/ ___/
_/ __/ _/\
_/ |_______/ |____
__/ \_____
__/ \______
__/ \__
__/ \
__/ |
__/ |
/ |
/ |
| |
\___________________________________________________________________/
Even if it was rendered with a more detailed line style - there is no
way to mix the result with greyscale Ascii-Art:
.... ..
....zzz=73v0czxx..
..`Jzxx==:`.z?=....`::,.
.......cv0Or`...JnZ:`...a=::..
.`:=,?v4Gsz:``aJxav..a`````.zvz=.
`.,..,:zvv=``.?#XQAx=` ````:=..
``,usaJv0=,`.`v0v4QQ+` .......czxx=`
.....a=vOUXna.`...v`4SSxuwZc:..`==vvv==,
``.a:aowwxOxsxvv0U0:`vO000V000vv:`:vO00On:`.
`|:v4X###UU0=:``` `````:.zvueQdQ:``
J`JOZQQ6v:``..`` ``JdXXSn..
`.,?4QXn=,,`....` ..zv4Zk``
..:cZ#Oxz:,..`````` .Jv``vx`
.?wd#X=cc;,```` `z:`.c:
``3Qmvz=c...;..... ..... `,`` :``
.s:4X=?z:aaaaaeQQx...` ..uggaJ....:. ```
4#wv::?4dMKWB!?99O:` `7V3MZV#T%``` `
?Sc,````790=;``.``` ```=^` `
7|``..`` `.``
.:,...` ..... .
`Jz:...` .J:`` .`
`zoz,.....Jsau..... ` ..
`zz4xc....`3@WWP"' ....`` `
.:zZZxzx.,`.```` ..````
upz4ZQ,?3MMMMMM#T"0: `..`
.MMMQQQZoc:3H#ggay=: .`
.JMMMMMMmQnz=::::``` .r
.`JMMMMMMMMMmQy:.. ..gMp
..JMMMMMMMMMMMMMMMmQaaaagMMMMBBma..
.JgMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBBmQ...
..gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmmgJ...
.JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBQ
..gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
..gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
Result: _...._..______
_./..zzz=_3v0czxx\._
_./`Jzxx==:/.|?=....`::\._
../....cv0Or`|./JnZ|i|.._=::.\
./:=,?v4Gsz:i`aJxav.._/```\._vz\.
/.,..,:zvv=/`|?#XQAx|` `i|`:=\.
/`,usaJv0=,|./v0v4QQ+|__..../..czxx\`
../..a=vOUXna.`...v`4SSxuwZc:..`==vvv==\_
``/a:aowwxOxsxvv0__:i___________:`:vO00On:\.
||:v4X###UU0=:/`` `````\._vueQdQ|``
|iJOZQQ6v:``|.`` `\JdXXS|..
\.|?4QXn=,,`.\..` .|zv4Zk\`
./:cZ#Oxz:,..|````` .|v``v|`
|?wd#X=cc;,`|ii `|:i.c|
|`3Qmvz=c...;..\.._ ___..... `|`` |/`
\s:4X=?z:aaaaaeQQx.\.` /.uggaJ..\.\. \``
\#wv::?4dMKWB!?__O|` \___MZV#_/``` `
\Sc,```i_____/`.||` `\i_/` `
\|``.|`` `||`
|:,.\.` ./.|. .
\Jz:.\.` /J:|` .`
|zoz,\....|sau\../. ` /\
\zz4xc....`3@__8i/ ...//` `
.|zZZxzx.,`.|iii___ /.ii/`
/pz4ZQ,?3MMMMMM#T"0\ `..`
/MMMQQQZoc:3H#gg___/ .`
./MMMMMMmQnz=::::/`` _/\
./JMMMMMMMMMmQy:|._____./gM|____
_./JMMMMMMMMMMMMMMMmQaaaagMMMMBBma.\_____
__/JgMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBBmQ..\______
__/.gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmmgJ.\._
__/JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMB\
_./gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM|
_./gMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM|
Looks strange, doesn't it? :-)
Ideas, comments, diddles?
Markus
PS: The edge tracing algorithm will be part of the next release of JavE.
--
\-/ http://www.jave.de O_< Get JavE now! \-/
J|a|v|E /| J|a|v|E
/-\ Ascii-Art for eyeryone / \ - for free! /-\
Mh - but but but - I feel that the edge detect with a proper line algorithm
would be quite nice for someone working in the `watermark' mode. I only tried
once to use a greyscale-converted picture as a basis for a line picture and the
work as well as the result were not promising (to say the least). A nice
edge detect would make the copying from a bitmap image somewhat easier.
And, apart from that, I don't think the examples you posted are `bad'
images. They are good starting points I think.
[...]
> PS: The edge tracing algorithm will be part of the next release of JavE.
Surprise! ;)
No, really, I like that!
:)
Andreas
--
________________________________________________ http://www.ascii-art.de
Ok, you are right about the watermark thing.
Initially I meant that the algorithm itself is no good point to start
from for writing a better algorithm. However, I have tried to optimize
the output from the algorithm:
_________
,--'______ ,-' `.
,' `-. / \
/___ \_| ___\
/' `-.__ |
__| \
/ _ |
,' | \ _ \
/ _ / | | `. |
/ ,-' | / \_ | `-./
\ ,-' / | `. |
\ | / `-./
/ |
/ /
| |
/ |
| /
| |
| |
/ |
| |
| |
| |
| |
/ |_ ______________
/_______\ ,'::::::_:::::::`-.
,--'::::::,' |:::__::::`-.
,':::::::::|___|::|_ `-._:::`.
/::::::::::_:::::::::\ `.:::\
/:::::::::,' |:::::::/ |:::`.
/:::::::::|__/:::::::|__,,--''::::::\
/::::::::::::::::::::::::::::::::::::|_
/::::::::::::::________________:::::::::\
|::::::::::::,' `-.::::::|
|:::::::::::| \::::::\
\:::::::::::| |:::::|
|:::::::::::\ |::_::|
/::::::::::::| |_| |:|
|::::::::::::`-._ ____ | \ \:/
|::::::::::::::::`. /::::`._ \\ \
\::::::::::::::_:::\ /__:::::_\ \
\:::::::,,--'' `-.| `-._/
`.::::| |
\:::| /|
|:::\ /:|
\::::`. /::|___
|:::::`-._|:::::_\ /\
|::::::::::::::|___ O
|::::::::::::::::::\ O
/::::::::::::::::::/
/:::::::::::::,,--'' /
,':::::::::::::| ,-'|_
,'::::::::::::::::`-.,--':::::`-.__
,-':::::::::::::::::::::::::::::::::::`-.___
,-'::::::::::::::::::::::::::::::::::::::::::::`-._____
,--':::::::::::::::::::::::::::::::::::::::::::::::::::::::\
,-'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\
,-':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
,'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
``--..___________________________________________________________,,--''
___________________________________________________________________
/_::_::_________________________:______:__:__::___________________:_\
|_|/ |/ ____ | \ | |/ \ |
|,' | /::_:\ /\ /\ / |\ /\ / | | /|
| \\ \_/ \/ \/ \/ // /_/ \/ \\ \ \\ _/__ |
| ___________ /____\ |
| /:::::::::::\ ___ /\_/`-./\ |
| ``--.:::,--'' /_::\__ /___::::_:`. |
| _ |:| \___:`--. |::/ \::\ |
| /_\ |:| `.:::`-. |:/ \::\ /\ |
| |:| ________|:::::`. || || |
| |:| /::::::::::::::::\ ,'::\ |:`. _ |
| |:| ``--.._:::::::,--' /:::|__/\_|:::\ /_\ |
| /\ |:| __|::,--' |::_________:::\ |
| |:| __/::__/ |:| \:| |
| ____|:|____ /:___/ /,'::/ |:\_/ |
| /:::::::::::\ \/ |:::|_/\ /\_|::::\ |
| _/__|______,,--'' /______/ O \__,,--'' |
| /_::,' _ |
| \/ /_\ __ __ / / / __ /\ /\ /\ / |
|\ \ O O /::\ /__\ \ | \ / O /__\ | O \ \ O | /|
|_/__________/_____|:::`.__|__/__|___/,'|_,'___|_____|_____,'__|_,'_|
\___________________________________________________________________/
But that is already the limit of what you can do with it. For a _real_
edge detection algorithm it takes a lot more... Well maybe... - we will
see :-)
> [...]
> > PS: The edge tracing algorithm will be part of the next release of JavE.
>
> Surprise! ;)
> No, really, I like that!
I am beginning to like it too :-)
Markus
That's even cooler than those lego pornos people do! Have you shown
any Calista Flockhart fan clubs yet?
--
| _ .\ ~~ _ ^~
| <')_,/ , ; .\ >(')__, . ` ' ,
| (_~=/ \._`.'. .\ (_~_/ _, _..-''-._,____,----,____
| ='- \=~_) ; .\ ~^~~^~ ` (_~_/ `'--'` `~~~~)_)=\_\-.(
| -'= .\ ~^~ ~^~~^~
ICQ:11367619 EMAIL:bateau:-)jupiter-io.net WEB:http://tyrian2000.cjb.net