Groovy Erkennen geometrischer Formen in einem Kantenbild

F

Faber

Gast
Hallo allerseits,

ich hab mir einen Kantendetektor programmiert und möchte nun im Ergebnisbild Objekte geometrischer Figuren (in meinem Fall Dreiecke, Kreise und ein Sechseck; sprich Formen von Straßenschildern) erkennen und farbig markieren. Nach einer kurzen Recherche bin ich auf die Hough-Transformationn gestoßen. Ich fand die Vorgehensweise und Codebeispiele etwas kompliziert. Deshalb meine Frage an euch:

Kennt ihr vielleicht alternative Methoden zur Objekterkennung geometrischer Figuren oder verständliche quellen, die sich mit dem Thema befassen?

Danke für jeden Tipp
 

Marco13

Top Contributor
Das hat's in sich. So eine Hough-Transformation an sich ist relativ leicht zu implementieren, aber das "gut" zu machen... das schüttelt man nicht so einfach aus dem Handgelenk. Wenn man die Hough-Transformation durchlaufen läßt, hat man im besten/einfachsten Fall einen Haufen Informationen über "mögliche" Linien (und wohlgemerkt, im einfachsten Fall nur über Linien - man weiß erstmal nicht, wo die anfangen und aufhören!), aber daraus dann noch die Information über Geometrische Formen zu bauen (im schlimmsten Fall noch mit perspektivischer Verzerrung usw) kann aufwändig sein...
 
D

Dow Jones

Gast
Interessantes Thema. Leider nicht ganz einfach, sonst hätten BWM & Co das schon lange implementiert...
Die Hough Transformation wäre mein erster Vorschlag gewesen (auch wenn sie lediglich zur Erkennung der Form dient; wobei eine runde Form ja leider nicht hinreichend zur Identifizierung eines Straßenschildes ist - da müsste man müsste schon tiefer in den Trickkiste der Mustererkennung greifen).

Aber zurück zur Frage. Wenn du für deine zu erkennenden Objekte zunächst mal nur die Constraints rund/dreieckig/sechseckig aufstellen möchtest, dann wird es schon knifflig. Bei einem reinen Kantenbild[1] könnte man mal schauen ob man mit Fourierdeskriptoren etwas erreichen kann[2]. Ansonsten fällt mir ad Hock auch nur die Standardvorgehensweise ein:
1) Merkmale aus dem (Kanten)Bild extrahieren
2) diese ggf. einer Transformation unterwerfen welche die Merkmale skalierungs-/rotations-/translationsinvariant macht
3) die transformierten Daten mit Sollwerten vergleichen bzw. sie von einem (auf einem bestehenden Datenbestand trainierten) Klassifikator bewerten lassen
Das wäre zwar mit Kanon auf Spatzen geschossen, aber da die Wissenschaft bereits funktionierende Kanonen kennt ist es vielleicht weniger Aufwand als das Rad neu zu erfinden. Um ein eigenes Verfahren zu entwickeln würde ich mich glaube ich erstmal bei SIFT, Viola/Jones und ähnlichem einlesen und von dort einige Ideen klauen. :)


1: Ich persönlich kann SUSAN zur Kantenerkennung nur empfehlen

2: Falls dir die Fouriertransformation geläufig ist sind die Fourierdeskriptoren leicht zu verstehen. Andernfalls wird's hart... Prinzipiell wird dabei eine Kontur in einem Bild auf (möglichst wenige) Koeffizienten heruntergebrochen. Ich bin mal auf ein nettes Applet dazu gestoßen, welches eine vereinfachte Form der FD visualisiert: Image Analysis Applet. Mit dem Regler links kannst du einstellen wieviele Koeffizienten verwendet werden sollen; nach Klick auf "apply" wird dann unten/mitte die Approximation der Kontur oben/mitte angezeigt. Dabei zeigt sich, das man mit recht wenigen Koeffizienten schon gute Ergebnisse erreicht.

Edit: Tippfehler korrigiert
 
Zuletzt bearbeitet von einem Moderator:

ThreadPool

Bekanntes Mitglied
Interessantes Thema. Leider nicht ganz einfach, sonst hätten BWM & Co das schon lange implementiert...

Das gibt es IMHO schon etwas "länger", nur nicht in den Allerweltsmodellen wobei es da auch langsam Einzug hält, siehe Ford. Zur Qualität kann man sagen, ja...schon nich schlecht aber man sollte diese Technik momentan doch eher als "Hilfsmittel" sehen.
 
