如何从二进制图像中删除不需要的黑色区域?

时间:2015-11-25 19:57:59

标签: image-processing

我已将图像二值化并计算其黑白像素。在像素计算之后,计算黑色像素的比率,即R =(no:黑色像素/ no:白色像素+ no:黑色像素)* 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 个答案:

答案 0 :(得分:0)

区域打开区域的表面小于您输入的参数。在你的情况下,它可能没有帮助。

我认为黑/白比率不是解决方案。我要么:

  • 检测虹膜(主题上有多个有效的文章/帖子,主要是使用霍夫变换),如果检测失败,则关闭眼睛。
  • 如果您有原始彩色图像,则使用皮肤检测(HSV颜色空间中的简单颜色阈值处理)。因为皮肤的比例会决定眼睛闭合的时间。