一、核心思想
古籍数字化过程中,因拍摄角度、纸张变形等因素,扫描图像普遍存在透视畸变——原本矩形的版框在图像中呈现为任意四边形。这种变形不仅影响版面的美观性,更严重干扰后续的文字识别、版面分析和出版还原。
合矩理论建立在这样一个观察之上:古籍版框在物理世界中是一规则的矩形,其在图像中的变形完全由透视投影引起,因此可以通过四个角点的对应关系,建立一个平面到平面的单应性变换,将变形的版框连同整幅图像一起精确地复原为标准矩形画布中的内容。
我们以“棉絮套被套”作为核心理解:原图中的版框如同柔软的棉絮,目标矩形如同固定尺寸的被套。校正过程即是将棉絮的四个角点对准被套的四个角点,通过适当的拉伸与压缩,使棉絮平整地填充被套。这种变换保留了版框内部所有内容的相对位置与比例关系,只改变版框的全局几何形状。
更为重要的是,校正并不局限于版框本身——图像的整个外围区域(即照片的“外框”)也同步参与变换。我们可以将整张原始图像看作一张照片,四周的背景是照片的一部分,而版框是照片中的主体。合矩校正好比将这张照片放入一个新的“相框”(画布)中,并且要求主体(版框)在相框内的位置和大小符合预设。为了达到这一目的,整张照片(包括四周的背景)都被拉伸、压缩或旋转,使得版框恰好对准目标矩形,而照片的四边则随之内缩或外扩。这种整体变换保证了图像的所有内容保持连续,没有割裂感,也使得背景得到自然的延伸或裁剪。这种“相框与照相”的直观理解,与“套被子”的核心思想相辅相成:套被子聚焦于版框的精准对齐,而相框比喻则强调整个图像边界的同步调整。
因此,合矩理论的本质是对整幅图像的透视变换,版框四角与目标矩形的对应关系驱动了变换参数的计算,而图像的所有其他区域(包括四周背景)依据同一变换被重新映射到画布上。这为后续的裁边与半页分割提供了完整的图像数据。
二、数学模型
2.1 问题形式化
给定输入图像 I(尺寸 W \times H),其上版框的四个角点(按顺时针排列):
依次对应:左上 A、右上 B、右下 C、左下 D。图像的外边界(外框)为 (0,0), (W,0), (W,H), (0,H)。
预设输出画布尺寸为 Wout × Hout,目标版框矩形尺寸为 Wrect × Hrect。目标矩形在画布中的四个角点为:
通常居中放置,即:
u₂ = u₁ + Wrect, v₂ = v₁
u₃ = u₁ + Wrect, v₃ = v₁ + Hrect
u₄ = u₁, v₄ = v₁ + Hrect
合矩理论的目标是找到一个映射函数 T: ℝ² → ℝ²,使得对于每个版框角点 pᵢ ∈ P 有 T(pᵢ) = qᵢ,并以此变换映射整幅图像到画布上。变换后的图像中,外边界(原图的四个角)被映射到画布的某四个点,可能超出或未充满画布,这正体现了“相框”中整个照片被重新摆放的过程。
2.2 透视变换(单应性变换)
平面透视变换(单应性)是满足上述要求的最一般平面变换。在齐次坐标下,变换可表示为:
其中 H 为 3×3 的单应性矩阵,具有 8 个自由度(通常设 h₃₃ = 1)。给定四对对应点 (pᵢ, qᵢ)ᵢ₌₁⁴,可建立 8 个线性方程,写成矩阵形式 Ah = b,其中 h = [h₁₁, h₁₂, h₁₃, h₂₁, h₂₂, h₂₃, h₃₁, h₃₂]ᵀ。该线性方程组可通过高斯消元或奇异值分解(SVD)求解。
2.3 逆向映射与整幅图像处理
在实际图像生成中,为避免前向映射(从原图到目标)可能产生的像素空洞问题,我们采用逆向映射策略:对输出画布中的每个像素 (u, v),计算其在原图中的对应位置 (x, y),然后通过插值获取颜色值。
这需要使用逆变换矩阵 Hinv = H⁻¹。根据四对点求解时,若交换源点与目标点的角色——以 Q 为源、P 为目标——则得到的矩阵直接就是所需的 Hinv。这是实现中的关键技巧:我们在构建方程组时,将目标矩形的角点作为输入、源四边形的角点作为输出,求解出的系数即为从画布到原图的逆映射。
设逆变换矩阵为:
此映射应用于画布上的每一个像素,因此整幅原图(包括版框外的所有背景)都通过同一变换被拉伸至画布空间。原图的四边 (0,0) 等点在变换后可能落在画布之外或之内,超出的部分被裁切,未覆盖的区域则填充为白色背景,如同照片被裁切或留白放入新相框。
2.4 四点自动排序
用户或检测算法提供的四个角点可能顺序任意。为确保映射的正确性,需要在计算变换矩阵前将点集排列为标准的顺时针顺序。
排序算法基于点的坐标几何特征:
- 左上角 A:在笛卡尔坐标系中,左上角的 x + y 值最小;
- 右下角 C:右下角的 x + y 值最大;
- 右上角 B:右上角的 x − y 值最小;
- 左下角 D:左下角的 x − y 值最大。
该方法对于旋转角度不超过 45° 的四边形具有完全的鲁棒性,且计算复杂度为 O(1)(仅需四次遍历比较)。
2.5 裁边与半页分割
校正后的画布通常含有大量白色背景,裁边操作用于去除这些多余的空白区域。设上、下、左、右裁边量分别为 ct, cb, cl, cr,裁切后的保留区域为:
为确保版框内容不被误裁,裁边量的上限为画布边缘到目标矩形相应边缘的距离。
半页分割依据版框的纵向中线。在裁剪后的坐标系中,版框左边界为 xleft,右边界为 xright。引入留边机制,允许在分割线两侧各保留指定像素的额外空间,左半页和右半页的最终保留区域分别为:
- 左半页:[0, min(xright + mleft, wcrop)]
- 右半页:[max(0, xleft − mright), wcrop]
其中 mleft 和 mright 分别为左、右留边距。
2.6 保持原图比例
当用户选择保持版框原始宽高比时,目标矩形的尺寸需根据源四边形的近似宽高进行调整。源四边形宽度和高度分别取对边的平均长度:
设原始目标矩形尺寸为 Wrect, Hrect,调整后的尺寸为:若 Wrect / Hrect > Wsrc / Hsrc,则 Wrect 调整为 Hrect · Wsrc / Hsrc;否则 Hrect 调整为 Wrect · Hsrc / Wsrc。此操作确保校正后版框不发生非等比拉伸,版框内文字和图案的比例保持真实。
三、系统设计
3.1 模块化架构
合矩理论指导下的校正系统由以下核心模块组成:
- 图像管理模块:负责加载图像(单张或 PDF 多页),缩放适配显示区域,管理页面导航。
- 交互标注模块:提供鼠标/触摸交互界面,支持四点点击、撤销、预览十字准星、画布缩放与平移。
- 透视变换模块:实现四点排序、单应性矩阵求解、逆向映射与图像重采样。
- 配置管理模块:维护画布、矩形、裁边、留边等参数,支持设置面板动态调整。
- 输出生成模块:根据当前参数和导出模式(左半/右半/全图),生成校正后的图像并保存。
- 项目持久化模块:将标注数据、配置参数序列化为 JSON 格式,支持项目保存与加载。
3.2 交互设计
标注工具的核心交互流程为:
- 上传图像(或打开 PDF)
- 单指按住并拖动以移动预览十字准星,另一指轻触确认角点
- 四个角点收集完毕后,自动按左上→右上→右下→左下排序
- 用户可选择“预览校正”查看透视变换效果
- 调整裁边、留边等参数后,选择保存左半或右半
为适应触摸屏操作,交互设计充分考虑了以下要点:
- 预览十字偏移:十字准星显示在手指正上方 80px 处,避免被手指遮挡
- 触摸行为控制:标记未满四点时,禁用画布的缩放与滚动,防止误操作;满四点后自动恢复自由缩放,方便查看细节
- 双指缩放:在未进入标记状态时,支持双指缩放查看高分辨率古籍页面
3.3 数据结构设计
整个项目的核心数据结构为标注字典,以文件名为键,存储每页的四点坐标或“skip”标记,以及全局配置参数。这种统一的 JSON 格式确保工作进度可以随时保存与恢复,也便于在不同计算机间协作。
3.4 批量处理流水线
对于 PDF 格式的古籍扫描件,系统支持以下批量处理流程:
- 使用 PDF.js 渲染 PDF 的每一页为图像
- 用户逐页标注四角,或标记为“空页”(封面、保护页等)
- 所有页面的标注数据统一存储
- 导出时,按有效页序列(跳过空页)交替输出右半和左半页,确保古籍半页的正确顺序
- 导出进度以进度条实时反馈,完成后生成合并的 PDF 文件
四、实现细节
4.1 单应性矩阵求解
在实现中,我们使用 NumPy 的 linalg.solve 函数求解 8 元线性方程组。构建方程组时,以目标矩形的角点为源点、源四边形的角点为目标点,直接得到逆映射矩阵,避免额外的矩阵求逆步骤。
求得系数后,使用 PIL 的 Image.transform 方法,指定 Image.PERSPECTIVE 模式并传入系数,即可完成变换。变换作用于原图的全部像素。
4.2 插值方法
为在变换质量与计算效率之间取得平衡,系统默认采用双三次插值(Image.BICUBIC)。对于高分辨率古籍图像,双三次插值能产生更为平滑的文本边缘,减少摩尔纹和锯齿。
4.3 画布背景处理
校正后的画布可能包含大片空白区域(当版框歪斜严重时,透视变换会拉伸背景)。为获得干净的输出,系统统一以纯白色填充画布背景。在预览界面中,裁边辅助线以红色虚线绘制,但输出图像中不包含这些辅助线。
4.4 批量导出优化
批量导出 PDF 时,系统采用以下策略优化性能:
- 分页渲染:逐页进行透视变换和裁切,而非一次性加载所有页面到内存
- 进度反馈:每完成一页即更新进度条,避免长时间无响应
- 错误容忍:单页失败不中断整个流程,最终报告完成情况
五、结论
合矩理论是一套完整、规范的古籍版框几何校正理论。其以透视变换为核心,通过四点对应建立单应性映射,将变形版框连同整幅图像一起复原至标准矩形画布中。我们以“套被子”为直观核心理解,以“相框与照相”为扩展,完整描述了版框拉正与外框同步处理的统一过程。该理论指导下的系统设计兼顾了操作的便捷性与处理的批量性,并以结构化的项目文件管理全过程。实现中充分考虑了精度、鲁棒性和用户体验,已在实际古籍数字化项目中得到验证和应用。
合矩理论不仅适用于古籍,亦可扩展至任何需要将透视变形矩形校正为规整矩形的场景,如文档扫描、铭牌识别、建筑摄影等。