2017-07-15 93 views
0

我想从图像中提取绿色区域(仪表显示)。在这里,我附上了一个数字电表的图像。我只想提取包含抄表值的区域。如果我只检测绿色区域,那么其他绿色区域也会被检测到,但是我只想检测包含抄表的绿色区域。我怎么能在MATLAB中做到这一点?如何检测绿色区域(仪表显示)并使用MATLAB进行裁剪?

close all; 
clear all; 
clc; 
Im = imread('2.jpg'); 
Im = imresize(Im, [512 512]); 
diff_im = imsubtract(Im(:,:,2),rgb2gray(Im)); 
figure,imshow(diff_im); 

Raw image

回答

1

只需二值化结果:

binary = imbinarize(diff_im, 25/255); % optimal threshold would be between 22 and 25 
figure,imshow(binary); 

您也可以用形态学操作之后玩,例如形态开放去除其他区域的剩菜。

+0

我不知道你做了二元化,为什么你设置了阈值25/255。请解释 –

+0

我对你的diff_im图像进行了二进制化,我使用25/255阈值,因为正如你可以在Matlab文档中看到的,imbinarize()总是预期阈值在[0; 1]的范围内,diff_im的值在范围内[0; 255] – KjMag

+0

但是当我拍摄另一张图片时...它不适用于你的代码。为什么? –