Objekte im Bild erkennen [geschlossen]

8

Hallo, ich mache gerade ein Schulprojekt, bei dem ein Roboter zwischen Flamingoplatten auf dem Boden fährt. Wir müssen einen Algorithmus erstellen, der die Positionen dieser Platten identifizieren kann, so dass wir Pfade um sie herum erstellen können (Wir verwenden dafür einen Stern).

Bisher haben wir mit AForged Library gearbeitet und wir haben die folgende Klasse erstellt, das einzige Problem dabei ist, dass bei der Erstellung der Rechtecke nicht berücksichtigt wird, dass die Platten nicht immer parallel zum Kamera-Rand sind, und In diesem Fall wird nur ein Rechteck erstellt, das die ganze Platte bedeckt. Also müssen wir irgendwie die Rotation auf dem Objekt finden, oder eine andere Möglichkeit, dies zu erkennen. Ich habe ein Bild erstellt, das helfen könnte, dies zu erklären.

Image das Problem beschreiben: Ссылка

Jede Hilfe, wie ich das machen kann, wäre sehr willkommen.

Weitere Informationen oder Ideen sind immer willkommen.

%Vor%     
Androme 14.04.2010, 08:48
quelle

4 Antworten

5

Du musst die Blobs ein bisschen mehr analysieren, um die Ecken zu finden, wie @kigurai gesagt hat. Die AForge-Bibliothek ermöglicht dies, siehe Abschnitt Suche nach konvexen Hüllen auf diese Seite für weitere Informationen. Der folgende Screenshot (von der Seite) zeigt ein kleines Beispiel dessen, was die konvexe Hülle ist.

alt text http://www.aforgenet.com/framework/features/imaging/convex_hulls.png

Sie möchten sich die GetBlobsLeftAndRightEdges Funktion und die GrahamConvexHull Klasse.

    
Matt Warren 15.04.2010, 12:30
quelle
3

Wenn jemand interessiert ist, ist dies die Art, wie ich es gemacht habe.

Blobsverarbeitung:

%Vor%

MapFilter:

%Vor%

Vieleck:

%Vor%     
Androme 28.04.2010 08:02
quelle
2

Die einfachste Lösung besteht wahrscheinlich darin, die Ecken jedes erkannten Blobs zu finden und dann geometrisch zu berechnen, welche Punktpaare die verschiedenen Seiten der Quadrate bilden. Dies setzt voraus, dass die Kamera gerade nach unten schaut, so dass ein Quadrat tatsächlich ein Quadrat im Bild ist (keine perspektivische Verzerrung).

Ich bin jedoch ein bisschen neugierig, warum Sie die Rotation der Rechtecke kennen müssen. In allen Beispielbildern sind die Rechtecke mehr oder weniger mit den Bildrahmen ausgerichtet, so dass eine Begrenzungsbox für einen Rechteck-Klecks sehr nahe an dem ist, was Sie suchen. Zumindest sollte es gut genug für die Pfadfindung sein.

    
Hannes Ovrén 15.04.2010 06:08
quelle
-4

Sie sollten neuronale Netze verwenden. Siehe: Ссылка

    
zproxy 15.04.2010 06:11
quelle