如何检测图像是否被部分遮挡?

时间:2014-08-20 03:07:48

标签: python opencv occlusion

我有大量的航拍图像。他们中的一些人将镜片部分遮挡。例如:

enter image description here

enter image description here

我尝试使用OpenCV自动检测哪些图像具有此功能。我最初的目的是检查多个图像中有多少图像是黑色的。但希望有一种聪明的方法可以单独为图像做这件事。

2 个答案:

答案 0 :(得分:1)

一个想法是确定图像上有多少个黑色像素。为此,我们可以创建一个空白蒙版,然后使用table1 <- c() for(i in 1:100) { for(z in 1:100){ table1 <- rbind(table1, c(i, z, i * z)) } } 将所有检测到的黑色像素着色为白色。从这里,我们可以用np.where计算蒙版上白色像素的数量,然后计算像素百分比。如果计算出的百分比大于某个阈值(例如2%),则图像会被部分遮挡。结果如下:

输入图像cv2.countNonZero掩码

->

Pixel Percentage: 3.33%
Occluded: True

代码

Pixel Percentage: 2.54%
Occluded: True

答案 1 :(得分:0)

我建议使用某种黑色像素的填充算法。通过检查大的(连接的)黑色区域,您可以识别这些区域。这种方法的优势在于您可以调整参数以获得积极性(例如,何时像素标记为黑色,连接区域必须有多大等)。