基于全变分(TV)与调和映射理论的图像修复系统
项目介绍
本项目是一款基于偏微分方程(PDE)理论的MATLAB图像修复系统。它集成了两种经典的数学模型:调和映射(Harmonic Inpainting)与全变分(Total Variation, TV)模型。系统通过数学建模,将图像受损区域的信息恢复视为一个扩散与演化的过程,旨在实现缺失像素的自然填充,使修复后的图像在视觉上保持连贯性。
功能特性
- 双算法并行修复:同步实现调和映射与全变分两种修复方案,便于对比不同数学模型对纹理和边缘的恢复效果。
- 多类型损伤模拟:
-
随机划痕生成:利用几何路径算法生成多条具有随机位置、长度和宽度的模拟划痕。
-
文字水印遮挡:通过图形渲染技术在图像上覆盖特定文字(如“ANTIGRAVITY”)作为复杂损伤掩膜。
- 收敛过程监控:系统实时计算并在最后绘制两种算法的能量泛函演化曲线,展示修复过程的数学收敛性。
- 局部细节对比:自动截取修复区域的局部放大图,直观展示算法对边缘保持和噪声平滑的处理能力。
实现逻辑与算法细节
该程序通过一套完整的数学流程实现自动化修复:
1. 预处理与掩膜构造
- 图像加载:读取内置灰度图像并进行归一化处理(映射至 [0, 1] 区间)。
- 掩膜(Mask)生成:
- 采用随机生成的直线坐标,配合剖面算法和形态学扩张逻辑构造不规则划痕。
- 建立隐形图形对象绘制指定文本,并将其通过重采样和阈值化处理转化为二值掩膜。
- 损伤注入:在掩膜覆盖区域注入随机噪声,模拟受损的初始状态。
2. 调和映射修复算法 (Harmonic Inpainting)
- 核心原理:在受损区域内求解拉普拉斯方程 $Delta I = 0$。
- 迭代方式:利用有限差分法,通过当前像素四周邻域(上下左右)的均值来更新受损点的像素值。其本质是一种线性各向同性扩散,能够平滑地填充空隙。
- 能量泛函:在迭代过程中计算狄利克雷积分(Dirichlet energy),反映图像的光滑程度。
3. 全变分修复算法 (Total Variation)
- 核心原理:基于 Euler-Lagrange 方程,通过最小化全变分能量泛函($L1$ 范数梯度)实现修复。
- 迭代方式:计算单位法向量的散度 $text{div}(nabla I / |nabla I|)$ 作为演化驱动项。相比调和映射,该方法通过非线性扩散机制,在保持边缘锐度方面表现更优。
- 数值稳定:引入微小量 $epsilon$ 处理分母,防止在梯度为零的平坦区域出现数值震荡。
4. 数据可视化分析
- 多维展示:主界面同时展示原始图、受损图、掩膜图以及两种算法的最终修复图。
- 归一化能量曲线:对比调和映射的 $L2$ 能量曲线与 TV 模型的 $L1$ 能量曲线,验证程序是否达到稳态。
- 局部细节切片:固定选取 80x80 像素的密集修复区进行三级对比展示。
系统要求
- 软件环境:MATLAB 2016b 或更高版本。
- 工具箱要求:
- Image Processing Toolbox(用于图像读取、剖面图生成、调整大小等操作)。
- 硬件配置:主流配置即可,修复 256x256 图像的迭代过程通常在数秒内完成。
使用方法
- 启动 MATLAB 软件。
- 将该程序及相关资源置于 MATLAB 当前工作目录。
- 直接运行主程序函数。
- 程序将自动进行图像降质、两种算法并行修复,并依次弹出修复流程全图及局部细节对比图。
- 修复参数(如迭代次数
iter_max、步长 dt)可在代码的“参数设置”部分自行调整以适应不同图像。