哪种反卷积算法最适合从文本中删除运动模糊?

时间:2012-10-11 13:05:07

标签: c++ algorithm image-processing opencv

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

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

4 个答案:

答案 0 :(得分:6)

同意@TheJuice,你的问题在于PSF估计。通常为了能够从单帧执行此操作,需要对导致模糊的因素(对象的运动,传感器的运动类型等)进行若干假设。

您可以找到一些指针,尤其是关于单维案例的here。他们使用一种过滤方法,主要与模糊相关,丢弃原始图像的空间相关性,并使用它来推断运动方向和PSF。对于小模糊,你可能会认为运动是恒定的;否则你将不得不使用更复杂的加速运动模型。

不幸的是,手机模糊通常是CCD整合和非线性运动的复合(垂直于视线的平移,手腕运动的偏航和手腕周围的旋转),因此Yitzhaky和Kopeika的方法可能只会产生可接受的导致少数病例。我知道有一些方法可以解决这个问题(“深度意识”和其他方法),但我从来没有机会与它们打交道。

您可以使用Focus Magic等照片恢复软件预览结果。虽然他们不使用YK估算器(动作描述留给你),但剩下的工作流程必然非常相似。如果您的照片适合Focus Magic恢复,那么可能 YK方法将起作用。如果它们不是(或者不够,或者它们不够值得),那么即使尝试实现它也没有意义。

答案 1 :(得分:4)

运动模糊是一个难以克服的问题。

时获得了最好的结果
  1. 相机相对于场景的速度已知
  2. 您可以将许多模糊物体的照片关联起来。
  3. 您确实有一个主要优势,即您正在查看文本(通常构成高对比度功能)。如果您只对高对比度(我知道理论通常排除高对比度)区域应用去卷积,您应该得到的结果可以让您更好地识别字符。此外,前/后处理的锐化/模糊滤镜的组合可能有所帮助。

    我记得以前对this paper印象深刻。也许对其实施的改编是值得的。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

另一种看待这种情况的方法:想象你有5张照片。然后,您可以使用photoshop将图片混合在一起,平均每个像素的值。你现在可以从混合图片中以某种方式告诉原始的5张图片是什么吗?不,你不能,因为你没有这方面的信息。