2009-11-11 6 views
1

J'essaie de faire un écran tactile bricolage et voudrais l'entrer dans la foire scientifique locale, mais je voulais le faire sur l'aspect de la programmation de Multi-touch. Mon problème réside dans le fait que je n'ai jamais travaillé avec l'analyse d'images (à partir d'une webcam web basée sur USB).
Je voudrais faire ce projet en C# si possible (C++ - si pire des cas)
je dois analyser une image en noir (à partir d'une webcam USB) puis détecter les taches blanches entrent en vue. Comment ferais-je cela? --- existe-t-il une méthode connue pour détecter le changement par rapport à l'analyse de chaque pxl? si oui, un pointeur vers où est-ce serait bien :)
Aussi comment pourrais-je obtenir l'entrée de la Web-Cam via USB? --- où puis-je trouver les bibliothèques/ddl?
J'ai vu des programmes qui fonctionnent avec cela, mais ils convertissent les images - ce qui prend du temps et de la vitesse du processeur ... est-il un moyen d'utiliser l'image brut imput/données?
AIDE?C# - Aide multi-touch? Entrée webcam USB? L'analyse d'image?

Répondre

3

Une fois que vous avez votre entrée, vous aurez (en supposant qu'il est parfaitement sombre et parfaitement contraste lumineux) vous aurez une matrice de valeurs similaires à celle-ci: (échelle de gris)

0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 256 0 0 0 0 0 
0 0 0 0 0 256 256 256 0 0 0 0 
0 0 0 0 0 0 256 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 

Votre travail devrait être de segmenter la section des bonnes valeurs de couleur (256) et de déterminer la position. Pour obtenir un mouvement [en supposant que vous ne faites que suivre 1 objet], vous devrez comparer la position suivante du blob avec la précédente.

Dans le monde réel, en particulier avec une webcam, vous n'obtiendrez jamais un fond sombre et solide avec un bon contraste. La webcam est à basse résolution, la lumière n'est jamais parfaite et le bruit est ajouté à partir des défauts de la lentille et du CCD. En outre, vous pouvez rencontrer des problèmes de suivi du mouvement des blobs (un blob peut être mal placé ailleurs sur la surface.) Lorsque vous essayez de suivre deux blobs, vous rencontrerez d'autres problèmes.

Certaines de ces questions sont:

  1. collision Blob (comment savez-vous qui blob va où)
  2. croisées overs Blob (ne les blobs changent de côté, ou ne les blobs se déplacent en sens inverse de Voyage précédente)
  3. Blob combinant (où deux blobs deviennent un)

pour saisir l'appareil photo en utilisant C# vous voudrez peut-to check this out. WIA n'est pas la méthode la plus rapide à utiliser pour prendre des photos. Cependant, c'est beaucoup plus facile à traiter. Ma suggestion pour vous si vous êtes toujours intéressé à faire ceci est de dessiner deux images dans photoshop et suivre les marqueurs. Ce n'est pas aussi excitant, mais cela vous aidera à résoudre le problème plus facilement et à relâcher la description du problème.

2

Ce que vous voulez est "détection de blob". Voici un bon fil à propos de blob library

Il existe déjà un tas de bibliothèques et de logiciels de vision multi-touch/ordinateur. La meilleure ressource pour cette chose est wiki.nuigroup.com. Surtout la section Frameworks and Libraries. Actuellement, il n'y a pas beaucoup d'informations C# là-bas, mais si vous trouvez quelque chose, assurez-vous de le mettre sur ce wiki pour tout le monde. Il y a aussi le NuiGroup forum C# (.NET/Silverlight/WPF) section qui devrait vous aider beaucoup. Il y a beaucoup d'aide à donner dans cette communauté.

0

Pour obtenir des images de la webcam, le cadre AForge est facile à utiliser! Découvrez l'application exemple de détection de mouvement à des fins de collecte de code :)