1 pièce(s) jointe(s)
Découper une silhouette à des points particuliers
Bonjour à tous.
Comme indiqué dans le nom du topic, je suis débutant en matlab, et plus généralement en "codage". Je désirerai par le biais de ce topic connaître votre point de vue sur la tâche que je suis en train d'effectuer.
L'input de base de mon code est une matrice 500x215 contenant des valeurs comprises entre 0 et 1. Après un premier morceau de code, j'ai extrait la silhouette de ma personne que je souhaite maintenant découper selon certains points particuliers (par exemple le haut du crâne, l'entre-jambes, les coudes, les dessous de bras, les pieds...).
Voici la première partie qui m'a permis d'identifier le point de découpe situé dans l'entre-jambes.
coord_contour sont les coordonnées des points qui définissent le contour de la silhouette.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| %% Découpage de la silhouette en différentes parties.
taille_silhouette = max(coord_contour(:,1))-min(coord_contour(:,1));
idx = find(coord_contour(:,1)<taille_silhouette/2);
moitie_basse_corps = coord_contour(idx,:); %Représentée par la partie rouge sur l'image ci-dessous
largeur_silhouette = max(coord_contour(:,2))-min(coord_contour(:,2));
idx2 = find(moitie_basse_corps(:,2) < largeur_silhouette/2+15 & moitie_basse_corps(:,2) > largeur_silhouette/2-15);
entre_jambe = moitie_basse_corps(idx2,:); %Représenté par la partie verte sur l'image ci-dessous
idx3 = find(entre_jambe(:,1) == max(entre_jambe(:,1)));
point_de_decoupe = entre_jambe(idx3,:); %Petit carré noir sur l'image. |
Pièce jointe 152988
Après cette première découpe, j'en viens à me dire qu'il existe un risque d'instabilité de la méthode pour certaines silhouettes particulières (= pour certaines images de base, il est possible que le point de découpe soit mal calculé). De plus, déterminer certains points comme les dessous de bras risque de s'avérer plus difficile que pour l'entre-jambes.
Je m'interroge sur l'existence d'autres méthodes, plus "automatique", de détermination de certains points de la silhouette. En avez vous connaissances? Avez vous une idée qui me permettrait des résultats plus systématiques sur la détermination de mes points de découpe?
Question subsidiaire, étant autodidacte sur MATLAB, avez vous des conseils à me donner dans la rédaction de mon code? Voyez vous d'ores et déjà des points "déplaisants" dans ces quelques lignes?
Merci d'avance
Gooby