2017-07-15 50 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

但是當我拍攝另一張圖片時...它不適用於你的代碼。爲什麼? –

相關問題