Mit TImage messen ?
-
Hallo alle miteinender,
ist es in einem TImage möglich einzelne Pixel auf ihre Farbe hin abzufragen?
Ich möchte aus einem fotografierten Bild eine Kontur erkennen und diese dann evtl. vermessen.
Kennt sich damit jemand aus?
Ich bin für jeden Tip dankbar,
viele Grüsse Micha
-
Ja man kann auf die einzelnen Pixel zugreifen
Mit TImage::TPicture::TBitmap hat man Zugriff auf das Bitmap. Dieses kann man über TBitmap::Pixels[][] auslesen. Schneller geht es mit TBitmap::ScanLine.
Schau Dir mal in Ruhe die Eigenschaften und Methoden von TBitmap an.Viel Spaß beim Schreiben der Kontur-Erkennungs-Funktion.
-
Kann dir ein paar Schlagworte geben: Konturen suchen: Hochpassfilter, Mexican-Hut, Fouriertransformation, Wavelettransformation (Filterbänke),... Speziell für den Mexican-Hut (Filterfunktion) gibt es einiges im Netzt. Theorie anspruchsvoll...
-
helmuth schrieb:
Kann dir ein paar Schlagworte geben: Konturen suchen: Hochpassfilter, Mexican-Hut, Fouriertransformation, Wavelettransformation (Filterbänke),... Speziell für den Mexican-Hut (Filterfunktion) gibt es einiges im Netzt. Theorie anspruchsvoll...
wozu brauch man das um konturen zu finden?
-
Mit einem Hochpassfilter macht man Kantendetektierung.
Bsp.-filter:
-1/9 -1/9 -1/9
-1/9 1 -1/9
-1/9 -1/9 -1/9dieses Filter schiebst du über das Bild (für die Randpunkte gibt es extra Filter)...
Nun hast du zwar die Kanten gefunden aber er will diese ausmessen. Also muss er die Kanten lokalisieren. Mit der oberen Methode findet er sie nur. Bleibt nur die Anwendung der Wavelets. Mit diesen ist man in der Lage nicht nur die hohen Frequenzen eines Bildes zu finden sondern auch ihre Position zu bestimmen. So könnte zumindest der theoretischen Weg aussehen. Weil aber die dahinter stehende Theorie sehr schwierig ist (und ich diese auch noch nicht ganz verstanden habe) habe ich die Schlagwörter angegeben. Man stößt dann sehr schnell auf digitale Bildbearbeitungsskripte diverse "Leeranstalten" in denen es erklärt ist.
-
okay... macht sinn die kanten durch geeignete filter hervorzuheben. statt wavelets (auch noch nie genutzt, immer nur davon gehört) kann man ja auch nen konturfolge-algorithmus verwenden (entweder im binärbild oder grauwertbild) um objekte zu lokalisieren. dabei geht man ueber alle bildpunkt und legt man im grauwertbild nen schwellwert fest und alle bildpunkte die z.b. groesser sind, werden als objekte betrachten und pixel fuer pixel gelabelt.
-
Hier habe ich noch was gefunden: