MATLAB对数极坐标变换与图像配准辅助工具
项目简介
本项目是一个基于MATLAB开发的图像处理工具,专注于实现笛卡尔坐标系到对数极坐标系(Log-Polar Coordinates)的图像变换算法。该工具核心利用了对数极坐标变换的数学特性,将图像在笛卡尔坐标系下的旋转(Rotation)和尺度缩放(Scale)变换转化为对数极坐标域内的单纯平移(Translation)。
该项目不仅实现了高精度的前向和逆向变换算法,还包含了一个完整的演示流程,用于验证该变换在图像配准、计算机视觉特征提取(如虹膜识别)及抗几何失真匹配任务中的有效性。
功能特性
- 智能图像加载:自动检测环境,优先加载标准测试图像(peppers.png),若文件缺失则自动生成包含圆形图案的合成图像进行测试。
- 高精度前向变换:支持将任意分辨率的笛卡尔图像映射到对数极坐标域,采用“逆向映射”机制配合双线性或双三次插值,确保变换无空洞。
- 逆向重建变换:支持将对数极坐标图像还原回笛卡尔坐标系,用于验证信息的完整性及变换的可逆性。
- 几何不变性验证:内置仿真实验,通过对原图施加仿射变换(旋转45度+缩放0.8倍),验证了对数极坐标变换的“旋转-缩放”即“平移”特性。
- 定量位移分析:集成互相关(Cross-Correlation)算法,自动计算并输出变换前后图像在对数极坐标域中的像素位移量,实现对旋转角度和缩放因子的间接测量。
系统要求
- MATLAB R2014b 或更高版本
- Image Processing Toolbox(用于
imwarp, affine2d, normxcorr2 等函数)
使用方法
- 将项目文件下载至MATLAB工作目录。
- 直接运行
main 函数。 - 程序将自动执行以下流程并弹出两个可视化窗口:
*
窗口 1:展示原始图像、变换后的各向异性Log-Polar图像以及逆变换重建后的图像。
*
窗口 2:展示几何变换不变性分析。对比原图与旋转缩放后的图像,并显示两者在Log-Polar域中的视觉差异(表现为平移)。
- MATLAB命令行窗口将输出计算得到的垂直位移(对应旋转)和水平位移(对应缩放)。
核心算法与代码逻辑分析
本项目的所有逻辑均封装在单一脚本中,包含主流程控制和两个辅助功能函数。
1. 主流程控制 (Demo演示)
主程序分为两个主要演示部分:
演示 1:基本变换与重建
- 参数配置:设定Log-Polar域的分辨率为 256x256 ($M_{lp}, N_{lp}$)。
- 半径计算:动态计算最大半径 $r_{max}$ 为图像短边的一半,最小半径 $r_{min}$ 设为 1.0 以避免 $log(0)$ 奇异点。
- 变换执行:依次调用前向变换函数和逆向变换函数。
- 结果展示:在一个画布上并列显示原图、Log-Polar图和重建图,直观展示变换效果。
演示 2:旋转与尺度不变性验证
- 仿射变换模拟:构建一个包含旋转45度和缩放0.8倍的仿射变换矩阵 (
affine2d)。使用 imwarp 对原图进行处理,生成只有几何形变的目标图像。 - 同源变换:对“原图”和“变形后的图”分别执行Log-Polar变换。
- 互相关检测:将两个Log-Polar结果转换为灰度图,利用
normxcorr2 计算二维归一化互相关矩阵。 - 位移计算:通过查找相关性峰值 (
max(c(:))) 的位置,计算出两个Log-Polar图像在 $rho$ 轴和 $theta$ 轴上的相对像素位移。 - 控制台输出:打印具体的像素位移值,验证理论:$theta$ 轴位移对应旋转,$rho$ 轴位移对应缩放。
2. 前向变换函数 (myLogPolarTransform)
该函数实现了从笛卡尔坐标 $(x, y)$ 到对数极坐标 $(rho, theta)$ 的映射。
- 逆向映射机制:为了避免图像出现空洞(即目标像素没有对应的源像素),算法遍历目标图像(Log-Polar图)的每一个像素坐标。
- 网格生成:
* 创建目标网格索引
grid_theta (1~N) 和
grid_rho (1~M)。
* 将索引线性插值映射到物理空间:$theta in [0, 2pi)$,$rho in [log(r_{min}), log(r_{max})]$。
利用公式 $r = e^rho$ 计算半径,随后反解出源图像的笛卡尔坐标:
$X_{src} = e^rho cdot cos(theta) + C_x$
$Y_{src} = e^rho cdot sin(theta) + C_y$
- 插值采样:使用
interp2 根据计算出的非整数源坐标对原图进行采样(支持多通道),超出边界的区域填充为黑色(0)。
3. 逆向变换函数 (myLogPolarInverse)
该函数实现了从对数极坐标 $(rho, theta)$ 重建笛卡尔图像的功能。
遍历目标笛卡尔图像的每一个像素 $(x, y)$,计算其相对于中心的距离 $r$ 和角度 $theta$ (
atan2 计算)。
* $rho = log(r)$。
* 将物理量 $rho$ 和 $theta$ 映射回 Log-Polar 图像的浮点索引坐标 $(u, v)$。
创建一个逻辑掩膜,仅对满足 $r_{min} le r le r_{max}$ 的像素进行插值计算,其余部分保持背景色,从而形成重建图像中的圆环状结构。
利用计算出的索引 $(u, v)$ 在输入 Log-Polar 图像上进行
interp2 插值,恢复原始图像细节。
关键技术细节
- 插值方法的选择:代码中灵活使用了
linear(双线性)和 cubic(双三次)插值,以平衡计算速度和图像平滑度。 - 极坐标边界处理:在生成 $theta$ 网格时,代码特意去除了 $2pi$ 的终点(
theta(end) = []),以防止 $0$ 和 $2pi$ 处的数据重叠冗余。 - 灰度处理:在进行互相关计算时,代码自动判断输入是否为RGB图像,并先转换为灰度图再进行矩阵运算,保证了算法的通用性。
- 仿射变换参考系:在执行
imwarp 模拟旋转缩放时,通过调整 OutputView 的世界坐标限制,确保了变换后的图像保持以中心为基准,避免图像被裁切出视野。