[DocRes] 对 Dewarping 中平滑的探讨
平滑如何抑制局部扭曲,又为何引入边缘变形
动机#
在原实现 ↗中,Dewarping 的模型输出会先加上基础坐标,再经过 15 次 3×3 均值滤波,得到效果较好的去扭曲图像。
这里被平滑的是完整的反向采样坐标图:它记录修复后每个位置应该从原图的哪里采样。平滑发生在 256×256 的预测网格上,之后才上采样到原图分辨率。
推测原实现采用多次平滑,可能有以下原因:
- 模型直接输出的坐标图存在局部不规则波动,对于文档类图片可能造成文字扭曲。
- 逐像素回归坐标并不直接保证相邻位置的变换一致,需要平滑补充这种约束。
- 纸张延展性差,除折痕等区域外,纸面的形变通常连续,邻近位置的采样关系也应平缓变化。
实验与分析#
为了观察平滑次数对去扭曲效果的影响,我测试了 [0, 1, 3, 5, 10, 15, 30, 60, 100] 这几种选项。
原图:
使用原版代码修复后:
修复效果较好,但是局部字句仍存在可见扭曲,且整张纸仍存在未展平的弯曲。
使用上述不同平滑次数,测试局部去扭曲效果:
可以看到,未经过平滑的输出极其扭曲,而经过 1 次平滑,字母级别的不规则扭曲大幅减轻。但即便到第 15 次,部分单词和句子仍然不直。
这支持了刚才 1. 的猜测:模型输出中存在可以被平滑有效抑制的局部波动。
此外,在这个样例中,进一步增加平滑次数到 100,局部字形仍有改善。当尝试到 1000 次时,边缘出现了明显的拉伸、放大:
要解释这种现象,可将均值滤波看作随机游走:对采样坐标图的每个分量,想象它的取值是一种可以流动的物质,每次均值滤波,相当于让物质向相邻位置扩散。这里的 3×3 均值滤波配合 cv2.BORDER_REPLICATE,可以理解为粒子如果试图离开网格,就留在对应的边缘位置。
这类似于一个有反射边界的离散扩散过程,其连续极限与热方程密切相关:
其中:
- 表示采样坐标图中某个分量的取值;
- 是扩散系数;
- 是拉普拉斯算子。
反射边界对应零通量(Neumann)边界条件:
意思是物质不能从边界流出。对于这里采用的滤波方式,各坐标分量的均值保持不变,但坐标之间的差异会逐渐减小。
在这个过程中,边缘的坐标梯度先趋于平缓,影响再逐渐向内部扩展。相邻的输出位置从原图中越来越接近的位置采样,就会把原图的一小段内容铺展到更大的输出区域,表现为局部拉伸、放大。
这里还有一个关键:平滑完整坐标图,与只平滑位移并不相同。
令 表示基础坐标, 表示模型预测的位移,则采样映射为:
记一次均值滤波为 ,那么原实现得到的是 ,而只平滑位移得到的是 。两者之差为:
在内部区域,对称均值滤波可以保持线性的基础坐标;但在复制边界处,这种线性变化会被改变。因此,即使位移为零,平滑完整坐标图也会在边界引入变形。
这说明,边缘异常不仅涉及模型的预测,也涉及平滑对象与边界条件的选择。若一直平滑下去,各坐标分量最终会趋于常数,整个输出便会采样到原图的同一位置。
一个推论:收敛速度
对于长度为 的一维数组,采用 点均值滤波和 REPLICATE,滤波矩阵的特征值为:
其中 .
最大的特征值:
对应常数坐标分量。
第二大的特征值:
当 很大时:
因此,低频的不均匀部分衰减的时间尺度大约正比于:
也就是说,滤波网格宽度扩大 10 倍,要达到相似的均匀程度,通常需要大约 100 倍的滤波次数。
这里的 是实际进行滤波的网格宽度。原实现固定在 256×256 的网格上平滑,因此,原始照片分辨率增加并不直接要求增加滤波次数。
思考#
我认为,均值滤波补充了模型输出中缺少的局部一致性约束,但是又未能纠正图像中的一些长程低频扭曲。它不仅抑制局部波动,也可能改变正确的采样关系,在边缘引入新的几何偏差。
因此,需要关心的不只是模型能否摆脱平滑,还包括平滑应该保留什么、消除什么。 真实折痕也可能包含高频变化,错误的整页弯曲也可能十分平滑,仅靠增加平滑次数无法区分二者。
进一步的工作可探讨增强模型自身输出的局部一致性,同时利用文档结构约束长程变形。这里的一致性也不能仅用“足够平滑”衡量:一个常数坐标图虽然极其平滑,却完全无法完成去扭曲。我们需要的是局部缩放、剪切合理,文字与页面结构都得到恢复的采样映射。
一些可以探索的方向:
- 利用文档排版的先验知识,约束同一文本行的基线平直、同一文本块的排版方向一致,为长程纠正提供目标。字母间距则应保留字体和排版本身的差异。
- 利用纸张延展性差的先验知识,通过共享控制点、连续网格或样条表示变形,增强邻近区域的联系。纸面的物理约束需要结合透视投影考虑,不能直接等同于图像平面上的局部刚性。
- 在训练中关注坐标场的局部导数,约束异常缩放、剪切和折叠,使逐像素的坐标精度与最终字形质量更一致。
- 根据区域特点调整平滑强度和边界处理方式,在抑制预测波动的同时保留真实形变。
可以留到未来进行的实验:
- 对恒等映射、已知仿射映射执行相同平滑,观察后处理自身引入的几何偏差。
- 对比平滑完整坐标图与只平滑位移的效果,并比较不同边界处理方式,分析边缘拉伸的来源。
- 在已知真实映射上加入不同尺度的误差,比较平滑消除了哪些误差,又改变了哪些正确变形。
- 在更多样例上比较不同平滑次数,分别观察页面中央和边缘,结合文本直线度、局部缩放、内容保留范围和 OCR 错误率评价结果。
这些实验可留到后续工作中进行,本文先记录不同平滑次数带来的现象及其分析。