2010-08-22 2 views
7

Ich muss Boxen in einem Lagerhaus mit Kantenerkennungstechniken auszählen; Die Bilder werden aus einem 3D-Modell eines Lagers entnommen und das vorgeschlagene System wird 3 Bilder in 3 verschiedenen Winkeln verwenden, um den gesamten Bereich eines Lagers abzudecken.Bildkantenerkennung

Da ich keine Erfahrung in der Bildverarbeitung habe, bevor ich bin ein bisschen verwirrt über den Algorithmus zu verwenden.

+1

Versuchen http://stackoverflow.com/questions/1391212/best-articles-to-start-learning-about-edge -detection-image-recognition – PaulG

+3

Das ist ein sehr sehr kompliziertes Problem zu lösen! Ich bezweifle, dass Sie eine umfassende Antwort auf SO erhalten, Ihre beste Wette wäre wahrscheinlich, Google auf einigen Forschungsarbeiten zu suchen. –

+4

Entschuldigung für die Direktheit: Das klingt wie "Ich habe keine Piloten Erfahrung, können Sie mir sagen, wie man eine 747 von London nach Tokio fliegt". Lesen Sie ein paar Bücher über Bildverarbeitung und Computer Vision, implementieren Sie Algorithmen, experimentieren Sie mit ihnen. Bevor Sie das tun, glaube ich nicht, dass Sie ein Problem wie dieses angehen können. – Niki

Antwort

10

Für einen schnellen Start würde ich bei diesen beiden suchen empfehlen:

Dies sind die am häufigsten verwendeten Kantenerkennungsfilter mit recht guten Ergebnissen sind. Wenn Sie beginnen, Computer Vision zu lernen, sollten Sie auch über typical operations in image processing und convolution lernen.

Die OpenCV library ist eine großartige Bibliothek, die viele Algorithmen der Computer Vision implementiert, einschließlich der beiden oben genannten Operatoren.

+0

Vielen Dank für Ihren Kommentar, ich hv ausgewählt canny als mein Algorithmus, Wenn ich OpenCV oder Mathlab mein Dozent wird nicht sehr glücklich sein, haben Sie einen Vorschlag, Details oder Tutorials von canny Implementierung in C# zu finden? – sha123

+0

Es gibt einen schönen Codeproject Artikel über Canny Implementierung in C#: http://www.codeproject.com/KB/cs/Canny_Edge_Detection.aspx –

1

Auschecken AForge. Es verfügt über eine vollständige C# -Implementierung einiger Kantenerkennungsalgorithmen.

+0

k Ich werde überprüfen, thankz viel 4 ur Kommentar – sha123

0

Werfen Sie einen Blick auf Image Processing Library for C++ Frage. Dort finden Sie einige nützliche Links. Die vorgeschlagenen Bibliotheken haben nicht nur eine Algorithmusbeschreibung, sondern auch ihre Implementierungen.

+0

u für ur Kommentar Danke, aber ich Es liegt an Ihnen, sicher bin C# als meine Programmiersprache – sha123

+0

verwenden. Aber die Bildverarbeitung auf dieser Ebene ist ziemlich ressourcenintensiv, Leistung ist wichtig. Daher wäre es unklug, es einer verwalteten Laufzeit anzuvertrauen. OpenCV hat einige Low-Level-Optimierungen, sie schlagen sogar explizit Prozessoren Intel. Aber wenn Sie auf C# bestehen können Sie leicht Wrapper oben auf nicht verwalteten DLLs verwaltet erstellen. –

0

Werfen Sie einen Blick auf meine beiden edge detection tutorials - eine basiert auf Faltung, die andere - nur einfache Mathematik. Oh, und Sie müssen Pixel-Shadern lieben zu lesen diese :)

Grüße

0

OpenCV hat einen sehr schönen Algorithmus, der in einem Bild geschlossenen Konturen erkennt und gibt sie als Liste von Punkten. Sie können dann alle Konturen wegwerfen, die keine 4 Punkte haben, und dann einige Einschränkungen der verbleibenden (Seitenverhältnis der Rechtecke, etc ...) überprüfen, um Ihre verbleibenden Kastenseiten zu finden. Dies sollte zumindest den Bildverarbeitungsteil Ihres Problems lösen, obwohl es schwierig wird, diese Liste von Konturen in eine Anzahl von Kästen in Ihrem Lager zu verwandeln.

Sie sich hier über die OpenCV-Funktion:

http://opencv.willowgarage.com/documentation/structural_analysis_and_shape_descriptors.html#findcontours

http://opencv.willowgarage.com/documentation/drawing_functions.html#drawcontours