从图像中去除高频垂直剪切噪声
Posted
技术标签:
【中文标题】从图像中去除高频垂直剪切噪声【英文标题】:Remove high frequency vertical shear noise from image 【发布时间】:2012-03-03 06:37:30 【问题描述】:我有一些扫描图像,其中扫描仪似乎引入了某种我以前从未遇到过的噪音。我想找到一种自动删除它的方法。噪声看起来像高频垂直剪切。换句话说,一条应该看起来像------------
的水平线显示为/\/\/\/\/\/\/\/\/\
,其中剪切的幅度和频率看起来很规律。
有人可以建议执行以下步骤的方法吗?
给定图像,识别剪切噪声的频率和幅度。可以假设它始终是垂直的,并且特征频率高于图像中自然出现的其他频率。
给定上述参数,对图像应用相反的、垂直的、周期性的剪切以消除这种噪声。
了解如何使用免费提供的图像处理包实现的工具来实现这些也会很有帮助。 (Netpbm、ImageMagick、Gimp、一些 Python 库就是一些例子。)
更新:这是一张来自具有这种失真的图像的示例。实际上,这个样本表明剪切幅度不需要在整个图像中保持一致。 :-( 原始图像的分辨率更高(600 dpi)。
【问题讨论】:
【参考方案1】:我对这个问题的解决方案是使用 FFT 将图像转换为频域。结果将是两个矩阵:图像信号幅度和图像信号相位。这两个矩阵应该具有与输入图像相同的维度。
现在,您应该使用幅度矩阵来检测与噪声频率对应的区域中的尖峰。请注意,此矩阵的左上角应对应低频分量,右下角对应高频分量。
识别尖峰后,应将相应的系数(幅度矩阵条目)设置为零。应用逆 FFT 后,您应该得到没有噪声的输入图像。
请提供一个示例图片,以便为您的问题提供更具体(实用)的解决方案。
【讨论】:
我在一本优秀的图像处理书籍中读到了这一点。峰值去除将是“擦除”幅度矩阵上最亮(可能是最暗,取决于惯例)的点,然后使用校正后的矩阵将图像转换回来。 图像处理手册 (CRC Press),第 6 版,第 6 章,图 6.26 - 去除周期性噪声 Alceu & heltonbiker,感谢您的建议。我已经考虑过这个选项,但我想到了以下问题。噪声不是累加的,如果它可以有效地表示为noisy image = true image + noise
,就会出现这种情况。它显示为垂直剪切,其中整个像素列以周期性方式上下移动,即noisy image = shear transform(true image)
。我认为通过应用另一个剪切变换而不是加法来消除噪声会更好地提高图像完整性。【参考方案2】:
您可以先使用 Hough 拟合或 RANSAC 拟合线条。为了使 Hough 工作,您可能需要使用高斯模糊或形态膨胀来“涂抹”这些点,以便在参数空间中为给定的 (rho, theta) 线获得更多命中。
一旦你有了线拟合,你就可以确定原始点到每条线的相对距离。从该空间信息中,您可以使用 FFT 帮助找到“最适合”的空间频率,然后相应地向上/向下移动像素。
首先,您甚至可以跳过 FFT 并使用更多的蛮力方法:
-
使用 Hough 或 RANSAC 找到最佳拟合线。
确定线条的方向。
垂直于(名义上的)水平线进行采样,找到沿该列相对于最接近的最佳拟合线的点。
如果沿一个样本的点与最佳拟合线的平均距离为 +N,则将该列(或沿该垂直样本)中的所有像素移动 -N。
如果剪切沿垂直样本是一致的,这种技术应该可以工作,但不一定是从左到右。如果剪切总是完全垂直的,那么找到水平线应该相对容易。
从您的示例图像来看,在 3 路或 4 路交叉点与标称垂直线段之间的水平线段上,切变似乎是一致的。您可以使用角点检测器或其他方法来查找这些交叉点,以限制像素移位操作发生的范围。
我在此处发布的一项技术是另一种查找水平延伸的暗像素以防它们不落在一条线上的方法: Is there an efficient algorithm for segmentation of handwritten text?
除此之外,您是否有机会修复扫描仪?
【讨论】:
谢谢!如果我有声誉,我会投票。这看起来很有帮助,尽管我首先必须阅读您建议的方法。修复扫描仪将是最简单的选择。不幸的是,它是图书馆里一个旧的、笨重的缩微胶片阅读器,我不相信普通人能修复它。 :-/ 不客气!如果您遇到困难,请告诉我,我会尽力提供帮助。以上是关于从图像中去除高频垂直剪切噪声的主要内容,如果未能解决你的问题,请参考以下文章