Question

J'ai regardé et regardé. Quelqu'un sait-il comment suivre blobs de Aforge? Je sais qu'ils ne l'ont pas mis en œuvre, mais je vraiment besoin d'utiliser Aforge en raison du reste du code que je utilise. J'ai vu une référence au filtrage de Kalman, mais j'ai besoin de mise en œuvre et non pas des théories.

TNX, v.

Était-ce utile?

La solution

Le AForge.NET BlobCounter fournira la conclusion de blob, mais il est assez simple et ne soutiendra pas cassé blobs. Si vous souhaitez implémenter un certain suivi blob simple, quelques choses que vous pourriez envisager:

  1. Si vos blobs sont parfois fragmentés, vous devrez peut-être effectuer un certain regroupement (trouver des groupes de centre d'emplacements de masse pour combiner de petits fragments) pour obtenir une bonne estimation de l'emplacement. Lors de l'analyse de plusieurs cadres, ce qui augmente les chances de rencontrer des conditions aux limites telles que blobs brisées, il est donc important de tenir compte. Sinon, si vous avez une bonne maîtrise des conditions (telles que l'éclairage), qui peut être suffisant. Minor pauses (seulement quelques pixels) peuvent être résolus avec des opérations répétées dilatation / érosion avant la découverte blob, mais cela peut aussi amplifier le bruit et réduire la précision de position.

  2. Pour le suivi réel, vous avez quelques approches. Le filtrage de Kalman peut vous donner une très bonne précision (sous-pixel), car il intègre des informations de plusieurs cadres. Si vous n'avez pas besoin de ce niveau de précision, vous pourriez envisager un algorithme très simple, comme toujours choisir le blob suffisamment grand qui était le plus proche du plus récent emplacement. Cela fonctionne si l'objet ne se déplace pas très rapidement et vous n'avez pas d'autres blobs apparaître près de votre objet d'un suivi. Si vous avez besoin de meilleures performances d'analyse, vous pourriez aussi être en mesure d'estimer la vitesse des deux dernières images et l'utiliser pour limiter la région que vous devez considérer lors de la recherche du blob.

  3. Si vous devez suivre un objet à grande vitesse, qui devient un peu plus difficile. Voici un cas où vous pouvez essayer de combiner blob conclusion avec le modèle de correspondance. Vous pouvez créer un modèle basé sur le blob trouver et correspondre au modèle contre les blobs suivantes score basé sur leur modèle et non pas seulement leur taille / emplacement. Cela nécessite que le blob semble sur le temps raisonnablement cohérent, ce qui signifie que la forme physique du modèle et les conditions d'éclairage doivent rester fixes.


Mise à jour en réponse à votre question:

seulement ont quelques minutes ce matin, donc pas de code réel, mais l'idée de base est la suivante:

  1. considérer seulement blobs supérieure à une taille configurable (vous aurez probablement de déterminer empiriquement.)

  2. conserver des informations sur les lieux deux blob trouvé et les temps où ils ont été échantillonnés. Appelons ces vecteurs dans R2, p1 et p0, parfois t1 et t0.

  3. Si l'on suppose que la vitesse est en train de changer lentement, puis une estimation préliminaire au temps t2 du nouvel emplacement p2 = p1 + (t2-t1) * (p1-p0) / (t1-t0). Cela peut ou peut ne pas être une bonne hypothèse, si vous voulez vérifier en capturant votre objet dans la gamme requise des mouvements.

  4. Vous pouvez éventuellement utiliser cette estimation pour restreindre votre zone de recherche de blob à un sous-image centrée sur la position estimée. Après avoir effectué la découverte de blob, prendre le blob qui est le plus proche de l'emplacement estimé que votre nouvelle mesure de l'emplacement.

Un effet secondaire de ce qui précède est que vous pouvez travailler avec l'estimation si, pour une raison quelconque, la découverte de blob échoue pendant une trame. Il est dangereux de laisser cette extrapolation trop longtemps, mais il peut vous donner une certaine tolérance pour les pointes de bruit mineur.

Vous pouvez probablement voir comment cela pourrait progresser d'inclure une estimation de l'accélération à partir d'images récentes ou d'intégrer la vitesse / accélération à partir de plusieurs images afin de mieux extrapoler un emplacement probable pour l'échantillon suivant. Vous pouvez également commencer à faire confiance que l'estimation (avec les données accumulées à partir des images actuelles et antérieures) est plus précis (et peut-être exact) que la mesure réelle. Finalement, vous liquidez avec quelque chose comme le filtre de Kalman.

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