im试图从所附图像中识别特定色调的绿叶(例如海军蓝绿色(。我该如何以最有效的方式做到这一点?到目前为止,我正在将RGB转换为HSV,然后根据某个特定的饱和度和值范围对图像进行阈值处理,以隔离我想要的阴影。它在处理一些图像,而在其他图像上却到处都是。我想要一些可以在任何饱和度和值稍有不同的不同图像中隔离特定绿色阴影的东西(例如,如果照片是在光线过多的情况下拍摄的(图像链接
pic=imread('image.jpg');
q=rgb2hsv(pic);
H=q(:,:,1);
S=q(:,:,2);
V=q(:,:,3);
thresh=S>0.6111 & S<0.6666 & V>0.3888 & V<0.4583;
st=strel('diamond',20);
w=imdilate(thresh,st);
comps=bwconncomp(w,8);
num=comps.NumObjects;
fprintf('The number of leaves is %i',num)
%然后我试着在图像上有一些指针,向我展示matlab在哪里识别了阴影。m=区域道具(w,"中心"(;
boxes = cat(1, m.Centroid);
imshow(pic)
hold on
plot(boxes(:,1),boxes(:,2), 'b*')
hold off
我们将非常感谢您的帮助。
HSV颜色空间(嘿,S是饱和度和V值(,其中H将为您提供色调,或者CIE Lab颜色空间,其中欧氏距离将为您显示两个特定像素在颜色上的接近程度。
这个答案解释了如何对HSV进行处理:基于颜色(Matlab(分割图像中的像素
如果颜色非常接近(比如每片叶子中的绿色(,与CIE-LAB结合使用可能会有所帮助,但你应该给HSV一个