J'ai besoin de compter des boîtes dans un entrepôt en utilisant des techniques de détection de bord; Les images seront tirées d'un modèle 3D d'un entrepôt et du système proposé utilisera 3 images dans 3 angles différents pour couvrir toute la zone d'un entrepôt. P>
Comme je n'ai aucune expérience dans le traitement de l'image avant que je sois un peu confus sur quel algorithme à utiliser. P>
6 Réponses :
Pour un démarrage rapide, je suggérerais de regarder ces deux: p>
Ce sont les filtres de détection des bords les plus largement utilisés avec de très bons résultats. P>
Si vous commencez à apprendre la vision de l'ordinateur, vous devez également apprendre sur opérations typiques dans le traitement de l'image A> et Convolution . P>
Le Bibliothèque OPENCV est une excellente bibliothèque qui implémente de nombreux algorithmes de vision informatique, y compris les deux opérateurs mentionnés ci-dessus. p>
Merci beaucoup pour votre commentaire, j'ai choisi Canny comme mon alogrement, si j'étais utilisé OpenCV ou Mathlab, mon conférencier ne sera pas très heureux, avez-vous une suggestion pour trouver des détails ou des tutoriels d'implémentation de canny en C #?
Il y a un bel article de codeProject sur la mise en œuvre de Canny en C #: codeProject.com/kb/cs/canny_edge_détection .aspx
Consultez Aforge . Il a une implémentation complète C # de certains algorithmes de détection de bord. P>
Jetez un coup d'œil à bibliothèque de traitement d'image pour C ++ question. Vous pouvez trouver plusieurs liaisons utiles là-bas. Les bibliothèques suggérées ont non seulement une description d'algorithme mais aussi leurs implémentations. P>
Merci pour votre commentaire, mais j'utilise C # comme langage de programmation
C'est à vous de décider. Mais le traitement d'image de ce niveau est de nombreuses ressources, des questions de performance. Par conséquent, il serait imprudent de la confier à un runtime géré. OPENCV a des optimisations de bas niveau, elles suggèrent même des processeurs Intel explicitement. Mais si vous insistez sur C #, vous pouvez facilement créer des emballages gérés au-dessus des DLL non géré.
Jetez un coup d'œil à mes deux Tutoriels de détection de bord - un est basé sur la convolution, l'autre - juste des mathématiques simples. Oh, et vous devez aimer les shaders de pixel pour lire ceci :) p>
considère p>
OpenCV a un très bel algorithme qui détecte des contours fermés dans une image et les renvoie sous forme de listes de points. Vous pouvez ensuite jeter tous les contours qui n'ont pas 4 points, puis vérifiez des contraintes des restants (rapport de format des rectangles, etc.) pour trouver vos côtés de la boîte restante. Cela devrait au moins résoudre la partie de traitement de votre problème de votre problème, bien que tournant cette liste de contours en un nombre de cases de votre entrepôt va être difficile. P>
vérifier ici pour la fonction OpenCV: p>
http://opencv.willowgarage.com/documentation/structural_analysis_and_shape_descriptors.html#findcontours < / a> p>
http://opencv.willowgarage.com/documentation/drawing_fonctions.html#drawcontours < / a> p>
'SUJOY Filter' est meilleur que le filtre SOBEL pour la détection de bord. Voici la mise en œuvre Julia (avec lien papier): Filtre de Sujoy P>
S'il vous plaît donner des commentaires.
Essayez Stackoverflow.com/Questtions/1391212/...
C'est un problème très très complexe à résoudre! Je doute que vous recevrez une réponse complète à ce sujet, votre meilleur choix ferait probablement de rechercher Google sur certains documents de recherche.
Désolé pour la franchise: cela ressemble "Je n'ai aucune expérience de pilotage, pourriez-vous me dire comment voler un 747 de Londres à Tokyo". Lisez quelques livres sur le traitement de l'image et la vision de l'ordinateur, mettez en œuvre des algorithmes, expérimentez-les avec eux. Avant de le faire, je ne pense pas que vous puissiez aborder un problème comme celui-ci.