Autor Beitrag
mmp5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 16.12.09 22:24 
Folgendes Problem:

Ich habe ein Bildschnipsel (z.B. ein Firmenlogo ca. 40x60) und möchte dieses Logo jetzt auf einem gescannten DinA4 Bild suchen?

Wie mache ich das am Performantesten? (auf's ganze Bild gesehen)

Und was ist wenn ich die Position des Logos auf dem eingescannten Papier kenne? (kann man nur einen Bestimmten Bereich absuchen)

Wie sieht es mit der Fehlertoleranz aus? (kann man irgendwie z.B. Schmutz auf dem eingescannten Bild einplanen)


Jede Anregung/Lösung/Idee ist gefragt ...
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Do 17.12.09 09:46 
Hallo mmp5,

ich habe auch mal in einem Projekt (4 Leute) Bildverarbeitung gemacht. Ist allerdings schon ein paar Jahre her :D

Wir sind über "ähnliche" Probleme wie du gestolpert. Ich versuch mich mal zu erinnern und hoffe es Hilft dir.

1) Performance
Nachdem wir nicht die von .NET angebotenen Bitmap-Funktionen genommen haben, sondern für das Vergleichen von Bildern/Bildausschnitten oder zum Drehen/Skalieren eines Bildes es in einem Unsafe-Block gemacht hat, war es kein Problem mehr. Wir konnten locker im Bruchteil einer Sekunde ein Bild mit einem "lahmen"/Standard-Büro-PC Drehen, Skalieren und Vergleichen. Wenn du ein paar Sekunden Zeit hast, denke ich dass die .NET ausreichend sind :)

2) Bildausschnitt vergleichen
Ja das geht super. Wie unter 1) gesagt kannst du es mit den Bitmap-Funktionen machen oder selber in einem "schnelleren" unmanaged Codebereich Implementieren.

3) Fehler
Das ist sehr sehr schwierig. Wir hatten auch das Problem, dass durch Ausdruck und einscannen sich die Referenzpunkt verschieben, verdrehen oder skalieren. Einfachste Lösung war das Einfügen eines "Referenzbalken". Das war ein dicker Balken unten auf der Seite bei dem wir die Skalierung, Drehung und Verschiebung erkennen konnten. Ich vermute du hast immer unterschiedliche Dokumente und auf deren Aussehen keinen Einfluss - deshalb ist es sehr schwierig.
Wir haben Allgemeine Algorithmen angewendet um etwaiges Rauschen/Schmutz zu entfernen. Darüber findet man im Inet genug. Um dein Logo zu finden kannst du vlt. einen Vergleich machen, der die Übereinstimmung in Prozent zurück gibt (2% haben für die Startkoordinaten 20,20 übereingestemmt, 40% für 20,25 usw.). Wenn du weißt, dass ein Logo auf dem Bild ist, dann kannst du den Bereich mit der höchsten Übereinstimmung zurück geben.

Da fällt mir noch was ein: Die Farbproblematik haben wir durch s/w scannen gelößt :D

Nun ja... soweit mal meine Erinnerung/Ideen. Bei Bedarf kann ich den Quellcode ausgraben ;)

Gruß Daniel