方向滤波器组子带图像反向采样工具
项目介绍
本工具主要用于处理方向滤波器组(Directional Filter Bank, DFB)分解后产生的子带图像。在DFB多级分解过程中,由于非对角采样矩阵的介入,生成的方向子带在标准直角坐标系下会呈现出形状畸变或倾斜。本项目通过实现反向采样(Back-sampling)算法,通过剪切变换(Shearing Transform)消除这些非对角采样效应,将子带图像重新映射为规整的对角采样结构。这对于后续的图像特征提取、视觉分析以及构建完整的轮廓波变换(Contourlet Transform)具有重要意义。
功能特性
- 多级方向支持:能够处理具有 2^n 个方向的子带集合,完美适配多级DFB分解结构。
- 自动化剪切校正:根据子带索引自动计算剪切偏移量,实现水平和垂直两个维度的精确对准。
- 周期性边界处理:在重采样过程中采用模运算实现周期性扩展,确保图像边缘信息的完整性。
- 直观对比可视化:内置模拟数据生成与对比展示功能,清晰呈现采样校正前后的视觉差异。
使用方法
- 环境配置:确保安装了 MATLAB 环境(推荐 R2016b 及以上版本)。
- 运行演示:直接执行主程序函数。程序将自动构造一个 3 层分解(8 个方向)的模拟数据集,并执行反向采样逻辑。
- 数据接入:在实际的图像处理流程中,可以将 DFB 分解得到的子带单元数组(cell array)作为输入传递给逻辑处理函数,获取重构后的对角化子带。
功能实现逻辑说明
主程序严格遵循以下逻辑步骤处理数据:
- 模拟数据构造:
程序首先生成特定大小的测试图像,并通过带有特定倾斜角度的余弦信号模拟 DFB 的方向特性。为了模拟真实的 DFB 分解输出,程序预先对这些信号施加了人为的剪切畸变,构造出非对角采样的模拟子带。
- 反向采样核心逻辑:
算法将输入的 n 个子带分为两大组进行处理:
- 第一组(前半部分子带):针对靠近水平方向的子带。计算每个子带相对于中心位置的偏移量 m,然后应用类型1(水平)剪切变换。
- 第二组(后半部分子带):针对靠近垂直方向的子带。同样计算偏移量 m,然后应用类型2(垂直)剪切变换。
偏移量 m 的计算基于子带在当前扇区中的相对位置,确保每个方向的子带都能精确地恢复到正交或近似正交的网格上。
- 剪切变换算法:
重采样函数基于偏移索引映射实现。对于水平剪切,每一行的像素会根据其所在行号和偏移系数进行水平位移;对于垂直剪切,每一列的像素会根据其所在列号进行垂直位移。所有索引均通过取模运算限制在图像尺寸范围内。
关键函数与算法分析
- 反向采样控制逻辑:
该函数是整个工具的大脑。它首先验证输入数据的合法性(必须是2的幂次方),然后通过分枝逻辑区分水平组和垂直组。这种分两部分处理的方法契合了 DFB 树状分解中扇区划分的数学本质。
- 剪切重采样算法:
实现上采用了 meshgrid 生成原始坐标网格,通过线性组合生成重采样后的索引矩阵。
- 水平模式公式:y[r, c] = x[r, mod(c + m*r, C)]
- 垂直模式公式:y[r, c] = x[mod(r + m*c, R), c]
这种整数阶的剪切变换不会改变图像的像素值,仅改变位置,因此是无损的重采样过程,保留了子带的高频能量分布。
- 可视化分析辅助:
为了验证算法有效性,程序提供了多维度的展示功能,不仅显示单个子带的放大效果,还通过网格化布局展示所有方向子带校正前后的全局对比,方便观察方向纹理是否从倾斜状态回归到规整状态。
系统要求
- 运行环境:MATLAB
- 依赖项:无需第三方工具箱,仅需标准函数库(支持 imshow, meshgrid, cell 等基本函数)。
- 数据输入:要求输入为包含 2^k 个二维矩阵的单元数组。