Je suis un cours de vision par ordinateur et j'ai cet exercice: écrire un programme qui, étant donné une image de la main, il peut reconnaître si la main est ouverte, fermée, dans un coup de poing, ou en tenant une posture "ok", en utilisant uniquement le techniques fournies jusqu'à présent (pixel 4/8 connecté, région connectée, recherche de contour, recherche de trous, propriété de blob comme le centroïde, zone, périmètre, excentricité, moments de l'image, transformation d'image comme inversion / puissance / log / correction gamma / étirement du contraste, histogramme calcul et égalisation).
Je l'ai fait avec certaines propriétés de base de la goutte (la main fermée a une faible excentricité, "ok" a un trou, la main ouverte a une grande différence entre la zone de l'ellipse inscrite dans la goutte et la zone de goutte elle-même avec une faible excentricité) .. Cela semble fonctionner mais la première image est un peu problématique.
Je pense qu'il pourrait y avoir quelque chose de plus pour rendre un algorithme plus robuste. Peut-être une sorte de propriété de moment? Certains axes / orientation / points extrêmes de blob pourraient-ils aider?
Images de test PS:
Réponses:
Vous pouvez essayer de regarder les moments invariants de Hu. Ils peuvent être construits à partir d'instants de base et sont invariants en rotation, échelle, réflexion et translation.
Calculez-les d'abord pour un ensemble de contours d'entraînement, puis appliquez-les au contour de test.
Il y a des implémentations dans Matlab et OpenCV, pour autant que je m'en souvienne.
la source
Selon le livre Programmation de la vision par ordinateur avec Python, une approche intéressante consiste à utiliser des fonctionnalités SIFT (aka HoG) denses sur vos images et à alimenter ces fonctionnalités à un classificateur.
Je ne l'ai pas essayé moi-même, mais cela semble assez bon comme approche. De plus, l'inventeur de la fonctionnalité HoG propose l' application Flutter qui fonctionnait assez bien dans mes tests, et ce serait très bizarre si l'inventeur n'utilisait pas ses propres fonctionnalités ou un dérivé proche.
la source
Un de mes amis l'a fait pour sa thèse de premier cycle. Il a essentiellement codé les propriétés de chaque geste. Par exemple, dans la première figure, prenez un masque rectangulaire sur les portions de la main. Les parties où la peau rencontre le bord du masque rectangulaire doivent être notées et marquées. Ensuite, les positions relatives du bord le plus grand et du bord plus petit peuvent être comparées.
Donc, pour pointer vers le haut, vous aurez un petit bord vers le haut et un plus grand bord au poignet.
Pour pointer latéralement, vous avez un bord plus petit d'un côté et un bord plus grand en bas.
Les directions peuvent à tout le moins être couvertes de cette façon.
la source