从图像中去除高频垂直剪切噪声

时间:2012-02-10 19:38:47

标签: image-processing noise noise-reduction

我有一些扫描图像,扫描仪似乎引入了我以前从未遇到过的某种噪音。我想找到一种自动删除它的方法。噪音看起来像高频垂直剪切。换句话说,看起来像------------的水平线显示为/\/\/\/\/\/\/\/\/\,其中剪切的幅度和频率看似非常规则。

有人可以提出一种方法来执行以下步骤吗?

  1. 给定图像,识别剪切噪声的频率和幅度。可以假设它总是垂直的,特征频率高于图像中自然出现的其他频率。

  2. 鉴于上述参数,对图像应用相反的垂直周期剪切以消除此噪声。

  3. 了解如何使用免费提供的图像处理包实现的工具来实现这些功能也很有帮助。 (Netpbm,ImageMagick,Gimp,一些Python库就是一些例子。)

    更新:以下是来自具有此类失真的图像的示例。实际上,该样本显示剪切幅度在整个图像中不一定是均匀的。 :-( 原始图像的分辨率更高(600 dpi)。

    enter image description here

2 个答案:

答案 0 :(得分:0)

我对此问题的解决方案是使用FFT将图像转换为频域。结果将是两个矩阵:图像信号幅度和图像信号相位。这两个矩阵应具有相同的输入图像尺寸。

现在,您应该使用幅度矩阵来检测与噪声频率相对应的区域中的尖峰。请注意,此矩阵此角的左上角应对应于低频分量,右下角应对应于高频。

识别出尖峰后,应将相应的系数(振幅矩阵条目)设置为零。应用逆FFT后,您应该得到没有噪声的输入图像。

请提供示例图片,以便为您的问题找到更具体(实用)的解决方案。

答案 1 :(得分:0)

您可以先使用Hough fit或RANSAC来拟合线条。要使Hough工作,您可能需要使用高斯模糊或形态膨胀来“涂抹”这些点,以便在参数空间中为给定(rho,theta)线获得更多命中。

线条拟合后,您可以确定原始点与每条线的相对距离。根据该空间信息,您可以使用FFT查找帮助以找到“最佳拟合”空间频率,然后相应地向上/向下移动像素。

首先,您甚至可以跳过FFT并使用更多强力方法:

  1. 使用Hough或RANSAC找到最合适的线条。
  2. 确定线条的方向。
  3. 垂直于(名义上的)水平线进行采样,找到该列相对于最接近的最佳拟合线的点。
  4. 如果沿着一个样本的点平均距离其最佳拟合线的距离为+ N,则将该列中的所有像素(或沿着该垂直样本)移动-N。
  5. 如果剪切沿垂直样本一致,则这种技术应该有效,但不一定是从左到右。如果剪切总是完全垂直,那么找到水平线应该相对容易。

    从您的样本图像判断,看起来剪切可能在3向或4向交叉点与名义上垂直线段之间的水平线段上是一致的。您可以使用角点检测器或其他方法来查找这些交叉点,以限制像素移位操作发生的程度。

    我在这里发布的一种技术是找到水平延伸的暗像素的另一种方法,以防它们不在线上: Is there an efficient algorithm for segmentation of handwritten text?

    除此之外,您是否有机会修理扫描仪?