Image processing 如何从二值图像中去除不需要的黑色区域?

Image processing 如何从二值图像中去除不需要的黑色区域?,image-processing,Image Processing,我已经对一幅图像进行了二值化,并计算了它的黑白像素。像素计算后,计算黑色像素的比率,即R=(黑色像素的数量/白色像素的数量+黑色像素的数量)*100。我必须使用这个结果来声明一只眼睛是打开的还是关闭的,如果R>20%,那么眼睛处于打开状态,否则关闭。但当我计算这个比率时,它并不是我想要的。我认为在黑白像素的计算中可能会有一些错误,这是由于图像中不需要的黑色区域,或者可能是图像阈值的问题。我正在使用大津的阈值方法。 在查找这个主题时,我也尝试了`openInput=BWAREOPEN(bw,80)

我已经对一幅图像进行了二值化,并计算了它的黑白像素。像素计算后,计算黑色像素的比率,即R=(黑色像素的数量/白色像素的数量+黑色像素的数量)*100。我必须使用这个结果来声明一只眼睛是打开的还是关闭的,如果R>20%,那么眼睛处于打开状态,否则关闭。但当我计算这个比率时,它并不是我想要的。我认为在黑白像素的计算中可能会有一些错误,这是由于图像中不需要的黑色区域,或者可能是图像阈值的问题。我正在使用大津的阈值方法。 在查找这个主题时,我也尝试了`openInput=BWAREOPEN(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颜色空间中的简单颜色阈值)。因为你闭上眼睛的时候皮肤的比例会决定

你的问题不在于如何去除多余的黑色区域,而在于找到眼睛。为什么你认为这是正确的方法?请尝试google
opencv眼睛检测
以获得其他想法亲爱的joseph首先我在MATLAB中工作,其次我已经成功地从面部区域检测到眼睛。现在第三个部分是打开和关闭眼睛,但当我使用黑白比例进行此操作时,接近比率不符合要求,这就是为什么我认为正确识别黑白像素的原因