![]() |
Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitsprob.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
ich möchte die Zahlen aus den unten angehägten Bildern eindeutig bestimmen. Als Idee habe ich mir gedacht...zähl doch einfach die schwarzen Pixel. Gemacht getan und funktioniert...aber eben nur fast. Leider haben die Zahlen 5 und 6 genau die gleiche Anzahl von Pixel. Außerdem hat leider nicht jede Zahl 6 die gleiche schwarze Pixelanzahl. Die eine 6 hat zB 51 Pixel und die 2te 6 57 Pixel. 57 Pixel hat aber auch schon die 8 wodurch die 6 als 8 erkannt werden würde. Was kann ich da tun? MFG Matobe Im Anhang ist mein Testprogramm und die Bilder. |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
Ist vielleicht ein wenig zuviel des Guten, aber wenn es um Zahlenerkennung allgemein geht, hilft dir vielleicht diese Seite was:
![]() Wenn es jetzt nicht allzu viele unterschiedliche Varianten gibt, könntest du ja erstmal probieren, das vorhandene Bild mit einem Referenz-Bild zu vergleichen. Ein einfacher Verusch wäre z.B.: Du rechnest das Bild erstmal in Schwarz weiss (nicht graustufen!) um und vergleichst dann jeden Pixel mit jedem Pixel deiner Referenz-Zahlen-Bilder. (diese sind natürlich auch schwarz-weiss) Das Bild, dass die meisten "Pro Pixel"-Übereinstimmungen hat, müsste die gesuchte Zahl sein. Als zweiten Versuchs-Schritt würde ich die Referenz-Bilder als auch das zu untersuchende Bild erstmal im Programm "freistellen", also alle Randpixel beschneiden, so dass nur noch die Form übrigbleibt. Somit kannst du schonmal nur verschobene Zahlen erkennen. Taste dich dazu einfach von allen vier Seiten an die Zahl heran. Wenn ein Pixel ungleich weiss (oder schwarz ist, je nachdem wie du s/w umrechnest), merk dir den Beschneidungswert und beschneide dann das bild dementsprechend von allen vier Seiten. Dann untersuch die Pixel-Übereinstimmungen wie in Schritt 1. |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
hab das bild / die bilder in schwarz weiß umgerechnet. Totz ausprobieren von verschiedenen Toleranzwerten gibt es immer noch ein zu unklares Ergebnis, so dass zum Teil Ziffern falsch oder garnicht erkannt werden.
Hat jemand ne Idee? |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
Ich gehe jetzt einer anderen Idee nach... allerdings stehe ich gerade voll auf dem Schlauch.
Kann mir einer sage warum bei dieser Prozedure sich das Programm aufhängt ?? Verhalten wie bei eine Endlosschleife aber ich seh keine ?!?
Delphi-Quellcode:
PS: Hab extra ein Bild mit wenig Pixel genommen als Test.
procedure TfrmMain.btnCodeClick(Sender: TObject);
var ID : string; x, y : integer; begin ID := ''; for x := 0 to Image.Width - 1 do begin for y := 0 to Image.Height - 1 do begin if Image.Canvas.Pixels[x,y] = clBlack then begin ID := ID + 'B'; end else begin ID := ID + 'W'; end; end; end; edtCode.Text := ID; end; |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
Über wie viele Pixel reden wir, wenn es um "wenig" geht? (Ist ja alles relativ :).) Canvas.Pixels[] ist an sich schon nicht der Turbomode unter den Möglichkeiten an Farben zu kommen, und auch das sukzessive zusammenbauen eines Strings auf diese Weise ist sehr fragwürdig. Beides sollte hier bis ein paar zig hundert Pixel zwar noch im Sekunden-Bereich erledigt sein, aber die Pixelanzahl kann ganz flott sehr üppig sein, und dann kann ich mir schon vorstellen, dass das einige Zeit brauchen kann.
Wenn wir hier über Thumbnailgrößen von ~80x80 reden (immerhin schon 6400 Pixel!), sollte das auf einem PC >486er aber schon in <1min durch sein. Wie ist's denn mit wirklich mickrigen Bitmaps? So 16x16 Pixel? Oder auch mal 8x8? |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
das Testbild hat 7x5 pixel ;D
|
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
![]() Ist zwar nicht mehr so auf dem neuesten Stand was den Code angeht aber ich denke für reine Zahlenerkennung ideal und auch einfacher als gleich ne Kohonen-Map zu nehmen. |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
Zitat:
|
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
ich habe genau den Code oben mal in mein anderes "Testprogramm" integiert, da funktioniert er...
Hab aber jetzt ein neues Problem. Nach schwarzen Pixeln zu suchen ist ja einfach => clBlack... Aber wie bekomm ich den exakten Farbwert von dem Gelb der Bilder? clYellow funktioniert nicht und den Farbwert den ich per Gimp herausgefunden habe (Farbwert = fac953) funkioniert auch nicht wenn ich einfach
Delphi-Quellcode:
schreibe.
$fac953
Image.Canvas.Pixels[m,n] = $fac953 |
Re: Zahlen in Bild erkennen mit Pixelsearch - Genauigkeitspr
Unter anderem aus solchen Gründen wandelt man Bilder für sowas ganz gern in s/w um ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz