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



我已经对图像进行了二值化,并计算了它的黑白像素。像素计算后,计算黑色像素的比率,即R=(黑色像素的否/白色像素的否+黑色像素的no)*100。我必须用这个结果来声明一只眼睛是睁开的或闭合的,如果R>20%,那么眼睛处于睁开状态,否则就是闭合的。但当我计算这个比率时,它并不是我想要的。我认为在黑白像素的计算中可能会有一些错误,这是由于图像中不需要的黑色区域,或者可能是图像阈值的问题。我正在使用Otsu的方法对图像进行阈值处理。在这个主题上,我也尝试了`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

区域打开擦除表面小于您输入的参数的区域。在你的情况下,这可能不会有帮助。

我认为黑白比例不是解决办法。我会:

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

最新更新