2011-03-06 2 views
1

Je suis nouveau à Matlab. J'ai une photo qui comprend un bâtiment, une personne, une petite rivière et quelques arbres. J'ai besoin de seuil de la bande verte (je suppose) pour détecter les arbres avec dilatation de l'érosion, etc. Cependant, je n'arrive même pas à faire un histogramme des couleurs de l'image. Tous les autres objets dans l'image ont aussi du vert dedans je pense (j'ai utilisé myImage (:,:, 2) 130) et pas seulement les verts, mais presque tous les autres objets étaient là dans l'image binaire (noir de la personne manteau, rivière etc.). Pouvez-vous me dire un moyen de le faire? Je veux d'abord obtenir un histogramme, mais je ne sais pas comment l'utiliser.Comment définir la valeur de seuillage pour la détection d'arbres dans Matlab?

myImage = imread ('myIm.JPG');

?? imhist (myImage); ne fonctionne pas.

Toute aide serait appréciée.

Si je parviens même à obtenir un histogramme, comment puis-je l'utiliser pour détecter les arbres? Puis-je à la fois passer le vert et les autres couleurs?

Répondre

0

Vous souhaiterez probablement d'abord convertir votre image dans un autre espace colorimétrique, comme le HSV. Vous pouvez faire quelque chose comme:

myImage = imread('myIm.JPG'); 
hsv_myImage = rgb2hsv(myImage); 
imhist(hsv_myImage(:,:,1));   %just look at the hue component of the image 

Ensuite, votre histogramme indiquera toutes les différentes teintes.

+0

Je l'ai fait, merci. J'ai utilisé myImage (:,:, 2) <130 pour prendre le groupe vert mais après cela, puis-je aussi éliminer myImage (:,:, 2)> 20 ou sth? Il y a beaucoup d'autres choses vertes (pas pour l'œil humain) dans l'image, je veux aussi les éliminer. – Ada

0

utilisez la fonction hist() dans matlab pour les images couleur

Questions connexes