8

我正在使用 OpenCV 处理手机拍摄的图片。图片包含文字,并且有少量运动模糊,我需要将其删除。

最可行的算法是什么?到目前为止,我已经测试了 Lucy-Richardson 和 Weiner 反卷积,但它们并没有产生令人满意的结果。

4

4 回答 4

6

同意@TheJuice,您的问题在于 PSF 估计。通常为了能够从单帧中做到这一点,需要对导致模糊的因素(物体的运动、传感器的运动类型等)做出几个假设。

您可以在此处找到一些指示,尤其是在单维情况下。他们使用一种过滤方法,主要从模糊中留下相关性,丢弃原始图像的空间相关性,并使用它来推断运动方向,从而推断出 PSF。对于小的模糊,您可以将运动视为恒定;否则您将不得不使用更复杂的加速运动模型。

不幸的是,手机模糊通常是 CCD 集成和非线性运动(垂直于视线的平移、手腕运动的偏航和手腕周围的旋转)的复合,因此 Yitzhaky 和 ​​Kopeika 的方法可能只会在少数情况。我知道有一些方法可以解决这个问题(“深度意识”等),但我从来没有机会处理它们。

You can preview the results using photo recovery software such as Focus Magic; while they do not employ YK estimator (motion description is left to you), the remaining workflow is necessarily very similar. If your pictures are amenable to Focus Magic recovery, then probably YK method will work. If they are not (or not enough, or not enough of them to be worthwhile), then there's no point even trying to implement it.

于 2012-10-11T21:03:31.453 回答
4

运动模糊是一个难以克服的问题。最好的结果是在

  1. 相机相对于场景的速度是已知的
  2. 您有许多可以关联的模糊对象的图片。

您确实有一个主要优势,因为您正在查看文本(通常构成高对比度特征)。如果您仅将反卷积应用于图像的高对比度(我知道该理论通常是排除高对比度)区域,您应该得到可以让您更好地识别字符的结果。此外,锐化/模糊滤镜前/后处理的组合可能会有所帮助。

我记得以前对这篇论文印象深刻。也许对他们的实施进行调整是值得一试的。

于 2012-10-11T16:26:46.923 回答
1

我认为您的点扩散函数的估计可能比使用的算法更重要。这取决于您要消除的运动模糊类型,线性运动可能是最简单的,但不太可能是您要消除的那种:我想它是曝光期间手部运动引起的非线性.

于 2012-10-11T20:33:20.363 回答
0

您无法消除运动模糊。信息将永远丢失。您正在处理的是一个 CCD,它将多个真实物体记录到一个像素上,并将它们涂抹在一起。换句话说,如果像素读数为 56,您无法神奇地确定实际读数在时间 1 时应为 37,在时间 2 时应为 62,在时间 3 时应为 43。

另一种看待这个问题的方式:假设你有 5 张图片。然后,您使用 Photoshop 将图片混合在一起,平均每个像素的值。你现在能从混合图片中以某种方式说出最初的 5 张图片是什么吗?不,你不能,因为你没有这样做的信息。

于 2012-10-11T20:20:34.173 回答