2011-03-06 120 views
1

我是Matlab中的新成员。我有一张照片,里面有一座建筑,一个人,一条小河和一些树。我需要对绿色带进行阈值检测(我猜)可以检测到树木受到侵蚀扩大等。但是,我似乎甚至无法制作图像颜色的直方图。图片中的所有其他物体也都有一些绿色,我认为(我使用myImage(:,:,2)< 130),不仅绿色,而且几乎所有其他物体都存在二进制图片中(人的黑色外套,河流等)。你能告诉我一个办法吗?我想先得到一个直方图,但不知道如何使用它。如何设置在Matlab中检测树的阈值的值?

myImage = imread('myIm.JPG');

?? imhist(MYIMAGE);不起作用。

任何帮助,将不胜感激。

如果我甚至设法得到直方图,我该如何使用它来检测树?我可以选择绿色和其他颜色吗?

回答

0

您可能需要先将图像转换为另一种颜色空间,如HSV。 你可以这样做:

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

那么你的直方图将指示所有不同的色调。

+0

我做到了,谢谢。我使用myImage(:,:,2)<130取绿色带,但在此之后,我是否也可以像myImage(:,:,2)> 20或?照片中还有许多其他绿色的东西(不适合人眼),我也想消除它们。 – Ada 2011-03-06 16:30:17

0

在matlab中使用hist()函数获取彩色图像