1

我需要在 Java 中实现一个方向加权中值滤波器来消除随机脉冲噪声。我不知道如何/从哪里开始。算法如下:

  1. 创建一个 5x5 窗口
  2. 从中心像素(每个方向 5 个像素)考虑 4 个方向(垂直、水平、左对角线、右对角线)
  3. 计算加权差并取最小值
  4. 最小值与阈值进行比较:
    如果值 > 阈值:它是噪声像素
    else:它不是噪声像素
  5. 计算每个方向5个像素的标准差
  6. 对标准差最小的方向给予额外的权重,计算加权中位数
  7. 嘈杂的像素被这个中值替换
  8. 在整个图像中移动窗口
  9. 重复步骤 8 到 10 次

任何人都可以指出我应该如何实现这一点的正确方向吗?任何示例或实现的代码都将受到高度赞赏。我正在使用 ImageJ,所以任何实现了这个过滤器(或它的变体)的插件都会非常有帮助。谢谢。

4

1 回答 1

0

显然,这个过滤器还没有作为 ImageJ 插件实现。不幸的是,我在您链接到的出版物中也找不到任何来源。除非您直接向作者询问他们的代码,否则您必须根据已发布的描述自行实现过滤器。

您可以从ImageJ 插件页面中列出的其他过滤器的实现(和来源)开始。我建议实现ExtendedPlugInFilter接口。

或者,您应该考虑使用ImgLib ,它是Fiji中包含的通用图像处理库,并且是未来ImageJ2的核心模型。您可以在斐济邮件列表 (fiji@fiji.sc) 上获得更多帮助。

于 2013-06-17T16:26:23.713 回答