Einzelnen Beitrag anzeigen

lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Rand in einem Bild erkennen

  Alt 20. Sep 2005, 18:42
Zitat von franktron:
ich häng morgen mal ein Screenshot an es ist eine Rechnung also eine A4 Seite aber der Scanner scannt etwas mehr
Hab letztens mal 'ne Zeilenerkennung fuer Dokumente programmiert, eigentlich ein aehnliches Problem und nicht besonders kompliziert zu loesen :

Bild z.B. zeilenweise von unten nach oben durchgehen. Dabei aus einer Zeile einen Pixel (nicht gerade vom Rand) als "Referenzpixel" nehmen und ueberpruefen, ob alle Pixel in einem bestimmten Bereich mehr oder weniger dem gleichen Farbwert entsprechen. Beispielsweise bei einem 640 Pixel breiten Bild die Pixel zwischen 100 und 500 darauf pruefen (gerade an den Raendern koennen schonmal groessere Farbunterschiede bei Scans auftauchen).
Beim Vergleich die Pixel in die einzelnen RGB-Werte zerlegen und einen gewissen Threshold tolerieren. Also z.B. die einzelnen RGB-Werte duerfen sich nicht mehr als 10 vom "Referenzpixel" unterscheiden (muss man dann ausprobieren, wie hoch dieser Threshold guenstig gewaehlt wird).
Ist der "Referenzpixel" *hust* "irgendwie grau" und die anderen Pixel weichen nicht viel davon ab, dann ist's 'ne graue Zeile und kann abgeschnitten werden.
Sobald man keine graue Zeile mehr findet, scheint wohl das Dokument anzufangen.

Selbiges Verfahren laesst sich entsprechend anwenden, wenn die Raender Oben, Links oder Rechts zu suchen sind. Wie erwaehnt, bei meiner Zeilenerkennung funktionierte das einwandfrei, auch bei gescannten Dokumenten. Wenn zu wenig abgeschnitten wird : Threshold erhoehen, ggf. Zeilenausschnitt fuer die Ueberpruefung der Pixel verkleinern. Wird zu viel abgeschnitten : Vice versa ;-)

Gruss, Lizzy

P.S.: Sourcecode find ich leider momentan nicht :( Aber ich denke mal wenigstens der Ansatzpunkt duerfte hoffentlich einigermassen klar sein... oder ?
  Mit Zitat antworten Zitat