![]() |
Grafiken erkennen. Library ?
Hallo,
ich müsste für ein Projekt Grafiken erkennen. Das soll so funktionieren, dass die zu erkennende Grafik als .bmp eingelesen wird, und diese Grafik soll in einer anderen Grafik (zB auf dem Desktop) erkannt werden. Das ganze soll auch funktionieren, wenn sich die Größe der gesuchten Grafik verändert. Gibt es für diese Aufgabe irgendwelchen libs ? Wie kann man so eine optische Erkennung am besten umsetzen.. TBitmap ist ja auch nicht alzu flexibel... und jeden Pixel einzeln auszulesen macht jetzt auch nicht viel Sinn und ist auch recht langsam !? ~stiftII PS: Arbeite mit Lazarus |
AW: Grafiken erkennen. Library ?
Zitat:
![]() Ansonsten finde ich oft ![]() Zitat:
|
AW: Grafiken erkennen. Library ?
man kann jedes Pixel auslesen, man kann aber auch scanline verwenden (schneller)
|
AW: Grafiken erkennen. Library ?
Zitat:
Auf jeden Fall ist ![]() |
AW: Grafiken erkennen. Library ?
Es muss nicht direkt pattern matching sein, es reicht ja eine Ähnlichkeitssuche. Das Schlagwort hier wäre "Korrelationsfunktion" (nicht die aus der Statistik, sondern die Umkehrung zur Convolution/Faltung in der Bildverarbeitung).
Leichte Kost ist das auch nicht gerade. Man sollte in der Lage sein, ein Bild per Fourier-Transformation (FFT) in den Frequenzraum zu transformieren (und wieder zurück) und auch komplexe Zahlen sollte einem nicht fremd sein. Zur Belohnung kann man dann ein kleineres Bild in einem größeren suchen und bekommt X- und Y-Koordinaten am Ende raus (als Maxima der Funktion, die die Ähnlichkeit der Bilder darstellt). Zum schnellen Testen, kann man MatLab hernehmen:
Code:
wobei hier w das gesuchte Muster und f das Gesamtbild ist. In I und J stehen dann nachher die Koordinaten (I=Y, J=X, weil Matlab spaltenweise arbeitet).
functiong = dftcorr(f,w)
[M,N] = size(f); F = fft2(f); G = conj(fft2(w,M,N)); g = real(ifft2(G.*F)); gs= im2uint8(mat2gray(g)); figure; imtool(gs); [I,J]= find(g == max(g(:))) Das ganze in fertiger Form für Delphi kenne ich leider nicht, aber wenn dich das bisher nicht abgeschreckt hat: Zumindest zur Theorie dahinter hab ich noch ein wenig rumfliegen. |
AW: Grafiken erkennen. Library ?
Hi,
die eierlegende Wollmilchsau zum Thema Bilderkennung etc. dürft vermutlich ![]() LG, Frederic |
AW: Grafiken erkennen. Library ?
Zitat:
Würde mich interessieren, was du noch so zum Thema hast. Und vllt kannste ja sogar eine Beispielfunktion in FPC basteln ?? Und was macht diese "Ähnlichkeitssuche" genau ?. Wandelt sie das Bild in ein verainfachtes Format um, und vergleicht gefundene Muster und formen ? Oder geht die im Endeffekte jeden Pixel durch und vergleicht ? Danke schonmal. ~stiftII |
AW: Grafiken erkennen. Library ?
Zitat:
Würde das ganze gerne in Lazarus umsetzen. |
AW: Grafiken erkennen. Library ?
Wie performant muss das ganze sein, wo willst du es genau einsetzen?
Darf das gesuchte Bild Abweichungen haben oder ist es exakt so im Bild enthalten? |
AW: Grafiken erkennen. Library ?
Zitat:
- vorher in einem Pointer-Array alle Scanlines zwischenspeichern und schon hat man eine Art zweidimensionales Array - sich den Zeiger auf die letzte Scanline holen (diese Bitmaps werden von unten nach oben gespeichert) und schon kann man über eine Art eindimensionales Array drauf zugreifen (alle Zeilen hintereinander) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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