Handschrifterkennung



  • Hallo!

    Ich möchte einen Handschrifterkenner für Einzelbuchstaben bauen.
    Könnte aber mit Sicherheit noch einige Leute vertragen die was beisteuern.

    Ich hab mal ne Liste gemacht mit Ideen, die noch ausprobiert werden sollten:

    - Auflösung der Buchstaben auf 32x32 oder 64x64 statt nur 16x16
    - Ein Lernskript schreiben, das die Trefferquote mitloggt, sodaß wir an verschiedenen Werten rumspielen können (Idee: volkard)
    - Die Buchstaben sind derzeit in einem extrem sparenden Speicherformat abgelegt: 1 Byte pro Pixel (es gibt nur schwarz/weiß), das könnte man verbessern (Idee: Korbinian)
    - Die Zerlegung in wichtige Komponenten müßte optimiert werden (Idee: volkard, ich)
    Dazu hab ich auch schon ne Idee, die ich in den nächsten Tagen ausprobieren werde.
    - mehr Klassifikatoren: z.B. Bayes
    - Samples ab bestimmter Menge nicht mehr neu zerlegen sondern nur noch klassifizieren, vielleicht genügt das und man muß weiter garnichts beschleunigen, kommt auf nen Test an.

    Gesucht sind Leute, die noch Ideen haben das ganze zu verbessern, was davon implementieren wollen oder zum Beispiel nen TabletPC haben um damit gut zu Testen oder Handschriftsamples zu bauen. 😉

    So, hier bleibt jetzt noch ein bißchen Platz zum Unken:
    "das schaffst Du nie"
    "sowas klappt eh nicht"
    :p

    Die Sourcen werde ich dann jedenfalls in den nächsten Tagen online stellen.
    Zum Schutz einiger Autoren werde ich den Code aber noch überarbeiten. 😃

    MfG Jester



  • hehe fu, ich wollt schon fast einen thread hier starten 🙂
    also ich bin dabei. werde in den naechsten wochen ein paar klassifikatoren entwerfen, sowie das "platzsparende" speichern (das kriegste demnaechst).
    hab mir auch schon gedanken gemacht, wie man ganze wörter erkennen könnte. aber da werd ich sicher was in meinem seminar drüber hören!

    @Jester: vielleicht sollte du sagen, dass es schon einen funktionierenden prototyp gibt, der vielversprechende hoffnungen macht 😉 wir sollten uns zudem vielleicht ein cvs dings überlegen.

    @marcus (falls er reinschaut 😉
    du könntest auf den neuen server ein cvs einbauen. das können wir dann sowohl für die forum-sourcen als auch für den c++.de schrifterkenner hernehmen!



  • hört sich interessant an... würd gerne mitmachen

    ach so ich beherrsche (so man es denn beherrschen nenn kann 😉 ) nur c/c++ an anderen programmiersprachen hab ich mich noch nicht versucht



  • Also ich bin dann wohl der Tester und Samplebauer 😉



  • ich hab hier zwei leute rumlungern die tablets haben...ich kann dir ja mal fragen ob die die mir ab und zu mal ausleien können (tester).
    mfg



  • Schön!

    Ich hab mir gestern mal Gedanken gemacht, wie man das Trennen der Samples beschleunigen kann, das werde ich mal testen.

    Ja, wie Korbinian sagte gibt es bereits ein funktionierendes Framework. Das ganze ist in C++ geschrieben und größtenteils portabel, die Oberfläche ist derzeit mit MFC gemacht.
    Aber das alles kann man sich in den nächsten Tagen dann runterladen.

    MfG Jester



  • Wäre nett, wenn du an die Infos bezüglich Hugh denken könntest.



  • Hab ich schon gescannt, liegt aber noch auf dem Rechner meines Mitbewohners. Werd ich Dir wohl morgen dann zumailen.
    Ist halt etwas umfangreicher(2-3MB), aber ich hoffe das macht nichts.

    MfG Jester



  • Achja, noch ein Feature, das wir einbauen sollten:

    -Buchstaben vor dem erkennen zentrieren(Idee: volkard, ich):

    Alle Pixel durchschauen und den mit größtem/kleinstem x/y-Wert finden. Von diesen 4 Punkten den Durchschnitt bilden und dann das Bild so verschieben, daß dieser Punkt in der Mitte liegt. Dann ist der Buchstabe in der Mitte und wir sind ein Problem los.

    MfG Jester



  • btw. Mein bescheidener Wunsch:
    (bitte mach das System Plattform unabhängig und integrierbar (als Library). Könnte sowas gut für GOTT (GUI On Transparent Technology - Widget System) gebrauchen)



  • Die Lib an sich ist vollständig in Standard C++ geschrieben. Nur die Ein/Ausgabe ist mit MFC gemacht. Bis vor dem Forum-Treffen lief alles in der Konsole. Sollte also kein Problem sein.

    MfG Jester



  • Jester schrieb:

    Hab ich schon gescannt, liegt aber noch auf dem Rechner meines Mitbewohners. Werd ich Dir wohl morgen dann zumailen.
    Ist halt etwas umfangreicher(2-3MB), aber ich hoffe das macht nichts.

    MfG Jester

    Danke schön. Lads einfach auf den c++.de-ftp hoch, dann haben wir keine probleme bezüglich Größe.



  • Ich hoffe ich kann das auch ohne Probleme in C# benutzten 🙂 Weil das würde mich auch mal interessieren.



  • Danke schön. Lads einfach auf den c++.de-ftp hoch, dann haben wir keine probleme bezüglich Größe.

    mach doch lieber ein SourceForge Projekt daraus, dann kannst du auch gleich CVS und andere Features (wie Webspace) benutzen.

    Nur die Ein/Ausgabe ist mit MFC gemacht.

    solange man keine MFC Sachen benutzen muss und die weglassen kann (btw. warum nicht lieber was Platformunabhängiges), ist das egal.



  • kingruedi schrieb:

    Danke schön. Lads einfach auf den c++.de-ftp hoch, dann haben wir keine probleme bezüglich Größe.

    mach doch lieber ein SourceForge Projekt daraus, dann kannst du auch gleich CVS und andere Features (wie Webspace) benutzen.

    Das war auf die Sachen bezüglich Hugh bezogen ...

    kingruedi schrieb:

    Nur die Ein/Ausgabe ist mit MFC gemacht.

    solange man keine MFC Sachen benutzen muss und die weglassen kann (btw. warum nicht lieber was Platformunabhängiges), ist das egal.

    Hä? Nur die Oberfläche ist MFC, hat Jester doch geschrieben ...



  • @deus
    kingruedi würde gern z.b. sowas wie wxwindows dafür sehn, damit er das ganze projekt bei sich laufen lassen kann, hab ich recht?
    @king: wär vielleicht gleich was für dich, mit einzusteigen, falls du zeit und lust hast 😉

    @jester:
    zur zentrierung und rotation: das macht grad ne kollegin von mir. man kann solche sachen immer als drehung und verschiebung ansehen, und das kannst du mit einer matrix erreichen. vielleicht noch eine kleine idee dazu: man könnte einfach (nachdems nur wenig zeichen sind) das zu klassifizierende zentrieren, dann von einem guten sample "abziehen" und dann entsprechend die klasse, die den kleinsten betrag (vom vektor) hat, als referenz zum drehen hernehmen.



  • Korbinian schrieb:

    zur zentrierung und rotation: das macht grad ne kollegin von mir. man kann solche sachen immer als drehung und verschiebung ansehen, und das kannst du mit einer matrix erreichen.

    rotationen um 90, 180 oder 270 grad sind vermutlich nicht extrem sinnvoll. kleinere so um 20 grad kriegste nur mit so fetten verlusten hin, daß es unfug wäre. daher dachten wir nicht an rotationen.
    wegen der verluste sollten die verschiebungen auch nur um ganze pixelgrößen sein.

    vielleicht noch eine kleine idee dazu: man könnte einfach (nachdems nur wenig zeichen sind) das zu klassifizierende zentrieren, dann von einem guten sample "abziehen" und dann entsprechend die klasse, die den kleinsten betrag (vom vektor) hat, als referenz zum drehen hernehmen.

    aber wie danach drehen?



  • das drehen geht über matrizen, wie schon gesagt. wenn man 3 punkte im orginal und dem zu drehenden hat, dann geht das. wenn du willst frag ich meine arbeitsplatz nachbarin, wenn ich sie sehe



  • was nehmt ihr als Klassifkator?

    bye

    tt



  • Jester schrieb:

    kingruedi würde gern z.b. sowas wie wxwindows dafür sehn, damit er das ganze projekt bei sich laufen lassen kann, hab ich recht?

    jo, wär ein bisschen Schade, wenn das Projekt eh Plattformunabhängig ist, dass es dann an der GUI scheitert 🙂

    @king: wär vielleicht gleich was für dich, mit einzusteigen, falls du zeit und lust hast 😉

    hab leider gerade mehrere Projekte, an denen ich mitwirke. Hautprächlich das Widget System GOTT, dass noch einiges an Arbeit brauch.



  • Zum Thema Rotation fällt mir nur Stichwort FFT ein. Hab leider keine Ahnung, wie man im FFT - Raum eine Mustererkennung durchführt. Ich weiß nur, das es im FFT - Raum egal ist, wo und wie sich dort ein Objekt befindet -> hauptsache die auftretetenden Frequenzen sind signifikant genug.


Anmelden zum Antworten