Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Rand in einem Bild erkennen (https://www.delphipraxis.net/53579-rand-einem-bild-erkennen.html)

franktron 19. Sep 2005 13:42


Rand in einem Bild erkennen
 
Ich habe ein Bild was einen Grauen Rand hat wie kann ich diesen Rand erkennen.

Ich nutze GD32 für die Bilder(PNG) aber das sollte ja egal sein.

franktron 20. Sep 2005 16:00

Re: Rand in einem Bild erkennen
 
Hat den da keiner ne idee wie man den Rand einer Seite erkennen kann.

freak4fun 20. Sep 2005 16:03

Re: Rand in einem Bild erkennen
 
Vielleicht über die Höhen und Breitenangabe oder die Pixelfarbe?

MfG
freak

Nikolas 20. Sep 2005 16:32

Re: Rand in einem Bild erkennen
 
Wie sieht denn das Bild aus und was willst du genau machen? (Den Rand weg, erkennen, ob ein Rand da ist...)

franktron 20. Sep 2005 17:43

Re: Rand in einem Bild erkennen
 
ich häng morgen mal ein Screenshot an es ist eine Rechnung also eine A4 Seite aber der Scanner scannt etwas mehr

lizardking 20. Sep 2005 18:42

Re: Rand in einem Bild erkennen
 
Zitat:

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 ?

franktron 20. Sep 2005 20:47

Re: Rand in einem Bild erkennen
 
Ja leider habe ich meine Dokos in Graustufen gescannt also wie kann ich den RGB Wert ermitteln

lizardking 21. Sep 2005 08:32

Re: Rand in einem Bild erkennen
 
Zitat:

Zitat von franktron
Ja leider habe ich meine Dokos in Graustufen gescannt also wie kann ich den RGB Wert ermitteln

Wenn Du in Graustufen gescannt hast, dann reicht es eigentlich IMHO aus, nur die Grauwerte entsprechend zu vergleichen. Vorausgesetzt natuerlich, die Grafik wird intern auch in Grauwerten gespeichert.

Ansonsten bekommt man die einzelnen Komponenten ungefaehr so :

r:=GetRValue(Color);
g:=GetGValue(Color);
b:=GetBValue(Color);

Nikolas 21. Sep 2005 20:03

Re: Rand in einem Bild erkennen
 
Zitat:

Ja leider habe ich meine Dokos in Graustufen gescannt also wie kann ich den RGB Wert ermitteln
Bei Grauwerten sind die Wert für R, G und B die gleichen, d.h. es reicht mit einem Wert davon zu arbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz