matlab - 检测噪声图像中的线条伪影

标签 matlab image-processing tomography-reconstruction

我正在对计算机断层扫描投影图像进行图像处理。我正在执行的处理会产生一种特定类型的伪影,它表现为一条穿过整个图像的垂直线:

Line artifact

我目前正在通过比较每列的平均值来检测它。如果平均值小于左侧和右侧列邻居的平均值的一半,则该列被视为线伪影。然后将其插值为左侧和右侧相邻像素的最大值。

插值效果很好(图像右侧),但检测过于临时。它也经常失败,因为许多仅包含黑色背景的列由于明显的严重泊松噪声而可以满足该条件。这会导致滤除下一阶段的噪声时出现伪影。我使用 BM3D 取得了很好的效果,并且不希望对整个图像进行中值滤波。

你能想出更好的方法来检测这些“线条伪影”吗?请注意图像中对象的强烈边界以及伪影中也包含的严重噪声。

最佳答案

  1. 我们想要找到图像中的垂直线,因此首先将图像与过滤器 [1 -2 1] 进行卷积。这将为低于其垂直邻居的像素提供较高的值。
  2. 对图像的所有列求和。
  3. 查找具有最大值的列的索引。这一栏是有问题的。

关于matlab - 检测噪声图像中的线条伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42278897/

相关文章:

python - 如何生成所有可能的二元 nxn 矩阵,其中每行的总和为 1

image - 使用 node.js 跨平台调整图像大小

mesh - 如何在 Avizo 中细化某些特定表面?

c - 项目 : Body Scanner, ACM 1993

matlab - Matlab的导入函数的范围是什么?

python - MATLAB : what is it doing, 中的 mrdivide 函数,如何在 Python 中执行?

c++ - opencv cvLine 方法不起作用

MATLAB 神奇的神秘时序行为

python - 如何将图像的蒙版部分叠加到新图像上?