MATLAB中的背景减法

eip*_*min 6 matlab image-processing background-subtraction

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

Jon*_*nas 5

你使用什么样的形象?

背景减法很容易.如果要减去常量值或背景与图像大小相同,则只需编写即可img = img - background.imsubtract只需确保背景大于图像的地方输出为零.

背景估计很难.在那里你需要知道你正在看什么样的图像,否则,背景估计将失败.

例如,如果您有明亮或暗背景上全黑的斑点或线条特征,则可以分别使用大于您的局部最大滤镜(imdilate)或局部最小滤镜(imerode).功能,因此无论您在何处放置滤镜遮罩,都会有一些像素覆盖背景.此外,您希望过滤器具有与特征类似的形状.在您的情况下,如果您丢失了部分图像,则可能需要尝试使滤镜更大(但不要太大).

除了减去最大值或最小值之外,减去中值可以很好地工作,但是你必须选择滤波器大小,使得滤波器掩码内通常有大部分背景像素.不幸的是,中值滤波相当慢.