im试图从附加的图像中识别出特定的绿色叶子阴影(例如海军蓝)。我如何以最有效的方式做到这一点?到目前为止,我将RGB转换为HSV,然后根据某些特定的饱和度和值范围(将隔离所需的阴影)对图像进行阈值处理。它正在处理某些图像,而到处都是其他图像。我想要可以在饱和度和值略有不同的任何其他图像中隔离绿色的特定阴影的东西(例如,如果照片是用太多的光线拍摄的) Image link
Open_time Open High Low Close Volume \
0 2018-11-21 03:13:00 0.00000121 0.00000121 0.00000121 0.00000121 7231
1 2018-11-21 03:14:00 0.00000121 0.00000121 0.00000121 0.00000121 22162
2 2018-11-21 03:15:00 0.00000120 0.00000120 0.00000120 0.00000120 1000
3 2018-11-21 03:16:00 0.00000121 0.00000121 0.00000120 0.00000120 83247
4 2018-11-21 03:17:00 0.00000120 0.00000121 0.00000120 0.00000121 960188
Close_time Quote_AV TradesNo Taker_base Taker_quote \
0 2018-11-21 03:13:59.999 0.00874951 1 7231 0.00874951
1 2018-11-21 03:14:59.999 0.02681602 3 22162 0.02681602
2 2018-11-21 03:15:59.999 0.00120000 1 0 0.00000000
3 2018-11-21 03:16:59.999 0.10062838 7 73198 0.08856958
4 2018-11-21 03:17:59.999 1.15235355 5 12795 0.01548195
Ignore
0 0
1 0
2 0
3 0
4 0
%然后我尝试在图像上显示一些指针,以告诉我Matlab在哪里标识了阴影。 m = regionprops(w,'centroid');
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)
我们将非常感谢您的帮助。
答案 0 :(得分:0)
HSV颜色空间(嘿,S是饱和度和V值)(其中H将为您提供色调)或CIE-Lab颜色空间(其中欧几里德距离将为您提供2个特定像素彼此之间的接近程度)颜色。
此答案说明了如何针对HSV:Segment pixels in an image based on colour (Matlab)
如果颜色非常接近(例如每片叶子的绿色),则与CIE-LAB结合使用可能会有所帮助,但是您应该尝试一下HSV