Question

J'ai un flux vidéo. Ce flux vidéo contient plusieurs lumières clignotantes à des rythmes différents. Toutes les lumières sont de la même couleur (ils sont tous les LED infrarouges). Comment puis-je détecter la position et la fréquence de ces lumières clignotantes?

Disclaimer: Je suis très nouvelle à OpenCV. J'ai une copie de Learning OpenCV , mais je trouve un peu écrasante. Si quelqu'un pourrait expliquer une solution dans la terminologie OpenCV, il serait grandement apprécié. Je ne m'y attendais pas du code à écrire pour moi.

Était-ce utile?

La solution

Seuil chaque image de la séquence avec un seuil qui rend la LED: s visible. Si vous pouvez le seuil avec un seuil uniquement maintient la LED et de supprimer le fond, vous êtes plus ou moins terminé puisque tout ce que vous devez faire est maintenant de garder une trace de chaque position qui a vu une LED et compte combien de fois il se produit.

Comme une étape intermédiaire, s'il y a « bruit de fond » dans l'image seuillée serait d'utiliser l'érosion pour éliminer les petites erreurs, puis se dilatent peut-être à des « trous à proximité » dans les blobs vous êtes réellement intéressé par.

Si la scène est statique, vous pouvez aussi faire un modèle simple de fond en prenant la médiane de quelques images et en supprimant l'image médiane résultant d'une trame et seuil. Stuff qui a changé (vos LED) apparaît plus forte.

Si la scène est en mouvement, je ne vois pas d'autre solution (facile) que assurant que la LED sont suffisamment lumineux pour être en mesure d'utiliser l'approche de seuil donnée ci-dessus.

En ce qui concerne OpenCV: si vous savez ce que vous voulez faire, il est très difficile de trouver une fonction qu'il fait. Le plus dur est à venir avec une méthode pour résoudre le problème, pas le codage réel.

Autres conseils

Si les voyants sont stationnaires, le problème est beaucoup plus simple que quand ils sont en mouvement. Si l'on suppose qu'ils sont stationnaires, une solution pour trouver la fréquence pourrait simplement consister à maintenir un vecteur ou un tableau pour chaque emplacement de pixel dans lequel vous stockez les valeurs de ce pixel, de préférence après le pré-traitement décrit par kigurai, sur un certain laps de temps. Vous pouvez ensuite calculer la 1D transformée de Fourier ces vecteurs de valeur et de trouver la fréquence sol comme le premier élément important après le pic DC. Si le pic DC est trop faible, cela signifie qu'il n'y a pas conduit là.

Hope ce problème est encore un peu réelle, et que ma solution est logique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top