élipses obliques sur une image

Résolu
Kapway Messages postés 3 Date d'inscription mercredi 26 janvier 2011 Statut Membre Dernière intervention 4 février 2011 - 3 févr. 2011 à 16:51
Kapway Messages postés 3 Date d'inscription mercredi 26 janvier 2011 Statut Membre Dernière intervention 4 février 2011 - 4 févr. 2011 à 21:16
Bonjour,

Je souhaiterai pouvoir mesurer les tailles d'insectes sur une image en passant par un double décimètre qui me sert d'étalon.

J'ai déjà télécharger une source que je peux réutiliser et qui permet de tracer une élipse soit horizontale soit verticale...

L'idéal serait de pourvoir l'avoir sous tous les angles possibles afin de coller à la position de la bestiole.


Je me demandais aussi si c'est possible de stocker les données dans un tableau qui soit compatible avec excel... mais c'est secondaire :).


Merci d'avance :)

Kapway

4 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 févr. 2011 à 20:00
C'est possible si les insectes ne se "touchent" pas sur la photo.
C'est même possible avec des insectes de couleurs ( sauf les blancs ;)

1) Transformer l'image en niveaux de gris.
2) Transformer cette image en noir et blanc (chaque pixel d'un niveau de gris supérieur à une certaine valeur comprise entre 1 et 254 sera blanc, si inférieur sera noir. Dans ton cas, prendre environ 128 comme 'séparateur').
3) repérer les différentes masses de pixels noirs sur le bitmap ainsi obtenu.

Bref, pour le noir et blanc, un truc du genre (non testé) :

procedure RGBtoBlackAndWhite(const BMP:TBitmap; Separator:Byte);
  var     Grey,Col : TColor;
          i : Integer;
          Pix : pRGBQuad;
  begin
  BMP.PixelFormat := pf32bit;
  Pix := BMP.ScanLine[BMP.Height-1];
  for i:=1 to BMP.Width*BMP.Height do begin
    Grey := (Pix^.rgbRed + Pix^.rgbGreen + Pix^.rgbBlue) div 3;
    if Grey > Separator then Col := 255 else Col := 0;
    Pix^.rgbRed   := Col;
    Pix^.rgbGreen := Col;
    Pix^.rgbBlue  := Col;
    Inc(Pix);
  end;
end;


Pour repérer les masses de noir, c'est un peu plus compliqué. Il faut parcourir les pixels du Bitmap 'noir et blanc', et, à chaque pixel noir rencontré, il faut le mémoriser puis effectuer un Canvas.FloodFill avec clWhite.

_______________________________________
Soutenez Wikimédia France aujourd'hui : http://dons.wikimedia.fr
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 févr. 2011 à 18:15
Salut et bienvenue,

Si j'ai bien compris ton problème, je ne pense pas qu'une sélection elliptique soit la meilleure solution dans ton cas. Outre la difficulté à la coder (bien que ce soit possible), je crois que ce ne serait pas très pratique d'utilisation et plutôt limité dans les mesures.

Personnellement, j'opterais pour la solution suivante :
1) Une fonction qui calcule le rapport (20cm) / (distance en pixel) entre 2 clics consécutils sur l'image.
2) Une fonction qui mesure la distance en pixels entre 2 clics consécutils sur l'image.


Pour l'utilisation, dans un premier temps, il te suffira de cliquer sur le point zéro puis sur le point 20 cm de ton double-décimètre pour calculer le rapport donné par la 1ère fonction.
Ensuite, grâce à ce rapport et à la 2ème fonction, tu obtiendras automatiquement les distances en cm entre deux points cliqués sur la photo. Cela te permettra de mesurer n'importe quelle distance sur ton insecte, en long, en large et en travers.


_______________________________________
Soutenez Wikimédia France aujourd'hui : http://dons.wikimedia.fr
0
Kapway Messages postés 3 Date d'inscription mercredi 26 janvier 2011 Statut Membre Dernière intervention 4 février 2011
3 févr. 2011 à 18:58
Merci pour ta réponse :)


C'est ce que je me disais ...

Mais en oubliant l'élipse serait il possible de programmer une fonction qui repère automatiquement les insectes par différence de contraste** et qui les associent chacun à un point.

** => ils sont disposés sur fond blancs et ils sont noirs.
0
Kapway Messages postés 3 Date d'inscription mercredi 26 janvier 2011 Statut Membre Dernière intervention 4 février 2011
4 févr. 2011 à 21:16
Oki :) Merci beaucoup cela me semble parfait (je n'ai pas encore eut le temps pour tester cette méthode mais je ne doute pas qu'elle serat efficace :)
0
Rejoignez-nous