28 votes

Reconnaissance de formes Kinect

J'ai acheté un Kinect pour jouer avec sur mon PC en C#. (Et quel plaisir de programme!)

Je suis à l'aide d'CLNUIDevice.dll pour obtenir la profondeur de l'image de Kinect. Cela fonctionne bien et je suis capable de lire la profondeur à travers les valeurs RVB de l'image.

Maintenant, je me demande ce que les bibliothèques sont là pour faire différents types de reconnaissance. J'ai vu la main de la reconnaissance, de la reconnaissance du visage, du squelette, des émotions, des objets, etc.

Les bibliothèques de traitement d'images n'ont pas à être pour Kinect (bien que ce serait bien) et ils n'ont pas à être pour .Net (bien que ça pourrait être sympa). Par exemple: n'Importe quel objet de suivi lib fonctionnera, mais si elle peut utiliser la 3D heatmap de Kinect correctement, il fonctionnera beaucoup mieux.

16voto

ashley aberneithy Points 469

Vous pouvez prendre la série de RVB matrices produites par la Kinect et de les exécuter à travers standard algorithmes de traitement d'image, dans la pratique, les algorithmes de traitement d'image sont normalement combinés pour produire des résultats significatifs. Voici quelques techniques standard qui pourrait être facilement mis en œuvre ( ou mixte) dans .net:

Modèle Assorti - une technique de traitement d'image numérique pour trouver de petites parties de l'image qui correspondent à un modèle d'image http://en.wikipedia.org/wiki/Template_matching

Morphologiques de Traitement de l'Image - une théorie et de la technique pour l'analyse et la transformation des structures géométriques, basée sur la théorie des ensembles, théorie des treillis, de topologie et de fonctions aléatoires http://ashleyaberneithy.wordpress.com/2011/08/08/automating-radiology-detecting-lung-nodules-using-morphological-image-processing-in-f/

Il y a aussi plus avancée des techniques de traitement d'image qui peut être utilisé dans des scénarios spécifiques, e.g de reconnaissance de visage et le filtrage via l'apprentissage de la machine

Principe de l'Analyse en composantes - j'ai utilisé cette technique dans le passé, et je pense que c'est utilisé dans des consommateurs modernes caméras pour effectuer la reconnaissance faciale http://en.wikipedia.org/wiki/Principal_component_analysis

L'Apprentissage de la Machine correspondant à un modèle - j'ai utilisé des Machines à Vecteurs de Support et de Réseau Neuronal basé sur les algorithmes d'apprentissage dans le passé pour détecter des motifs à l'image des matrices. Il est intéressant de lire Vapnik Statistique de la Théorie de l'Apprentissage - http://www.amazon.com/Statistical-Learning-Theory-Vladimir-Vapnik/dp/0471030031 qui montre comment mapper correctement les données d'entraînement dans un n-dimensions de la structure, et comment réussir modèle hyperplans au sein de la structure qui de classer les données, de nouvelles données peuvent ensuite être classés en fonction de ce modèle. Une bibliothèque appelée LibSVM existe aussi que j'ai trouvé utile. http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Juste une remarque, il serait sans doute plus naturel d'utiliser F# au sein de la .net monde à mettre en œuvre certains de ces algorithmes

EDIT : un autre très bon livre est "Traitement Numérique de l'Image"

2voto

aaecheve Points 141

AForge.NET est une bibliothèque .Net utile pour la vision par ordinateur et l'apprentissage automatique.

Voici un exemple de code et une vidéo d'une personne l'utilisant avec Kinect: Conquex

2voto

psihodelia Points 6658

Apprenez OpenCV. C'est un cadre standard pour les laboratoires de vision par ordinateur / l'apprentissage aujourd'hui. Essayez les installations de recherche de contour, K-voisins les plus proches, etc. Mais d'abord, apprenez son interface (structures de données, fonctions).

1voto

kenny Points 9150

Et l'OpenCV oblictoire et mon port fav vers C # http://www.emgu.com/wiki/index.php/Main_Page

0voto

sparkFinder Points 869

Bardage avec Kenny sur celui - ci-le Emgu C# wrapper pour OpenCV est ce que j'irais pour. OpenCV (habituellement en C++) est la plus largement utilisée de la Vision par Ordinateur-cadre, et est également partiellement maintenu/optimisé par Intel. Beaucoup des chercheurs et ingénieurs de l'utiliser pour créer leurs propres projets, et la Emgu wrapper donner une bonne traduction pour commencer à faire usage de ses bibliothèques en C#. Je pense que beaucoup de l'open source de l'innovation dans le Kinect de la zone qui se passe avec le libfreenect wrappers (utilisé au mieux avec Linux/C++) et EmguCV devrait vous donner la meilleure façon de les imiter (ou de l'utilisation des autres imitations) de ce que ces Vision des chercheurs sont en train de faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X