7
votes

Détection de bord d'image

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.

Comme je n'ai aucune expérience dans le traitement de l'image avant que je sois un peu confus sur quel algorithme à utiliser.


3 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.


6 Réponses :


10
votes

Pour un démarrage rapide, je suggérerais de regarder ces deux:


2 commentaires

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



2
votes

Consultez Aforge . Il a une implémentation complète C # de certains algorithmes de détection de bord.


0 commentaires

0
votes

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.


2 commentaires

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é.



0
votes

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 :)

considère


0 commentaires

0
votes

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.

vérifier ici pour la fonction OpenCV:

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

http://opencv.willowgarage.com/documentation/drawing_fonctions.html#drawcontours < / a>


0 commentaires