基于改进菱形模板三步法的快速块匹配运动估计系统
项目简介
本项目实现了一种高效的块匹配运动估计(Motion Estimation, ME)系统,核心在于对传统三步搜索法(Three-Step Search, TSS)进行了改进。系统通过MATLAB仿真,对比了全搜索算法(Full Search, FS)与改进后的菱形模板三步法(Improved TSS with Diamond Template)在计算效率和重建质量上的差异。
该算法的主要创新点在于优化了三步法的最后一步精细搜索阶段:将传统的正方形8邻域搜索替换为菱形小模板(Small Diamond Search Pattern, SDSP),即仅搜索上下左右4个相邻点。这种改进利用了运动矢量分布的中心偏移特性,旨在保证搜索精度的同时,进一步减少搜索点数,显著降低计算复杂度。
功能特性
- 合成测试数据生成:内置图像生成功能,可动态创建含噪声的合成运动图像序列(参考帧与当前帧),模拟物体平移运动,无需外部视频文件即可运行。
- 全搜索算法 (FS):作为性能基准,在设定的搜索窗口内遍历所有可能位置,寻找全局最优匹配块。
- 改进三步搜索法 (ITSS):
* 采用由粗到细的多步搜索策略。
* 引入菱形模板(Diamond Template)优化最后一步搜索,减少冗余计算。
*
时间消耗:精确统计各算法的运行耗时。
*
计算复杂度:统计平均每个宏块的搜索点数。
*
图像质量:计算峰值信噪比(PSNR)评估重建图像质量。
*
残差分析:生成并可视化无运动补偿、FS补偿及ITSS补偿后的残差图像。
* 原始输入图像对比。
* 基于Quiver图的运动矢量场可视化。
* 重建图像与残差热力图对比显示。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(推荐,用于图像显示和基本处理)
使用方法
- 确保MATLAB环境已准备就绪。
- 直接运行主脚本文件。
- 系统将自动执行以下流程:生成测试图像 -> 执行FS算法 -> 执行ITSS算法 -> 进行运动补偿 -> 计算PSNR -> 输出控制台统计数据 -> 绘制结果图表。
详细功能与算法实现逻辑
本项目的主程序完整包含了从数据准备到算法对比分析的全过程,具体实现逻辑如下:
1. 参数设置与数据生成
程序首先定义了宏块大小(Block Size)为16x16像素,搜索范围参数 p 为7(即搜索窗口为 [-7, +7])。
为了方便测试,程序内部集成了一个图像生成函数。该函数创建一个黑色背景,并在特定位置绘制一个白色方块。系统生成两帧图像:
- 参考帧:方块位于初始位置 (100, 100)。
- 当前帧:方块向右下方移动了 (dx=5, dy=3)。
- 为了模拟真实环境,两帧图像均添加了高斯噪声。
2. 运动估计核心算法
程序通过模块化函数实现了两种核心算法,均使用平均绝对差(MAD)作为匹配准则(Cost Function):
全搜索算法 (Full Search, FS)
- 对图像中的每一个宏块,在以当前块位置为中心的 [-p, p] 窗口内,遍历每一个可能的像素偏移位置。
- 计算每个位置的MAD值,通过比较找到最小Cost对应的偏移量作为最佳运动矢量(MV)。
- 此方法虽然能找到全局最优解,但计算量巨大,用于作为本项目性能对比的基准(Ground Truth)。
改进菱形模板三步法 (Improved TSS with Diamond)
该算法旨在通过减少搜索点数来加速估计,具体步骤如下:
- 初始中心:以 (0,0) 为起始搜索中心。
- 第一步:设定搜索步长 S=4。检查中心点及其周围矩形分布的8个点(共9点)。找到Cost最小的点作为新的搜索中心。
- 第二步:设定搜索步长 S=2。以上一步的最佳点为中心,再次检查周围矩形分布的8个点。更新最佳中心位置。
- 第三步(核心改进):不仅步长减小,且模板形状改变。使用菱形小模板(Small Diamond Template),仅检查中心点及“上、下、左、右”四个相邻位置,而非传统的正方形8邻域。
- 最终将第三步得到的最佳点确定为最终运动矢量。
3. 运动补偿与图像重建
根据计算得到的运动矢量场,程序执行运动补偿操作。对于每一个宏块,根据其对应的运动矢量,从参考帧中提取像素块并拼接到预测帧的相应位置,从而重建出当前帧的预测图像。
4. 性能指标计算
程序通过以下指标定量分析算法性能:
- 残差计算:分别计算“当前帧与参考帧”、“当前帧与FS重建帧”、“当前帧与ITSS重建帧”之间的像素差值绝对值。
- PSNR:计算图像的峰值信噪比,数值越高代表重建图像失真越小。
- 耗时对比:利用
tic/toc 记录两种算法的实际执行时间。 - 搜索效率:通过代码逻辑统计实际进行的块匹配计算次数(FS理论值为固定的,ITSS为动态统计)。
5. 结果可视化
程序最后会生成三个图形窗口:
- 原始图像:显示添加噪声后的参考帧和当前帧。
- 运动矢量场:在参考帧上使用箭头图(Quiver Plot)绘制ITSS算法计算出的运动矢量方向和大小,直观展示物体的运动趋势。
- 综合对比图:包含2x3的子图矩阵,分别展示:
* 目标当前帧。
* FS算法重建图及其PSNR。
* ITSS算法重建图及其PSNR。
* 无运动补偿的帧差图。
* FS算法的残差图(伪彩色显示)。
* ITSS算法的残差图(伪彩色显示)。
总结
该系统清晰地展示了改进型三步搜索法如何在牺牲极小精度(微小的PSNR下降)的情况下,通过大幅减少搜索点数(尤其是利用菱形模板优化精细搜索)来实现极高的计算效率提升。