3

您好我正在尝试使用 MatLab 过滤包含 4 个对象的图像。我的第一张图像有一个黑色背景和白色物体,所以我很清楚通过使用 BW 标签找到这些大的白色部分并将它们与图像分离来过滤掉每个图像。

下一张图片虽然有噪点。现在我有一张白线穿过我的对象的图像,它们现在实际上是相互连接的。如何在 MatLab 中过滤掉这些行?椒盐噪声怎么样?是否有 MatLab 函数可以做到这一点?

4

2 回答 2

3

可以通过多种方式过滤噪声。典型的噪声过滤过程将是阈值>中值过滤>模糊>阈值。然而,关于噪声类型的信息对于适当的噪声过滤可能非常重要。例如,由于您的图像中有线条,您可以尝试使用霍夫变换来检测它们并将它们从游戏中取出(或houghlines)。另一种方法可以是实施RANSAC。对于椒盐噪声类型,应该使用具有适当窗口大小的medfilt2来捕获噪声特征(例如 3x3 窗口将很好地处理 1 像素大的噪声波动......)。

于 2012-09-27T01:27:20.987 回答
1

如果您可以忍受稍微扭曲对象,您可以使用带有一点对比度拉伸的闭合(形态)过滤器。您将需要图像处理工具箱,但这是总体思路。

  • 模糊以消除线条,否则关闭过滤器将删除您的对象。您可以使用fspecial创建一个高斯过滤器并使用imfilter来应用它
  • 使用imclose将关闭过滤器应用于图像,其蒙版大于您的噪声,但小于对象块(我在示例中使用了 3x3 菱形)。
  • 使用im2bw对图像设置阈值,以便每个像素都变成纯黑色或纯白色

我附上了一个我必须为学校项目做的例子。在我的例子中,背景是白色的,物体是黑色的,我在腐蚀和膨胀之间伸展。侵蚀后你看不到灰色,但它就在那里(因此有必要进行阈值处理)。

您当然可以直接进行关闭(腐蚀后膨胀),然后进行阈值。请注意此过滤如何扭曲对象。

仅供参考,通常使用移动平均滤波器清除椒盐噪声,但这会留下图像灰度。对于我的项目,我需要一个纯黑白(用于 BW 标签),并且形态过滤器可以很好地完全消除噪音。

形态过滤示例

于 2012-09-27T01:32:37.427 回答