X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: f7c81,6c10c22f292214df X-Google-Attributes: gidf7c81,public X-Google-ArrivalTime: 2001-11-03 07:53:57 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!wuff.zikzak.de!akk.uni-karlsruhe.de!rz.uni-karlsruhe.de!news.rz.uni-karlsruhe.de!not-for-mail From: Markus Gebhard Newsgroups: de.alt.rec.ascii-art Subject: Re: Outer Space Date: Sat, 03 Nov 2001 16:54:59 +0100 Organization: University of Karlsruhe, Germany Lines: 148 Message-ID: <3BE41353.55A5112B@rz.uni-karlsruhe.de> References: <3BE16971.D9FB67E1@rz.uni-karlsruhe.de> <9s11n7$ba1$1@piggy.rz.tu-ilmenau.de> NNTP-Posting-Host: wn4-jarjar.wn4.uni-karlsruhe.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: news.rz.uni-karlsruhe.de 1004802836 1312 172.20.12.141 X-Complaints-To: usenet@rz.uni-karlsruhe.de X-Mailer: Mozilla 4.78 [en] (Win98; U) X-Accept-Language: en Xref: archiver1.google.com de.alt.rec.ascii-art:2471 Hallo Flo, > wo du's grad von gradienten hast, ich hab mir ein kleines php-script > geschrieben, das fotos online nach ascii konvertiert. nur ganz zufrieden bin > ich mit dem ergebnis noch nicht. hier z.b.: > > http://matrix.fem.tu-ilmenau.de/~derflo/private/lo-fi/ascii.php?file=../pix/ > unlearn_ef/unlearn_ef-16.JPG&resize=150 > > [...] > > hast du nen tipp fuer mich? Bezueglich des Gradienten oder des Algorithmus? Nachdem ich gerade in Schreibelaune bin und das Ergebnis vielleicht in die Dokumentation von JavE aufnehmen kann, antworte ich mal etwas ausfuehrlicher: Du verwendest einen klassischen 1er-Algo (wenn ich den mal nach meiner Nomenklatur mal eben so benennen darf), bei dem jedes Ascii-Zeichen aus einem (Grauwert-)Pixel erzeugt wird. Solche Algos sind ideal, wenn man grosse Ascii-Ergebnisse erzeugen will, die man dann moeglichst ausdruckt und an die Wand haengt. Je nach Zeichensatz muss man sich halt einen schoenen Gradienten waehlen. Fuer Courier New verwende ich "MWNHKQDXS65YJtjci=+>!;:~'. ". Dadurch hat man viele Graustufen und wenn man sich das Bild von Weitem aus ansieht, sieht es recht gut aus. Aus der Naehe betrachtet haben viele der Buchstaben zu deutliche Linien, die das Auge "verschaerft" und das stoert bei der Betrachtung gewaltig. Deshalb kann man da dann nur Gradienten verwenden wie "@8Oo:. " oder eben "#+:. " oder aehnliches, da dort die Linien weniger stark stoeren (schoen rotations-symmetrisch). Hier ein paar kleine Beispiele: Gradient: "#+: " #########+#+:::: :: ::::::: :+####:+#### #########++::::: :::::::: :+####::#### ########+:: : :::+:+++++:::: :::++####+:+### ######++:: :::++++##+##+++:::: ::+#########+:+### #####+::: +#######+::##+++::: :###+:########:+### ####+::: :++++#++++: :++++::: :++++::+#######:++## ###+:: :+++:::::::+:::::::+:+:: :::+++++######::+## #++: ++++::::::::::::::::::++: ::::++++#####::+## ++: +##+++::::::: ::::::::::: :::::+++#####+:+## +: :####+++::::::::: ::::::::++:: :::::++######+::## : +#####+++::::::::::::::::::++:: :::::++#######::## :+######++++:::::::::::::++::::+: ::::++########::+# ######++++++::::::::::::::+++++++: :::::+#########+::# ######++++++:::::::::::::::::::: ::::+###########:+# Gradient: "@8Oo:. " (mein persoenlicher Lieblingsgradient) @@@8@@88@O8Oo::...::..::::::..... :O@@@8:o@@@@ @@@@8@88@OOo::::...:::::::....... . :O8@@8o:8@@@ @@@888@@oo:...:..::ooooOOOo::...........:oO88@@@O:8@8@ @@@@@@Oo:......oO88888O88OoOo:::.. ..oO888888@@@8:O@8@ 8@@@@Oo... .o8@@8@@@8.o88Oooo::. o8@@8o8@@@@@@8:O88@ @@@8Oo:.. .ooooO8OOOO: .:oooooo: :OOOOo:O@@@@@8@:o88@ @@8o:....oOooo::ooooooo:::ooooo: .::oooO888@@@8@::88@ @Oo:...OOOooo:::::::::::::ooooo:. .::ooooO8@@@8@o:88@ Oo:..o@8Ooooo:::........::::oooo. .:::oooo8@@@8@o:O@@ o: .8@@8Ooooo:::::.....:::oooooo: .:::oooO8@@@8@O::@@ : o@@888Oooooo:::::::::::ooooooo:. .:::oooO@@@88@8::8@ :O@@@888Ooooooo::::::::::ooooooo:. :::ooO@@@@88@@::O@ @@@@@8O8Ooooooo::::::::::oooOOOOo:.:::ooO@@@@888@@o:o@ @@@@@8OOOoooooooo::::::::::oo:.:...::ooO@@@@@888@@8:o8 Gradient: "MWNHKQDXS65YJtjci=+>!;:~'. " NNNKNHKQN6K5tc>!;;+i!;++==+>>!;:~~~'''...~cSNMWD+JNNNN MNNNKHKKMXYc+>++;;;>ici=++>!!!!;:~~~~''..'>5KMMKtcKNHH WWHKQKNHJt+!;!=!:>ctttJ6S6Yi>!>!;::::~;>itYXKWMHS+XNKH NWWWNMXt=!!~:!>tSXDDQQXQD6YYti=+;:~:!j6DQKDQKNMND+5HKH QHNWW5j>!;~~!tDHNKHNHX>jQQ5JJjc+;''jKNHXjDWNNWWHK+5QKH NMMK5j+>:~!cYJJ5D656Y>~:=YJYJtj+~ =5Y55c+6NNNWWQH+JDDN MMDJc!!~>J5tjccccctJtjj=+=ttttt=~ ;=cjtJSDXQNWNQNiiDQN W6Ji;:!5X5Jjci=++>+++>>>+=jcjtti: ~!+icjJJ5XHWNKWc+DKN YJ+;:JNQ5JJtci=+>!!!!!!>+iicjttc! .!+=cjttJXNNHKWJ+YWW J>~!KNND5Jttjci==>!!!>>+=cjjjJtj+' !+=icjtYKWNHKM5=cNM >~JWMKKD6YJtjjci===++>++ijtttJJt=: :=icjtJSWWHKKMD=cDW >6MMMQDD6YJttjcciii==+=ictYjjjttc! ~cicjt6NWNHKKMNi=YW NWWWWQSX5YJttjjciiii====ijtt65YYt=;+icjt5NWWNKKKNMY=tN WNHNWD6S5JJttjjccccii====iicc=>=::!=icj5NWWNHDQKHWD=tD Wirkt etwas unscharf, nicht wahr? Fuer Bildschirmbetrachtung greife ich bei Fotos dann lieber zu 4er Algorithmen, welche aus vier Pixeln ein Ascii-Zeichen erzeugen. Dadurch bleibt ein Teil der Form auch in den Zeichen erhalten und das Bild wirkt schlagartig schaerfer: MBBMMBMMmyMWx0>:(((z:_(c{z=>::(__`..``` `3#MMBM:dMMBM MMBMEMBMMWQY=>={(((=(uozz>>(((((_......` `(dMMBBkJMMMB MMBMMMMM5Z%(:(z>`_aZ999QQQaa(((((_((_..__JgdMMMBm(dMMM MMMMMMWG0(>~((>(gQQggmgQQZU#noz>~``((agQgQQQ#MMBE(dMBB QMMMME2=((``((dMBMMMMBVTMBQwZ[x{~``(gMMM9MMMMMMBE>dMBM MMBMNf=>:`.(dX9@M#ZH@+..J#ZXZZ[{~ _X##H8(dMMMMMEB{d#MM MMMSf(>`.(ZUOO[[OUZZnxo{(z4ZZZO{. (vO4wwgHMMMBBBB|J#MM MMwY(:`_X#ZO[vz===vvv==>>zvO4ZZo~ `(=vvOZXX#MBBBB[(dMB W4Y(`(gB#ZZO[oz=::(((::(>zv[4ZZ[: ((zxOZZZdMBMMMk(dMB wC`((BBBXZZZO[vz>:((((((zzxxxwZO{. ({zv[OZQ#MMBMMP(3MB C`_aMEMBXZZZOxxozz>(((({zz4O4ZZO{_ ({zx[4ZdMBBBMMEcvMB _(MBMEMB#QZZOO[xzzzzz{=zz4QOOOZO[: .zzzxZQMMMBMMMm{vdM aMMMMEdMmQZZZO[xvvzzzzzzv4Z4gQQQn{__vvx44gMMMMMMMMku4M MBMMMEd#XQZZZOxx[xvzzzzzzvOOOO0Y=>(>zxxwdMMMMBMMMMm(wM Zu guter letzt wenden man noch einen kleinen Trick an und das Ergbenis sollte noch einen Tick besser sein: MBBMMBMMMQMKwC(>((([>(({zv=>::((_`..``` `3SMMBM>dMMMM MMBMEMBMMMQY====~((=(uoz=>>(((((_`__...` `(dMMBB]JMMMB MMEMMMMMKZ%(:(z=(((Z99X#QQe(((((~(((__..__g#MMMBm(dMMM MMMMBMBGC(>~((:(gQQQgmgQDX##nozc(`((((ZmQQQQ#MMBE(dMBB QMMMBWw%(:(`((dMBMBMMM9MMBQZZxxz~``(gMMM@MMMMMMBE{dMBM MMBMBZ=>>`.(dU#MM###MT`.J#XXQZ[{~`_#M#MK>dMMMMMEB{d#MM MMBKP(>~.(gZOO[[0UQwxua:>v4ZZZO{. (0O4sag#MMBMMBB|J#MM MMGZ:>~_g#ZO[vvzzvvvvv==zz4OOZZo~ `(zv4ZXXX#MBBBB[(dMB B4P:~.aB#XZO[vz=>:(:::>:>zv[OZZ[: .((zxOZZQdMBMMMk(dMB 4Y(((MBMXZZZx[zz>:(((((({zxxxZZO{. (=zzzOZQdMBBMMP(4MM X:._MEMBXQZZx[xzz{>((:({zxxO4ZZO{. (=zxx4ZdMBBBMMm(zMB :_MMMEMMXQZZO[[vvzzz{{={z4wZZZZOx: .zzvxZ4dMBBBMMmz[dM ugMMME#BmQZZZOxxvzzzzzzz[4XOwwzZO:._[x[4ZgMMMBMMMM|zdM BMMBBEd#SXZZZO[[[zxzzzzzvvOZUXZUUv((zxxZqMMMMBMMBMp(4M Aergerlich sind immer noch die vielen irrefuehrenden Linienstrukturen, ich werd bei Gelegenheit mal noch ein paar weitere Zeichen ausschliessen: _()[] sind besonders extrem. Aber jedes Zeichen weniger bedeutet auch weniger Moeglichkeiten... Fuer normale Fotos sind das die besten mir bekannten Algorithmen-typen. Zusammen mit ein paar anderen (eher experimentellen) sind sie in JavE zu finden: http://www.jave.de Wenn man dann noch ein wenig mit Knotrast, Schaerfe und den anderen Einstellungen spielt, kann man sicher noch bessere Ergebnisse erzielen als oben. Dumm ist halt auch, dass das Ergebnis vom verwendeten Zeichensatz abhaengig ist. Noch Fragen, Ideen, Gradienten, Anmerkungen? Gruss, Markus PS: Ja, Kantendetektion habe ich schon probiert, aber ohne Erfolg :( -- \-/ http://www.jave.de O_< Get JavE now! \-/ J|a|v|E /| J|a|v|E /-\ Ascii-Art for eyeryone / \ - for free! /-\