要减去背景图像,您需要一个背景模型。最简单的模型是捕获的图像作为背景以及一些允许的偏差(+/- 0-255)。然后,在MATLAB中进行背景扣除非常简单:
image(find(abs(image-background)<= threshold))= 0;
当您使用统计模型时,这将变得更加困难,但是从本质上减去背景非常简单。不减法不是背景减法;它是一个减法滤镜,就像您在photoshop中可以找到的一样。它不在乎背景与前景,这会破坏重点。
由于背景扣除本身非常容易,因此问题更多地在于背景估计。这有点复杂,通常需要更多的帧和训练才能建立背景的统计模型(例如,将像素视为高斯分布或高斯的混合,或者查看光流来确定不动的东西)。
如果您可以访问技术文章(通过工作或学校),Wren等人的“ Pfinder:人体的实时跟踪”将提供一种非常简单的方法。或者,您也可以在Google中搜索单个高斯背景减法。这里有许多使用OpenCV实现的方法-> http://dparks.wikidot.com/source-code <-您可能会发现有用。
0
我正在寻找对图像进行背景扣除。我是MATLAB的新手,还是图像处理/分析的新手,所以抱歉,如果听起来有些愚蠢。 1)除了imsubtract()以外,还有其他方法可以进行背景扣除(除了将一幅图像与另一幅图像进行比较之外)? 2)在imsubtract()的Math Works 解释中 ,为什么将结构元素作为磁盘?到目前为止,这似乎相当困难,因为每次尝试尝试时,我不仅会减去嘈杂的背景,而且还会丢失想要查看的图像部分!