MATLAB中的背景减法
image-processing
matlab
6
0

我正在寻找对图像进行背景扣除。我是MATLAB的新手,还是图像处理/分析的新手,所以抱歉,如果听起来有些愚蠢。 1)除了imsubtract()以外,还有其他方法可以进行背景扣除(除了将一幅图像与另一幅图像进行比较之外)? 2)在imsubtract()的Math Works 解释中 ,为什么将结构元素作为磁盘?到目前为止,这似乎相当困难,因为每次尝试尝试时,我不仅会减去嘈杂的背景,而且还会丢失想要查看的图像部分!

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

要减去背景图像,您需要一个背景模型。最简单的模型是捕获的图像作为背景以及一些允许的偏差(+/- 0-255)。然后,在MATLAB中进行背景扣除非常简单:

image(find(abs(image-background)<= threshold))= 0;

当您使用统计模型时,这将变得更加困难,但是从本质上减去背景非常简单。不减法不是背景减法;它是一个减法滤镜,就像您在photoshop中可以找到的一样。它不在乎背景与前景,这会破坏重点。

由于背景扣除本身非常容易,因此问题更多地在于背景估计。这有点复杂,通常需要更多的帧和训练才能建立背景的统计模型(例如,将像素视为高斯分布或高斯的混合,或者查看光流来确定不动的东西)。

如果您可以访问技术文章(通过工作或学校),Wren等人的“ Pfinder:人体的实时跟踪”将提供一种非常简单的方法。或者,您也可以在Google中搜索单个高斯背景减法。这里有许多使用OpenCV实现的方法-> http://dparks.wikidot.com/source-code <-您可能会发现有用。

收藏
评论

计算机视觉系统工具箱具有vision.ForegroundDetector对象,该对象实现了Stauffer和Grimson的GMM背景减法的一种变体。利用多个内核,实现速度非常快。请查看此示例 ,了解如何将背景减法用作跟踪多个对象的系统的基础。

收藏
评论

您使用哪种图像?

背景扣除很容易。如果要减去常数或与图像大小相同的背景,只需编写img = img - backgroundimsubtract仅需确保背景大于图像的任何地方的输出均为零。

背景估计很难。在那里,您需要知道您正在查看哪种图像,否则背景估计将失败。

例如,如果您的点或线要素要么在明亮的背景上都是黑暗的,要么在黑暗的背景上都是明亮的,则可以分别使用较大的局部最大滤镜( imdilate )或局部最小滤镜( imerode )通过而不是功能,因此无论您将滤镜放置在哪里,都有一些像素会覆盖背景。另外,您希望过滤器的形状与特征相似。对于您的情况,如果丢失了一部分图像,则可能需要尝试使滤镜变大(但不要太大)。

减去中位数而不是减去最大值或最小值,虽然您必须选择滤镜大小,以便滤镜蒙版中通常有大多数背景像素,但减去中值效果很好。不幸的是,中值滤波相当慢。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号