Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 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
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 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
Kapway
Messages postés3Date d'inscriptionmercredi 26 janvier 2011StatutMembreDerniè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.