2015-11-25 45 views
0

我已經二進制化了一個圖像並計算出它的黑白像素。在像素計算之後,計算黑色像素的比率,即R =(黑色像素的數量/黑色像素的數量:黑色像素的數量:黑色像素的數量)×100。如果R> 20%,那麼我必須使用這個結果來宣佈眼睛是打開或關閉的,然後眼睛處於打開狀態,否則關閉。但是當我計算這個比例時,它並不是我想要的。我認爲在計算黑白像素時可能會出現一些錯誤,這是由於圖像中不需要的黑色區域,或者可能會影響圖像的閾值。我使用Otsu的方法來確定image的閾值。 在尋找這個主題時,我也嘗試`openInput = bwareaopen(bw,80),但是這並不適用於刪除不需要的黑色區域。請幫助我去除不需要的區域。如何從二值圖像中刪除不需要的黑色區域?

close all 
clear all 
I=imread('op.jpg'); 
I=rgb2gray(I); 
thres_level=graythresh(I); % find the threshold level of image 
bw=im2bw(I,thres_level); % converts an image into binary 
figure, imshow(bw); 
totnumpix=numel(bw); % calculate total no of pixels in image 
nwhite_open=sum(bw(:)); % calculate the black pixels in image; 
nblack_open=totnumpix-nwhite_open; %calculate white pixels in image; 
R=(nblack_open/(nblack_open+nwhite_open))*100 
+1

你的問題不是如何去除不需要的黑色區域,而是找到眼睛。你爲什麼認爲這是正確的方法? 嘗試谷歌'opencv眼睛檢測'得到一些其他的想法 –

+0

親愛的約瑟夫首先,我在MATLAB工作,其次我已經成功地從臉部區域檢測到的眼睛。現在第三部分是對開啓和關閉眼睛進行跟蹤,但是當我這樣做時,使用黑白比例的方式比例不是按照要求來的,這就是爲什麼我認爲它能夠正確識別黑白像素 – usman

回答

0

區域打開擦除區域的面積小於您輸入的參數。在你的情況下,它不會有幫助。

我認爲黑/白比例不是解決方案。我會:

  • 檢測虹膜(多個有效的論文/帖子上的主題,主要是使用霍夫變換),如果檢測失敗,然後關閉眼睛。
  • 如果您有原始彩色圖像,則使用皮膚檢測(HSV顏色空間中的簡單顏色閾值)。因爲當你閉上眼睛時你會決定皮膚的比例。
相關問題