Re: Denkhilfe Fonts/MySQL

Joerg Rossdeutscher <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <1104008636.3692.14.camel@ratti>
Hallo

Am Samstag, den 25.12.2004, 20:41 +0100 schrieb Kai Hauser:
> Hi Joerg.
> rechen mal aus:
> 100^64
> das ist die Anzahl der Unterschiede die du Speichern möchtest.

Ne, möchte ich eben nicht. Es gibt ja nur einen Fingerprint pro Font -
also bei 400.000 Fonts ebensoviele Fingerprints.

Nötig wäre eben "nur" eine Funktion in MySQL, der ich den gesuchten
Fingerprint übergeben würde, z.B. "10-20-30-40-50", und die mir die
"ähnlichsten" Fingerprints zurückgibt - eben sortiert nach Ähnlichkeit.

Ich hatte schon vermutet, daß es diese Funktion nicht gibt. Schade.

> Ist das wirklich nötig um die Fonts vergleichen zu können?
> Vielleicht solltest du den Fingerprint erst mal überarbeiten.

Naja, das Aussehen eines Fonts kann man eben nicht in einer einfach Zahl
speichern.

Der Fingerprint kommt so zustande: 

Ich erstelle ein leeres Bild. 
Darin wird der Buchstabe mit 128 Pixeln Größe geschrieben. 
Dann wird der weiße Rand abgeschnitten.

(Damit ist sichergestellt, daß der Buchstabe komplett drauf ist und
genau bis an den Rand geht)

Das Bild wird jetzt unproportional gezerrt, bis es genau 128x128 Pixel
groß ist.

Dann wird es in 8x8 kleine Bilder zerlegt - macht 64 Bilder. 

Für jedes dieser Bilder wird ermittelt, wieviele Pixel weiss sind, und
wie viele Schwarz, umgerechnet in Prozent. (Naja. Fast. Um der
Zweistelligkeit willen rechne ich mit 99 statt 100 als Maximum)

Die 64 Werte ergeben dann den Fingerprint: 00 für weiss, 99 für Schwarz,
50 für "halb".



Das mag sich umständlich lesen, da es aber auf Manipulationsmethoden in
ImageMagick zurückgeht, läuft es schneller als ein perl-Eigenbau.

Wenn ich zwei Bilder XOR überblende, finde ich ziemlich fix raus, wie
ähnlich sich die abgebildeten Buchstaben sind. Und da es auf sw-Bilder
optimiert ist, liefert es bessere Resultate als die
ImageMagick-Bildvergleichsfunktion.

Fast alles prima, also.

Aber:
Wenn ich das jetzt so durchlaufen lasse, kann ich anhand eines
gescannten Bildes innerhalb einiger Stunden herausfinden, ob ich den
abgebildeten Font habe. Es werden einfach ALLE Fonts aus einer
vorsortierten Kategorie getestet, so ungefähr bis zu 80.000.

Wenn es mir gelänge, vorher Fingerprints zu checken, liesse sich das auf
ganz wenig Zeit reduzieren.




> Ob es eine "komische_formel" in mysql gibt bezweifele ich,
> --> http://dev.mysql.com/doc/mysql/de/Functions.html
> du wirst dir wohl deinen eigenen Vergleichsalgorithmus, passen zu dem 
> Fingerprint stricken müssen.

Da die Software herumpubliziert wird, ist das wohl zum scheitern
verurteilt. Zumal C++ sich konsequent dem gelerntwerden widersetzt, die
freche Sprache, die. ;)

Aber Danke!

Gruß, Ratti


-- 
 -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
 /\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBzdW7CGbv12v1ACwRAllmAJ9Htr/EcCe3HD+qjJRBFW1Z+JADjwCfUy4c
he1HzizH4+a/P+AMN4rlcqk=
=hRsQ
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.