哪种反卷积算法最适合消除文本的运动模糊?

8
我正在使用OpenCV处理用手机拍摄的图片。这些图片包含文本,并且存在轻微的运动模糊,需要去除。
什么是最可行的算法?我已经测试了Lucy-Richardson和Weiner去卷积算法,但它们没有产生令人满意的结果。

你找到了任何有效可行的解决方案吗?还是只是采用了被接受的答案? - Innat
4个回答

6
同意@TheJuice所说,你的问题在于PSF估计。通常情况下,要从单帧中进行这样的操作,需要对导致模糊的因素(物体运动、传感器的运动类型等)做出一些假设。
你可以找到一些指针,特别是在单维情况下,这里。他们使用一种过滤方法,主要保留了模糊的相关性,舍弃了原始图像的空间相关性,并利用此来推断运动方向和PSF。对于小的模糊,您可能可以将运动视为恒定;否则,您将不得不使用更复杂的加速运动模型。
不幸的是,手机模糊通常是CCD积分和非线性运动(垂直于视线的平移、手腕运动的偏航和手腕周围的旋转)的复合体,因此Yitzhaky和Kopeika的方法可能只能在少数情况下产生可接受的结果。我知道有处理这种情况的方法(“深度感知”等),但我从未有过处理它们的机会。
您可以使用像Focus Magic这样的照片恢复软件预览结果;虽然它们没有使用YK估计器(运动描述由您自己完成),但其余的工作流程必然非常相似。如果您的图片适合使用Focus Magic恢复,则可能 YK方法将起作用。如果它们不行(或者不足够好,或者不值得),那么就没有尝试实现它的必要了。

我在我的一个测试样本上尝试了Focus Magic,并得到了这个输出结果。我使用的参数是步长6和70度,但输出结果似乎实际上稍微更差了一些。您认为YK能否做得比那更好? - sashoalm

4
运动模糊是一个难以克服的问题。最好的结果是当相机相对于场景的速度已知且您有许多模糊对象的图片可以进行相关性比较时获得的。您有一个重要的优势,即您正在查看文本(通常构成高对比度特征)。如果您只将去卷积应用于图像的高对比度区域(我知道理论上通常会排除高对比度区域),则应该可以获得更好地识别字符的结果。此外,前处理/后处理的锐化/模糊滤镜的组合也可能有所帮助。我记得以前被这篇论文印象深刻。这个链接,也许他们实施的适应性值得一试。

1

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


是的,它是非线性的。当人们按下相机按钮时,他们的手在实践中似乎加速了相机。因此肯定存在非线性组成部分。 - sashoalm

0

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

另一种看待这个问题的方式是:想象你有5张图片。然后使用Photoshop将这些图片混合在一起,平均每个像素的值。现在你能从混合后的图片中得知原始的5张图片吗?不行,因为你没有足够的信息来做到这一点。


7
如果您能够估算出点扩散函数(PSF),那么就可以应用去卷积算法(正如原帖标题所述)来增强图像。 - TheJuice
我猜这取决于你对“增强”的定义。实际上,你无法以任何正常人认为是显著改进的方式去除图像模糊。仅当你有已知信号转换时,反卷积才具有实际意义。运动模糊是一个高度混沌的函数,你将无法确定其有用程度,除非在某些人为的实验室示例中。 - Tyler Durden
1
一个典型的来自真实世界的数字图像有很多冗余,这就是为什么你可以从许多转换中恢复,即使这些转换在应用于最大熵图像时也会造成不可逆信息损失。 - enobayram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接