opencv 在前景蒙版中遇到分割对象时改进背景减除

kmbjn2e3  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(135)

在一个项目中,我使用中值背景估计实现了一个简单的背景减除,结果还不错,但是经常移动的物体(我的测试例子中的人)被切割成不相连的斑点。
我试着在前景遮罩上调用open和close操作(我删除了close操作,因为它看起来好像不会改善结果)来改善结果,这在一定程度上起了作用。但是,我想知道是否有更多的方法可以改善前景遮罩。它仍然离地面真相有一点距离。
我知道,调整阈值本身也是一个可行的解决方案,我也确实在调整。话虽如此,我还是专注于将噪声降到最低。我也尝试过自适应阈值,但在本用例中看起来前景并不乐观。
未打开:

随手开口:

我更多的是寻找通用的方法,而不是实际的实现。

背景减除的伪代码

1.灰度显示所有图像。
1.通过计算所有图像的子集中每个像素的每个r、g和b值的中值来进行背景估计。
1.然后取每个图像并计算该图像与背景估计之间的绝对差。
1.应用阈值以获得称为前景遮罩的二进制结果
1.使用opencvs打开操作一次。

r7xajy2e

r7xajy2e1#

我喜欢灰度简化。简单是好的。我们应该让一切尽可能简单,但不是更简单。
让我们来攻击一下你的模特。一个邪恶的服装设计师带着一群时装模特从你的摄像头前走过,每个人都穿着比前一个稍微深一点的红色衬衫。至少有一个模特在你的背景像素下是“隐形”的,穿着匹配的阴影,有匹配的照明,与中间像素值进行比较。对一组绿色衬衫重复上述步骤,然后是蓝色衬衫。
如何解决这个问题?在每个通道中计算红色、绿色、蓝色像素强度的中值。在推理时,计算三个绝对值的差值。对这些差值的最大值设置阈值。
计算传感器R、G、B是很简单的。人类的感知与H、S、V更接近。考虑计算这三个传感器或所有六个传感器的最大增量。
对于每个背景像素,计算整个视频或一分钟时间段的期望值和方差。现在,在推理时,方差将通知您的阈值决策,从而提高其准确性。
例如,有些像素的亮度可能是恒定的,有些像素会随着太阳的移动而缓慢变化,有些像素在风吹乱树叶时会产生很大的噪声。
要获得 * 更 * 强大的建模方法,请使用光流。https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html

相关问题