F

Faber

Gast
erstmal danke für die wertvollen Tipps. Ich denke, ich bleibe vorerst bei der Hough-Transformation. Werde mal versuchen den Akkumulator zu programmieren. Vielleicht habe ich später hierzu noch mal eine Frage, was die implementierung angeht
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
I Best Practice Kreise erkennen Allgemeine Java-Themen 1
N Erkennen eines Programs Allgemeine Java-Themen 2
P Strukturänderungen/abnormalien in Logfiles automatisch erkennen Allgemeine Java-Themen 5
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T Java Windows sounds erkennen Allgemeine Java-Themen 1
M Backslash erkennen Allgemeine Java-Themen 4
D Flasche Eingabe erkennen Allgemeine Java-Themen 4
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Datei zugriffe erkennen Allgemeine Java-Themen 25
A Großbuchstaben erkennen (Prozente) Allgemeine Java-Themen 2
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
S Generellen MausKlick am PC erkennen Allgemeine Java-Themen 1
J Erkennen, ob Programm in JAR (neues Problem) Allgemeine Java-Themen 7
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
T Sechsecke, erkennen von bestimmten Werten Allgemeine Java-Themen 9
M Erkennen, in welcher Methode sich die VM befindet Allgemeine Java-Themen 6
Hoppelmann "Variable" in String erkennen Allgemeine Java-Themen 2
D IP / Domain in einem String erkennen Allgemeine Java-Themen 2
J jexcelapi - Erkennen von Sheets Allgemeine Java-Themen 3
B Mausbewegung im Thread erkennen (hoch/runter) Allgemeine Java-Themen 6
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
D Regex Raute erkennen Allgemeine Java-Themen 2
K Wiederholungen in Datensatz erkennen?! Allgemeine Java-Themen 6
S Wörter ohne Leerzeichen erkennen Allgemeine Java-Themen 5
M Festplatte am Namen erkennen Allgemeine Java-Themen 2
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
J Exe Datei in Java erkennen??? Allgemeine Java-Themen 4
P Netzlaufwerke erkennen Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
G Wechseldatenträger erkennen Allgemeine Java-Themen 5
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
Daniel_L RTF - Format aus Zwischenablage erkennen und "einlesen"? Allgemeine Java-Themen 5
B Zeilenumbruch erkennen Allgemeine Java-Themen 22
H Dateiende erkennen, wie? Allgemeine Java-Themen 7
S Dateiart erkennen Allgemeine Java-Themen 13
X Position eines Gegenstandes über Webcam erkennen Allgemeine Java-Themen 11
S unter UNIX - (symbolic) links erkennen? Allgemeine Java-Themen 12
D Datum korrekt erkennen Allgemeine Java-Themen 27
G Stringformen erkennen Allgemeine Java-Themen 8
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Größte zusammenhängende Fläche erkennen Allgemeine Java-Themen 3
K ersten programmstart erkennen Allgemeine Java-Themen 7
S JTree selektion erkennen und drauf reagieren Allgemeine Java-Themen 2
E Regexfrage (' erkennen) Allgemeine Java-Themen 4
C WindowStyle von Windows erkennen. Allgemeine Java-Themen 3
J Erkennen aus welchem Pfad das Jar gestartet wurde Allgemeine Java-Themen 6
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
MQue JButton erkennen Allgemeine Java-Themen 2
V Erkennen ob das Programm aus Jar File geladen wurde Allgemeine Java-Themen 9
T Einfachen Ton erkennen Allgemeine Java-Themen 7
R Hinzufügen von Dateien in einem Verzeichniss Auto. erkennen! Allgemeine Java-Themen 15
L objekte erkennen? Allgemeine Java-Themen 9
M Encoding automatisch erkennen Allgemeine Java-Themen 4
J Programmteile erkennen? Allgemeine Java-Themen 4
H Exception erkennen Allgemeine Java-Themen 10
S Farbe erkennen! Allgemeine Java-Themen 3
H existierende dateien erkennen Allgemeine Java-Themen 9
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
A Endlosschleifen automatisch erkennen Allgemeine Java-Themen 6
G String als Zahl erkennen Allgemeine Java-Themen 19

Ähnliche Java Themen

Neue Themen


Oben