基于彩色结构张量的鲁棒光照不变性边缘检测系统
项目介绍
本项目实现了一种基于彩色结构张量(Color Structure Tensor, CST)的鲁棒边缘检测系统。该系统主要参考了 J. van de Weijer 关于准不变算子(Quasi-invariants)的理论研究,核心目标是解决计算机视觉中常见的由于光照变化(如阴影、遮挡、高光)导致的边缘误检问题。通过构建彩色图像的微分准不变特征,系统能够区分物质边缘(物体材质改变)与光照边缘(几何光照改变),从而在复杂环境下提供更为精确的特征提取,广泛适用于目标跟踪、图像分割及特征描述等领域。
功能特性
- 多尺度高斯导数计算:利用可调尺度的高斯核提取图像的空间梯度信息,确保系统对噪声的抑制能力。
- 彩色结构张量分析:综合 RGB 三通道的梯度信息,通过结构张量积分平滑处理,捕捉图像的局部几何结构。
- 阴影与遮挡准不变性:通过将颜色梯度投影到与当前像素颜色方向正交的空间,消除阴影和遮挡导致的变化,仅保留材质边缘。
- 高光不变特征提取:利用对等颜色空间(Opposition Color Space)变换,排除由于高光反射引起的视觉干扰。
- 主分量方向场分析:计算张量特征向量的方向角,可视化图像局部的能量分布方向。
- 鲁棒边缘二值化:结合准不变特征,提取对比度鲁棒的物体轮廓。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 依赖工具箱:Image Processing Toolbox(图像处理工具箱)。
- 硬件要求:标准的桌面级计算配置即可,系统内存建议 4GB 以上以处理高分辨率图像。
使用方法
- 初始化:在 MATLAB 命令行窗口中运行入口函数。
- 图像加载:系统会自动尝试从 MATLAB 路径加载演示图像(peppers.png)。如果找不到该文件,系统将自动生成一个包含红绿块的合成图像进行演示。
- 参数配置:用户可以在代码逻辑起始处根据实际情况修改高斯导数尺度(sigma_deriv)和积分平滑尺度(sigma_integ)。
- 结果查看:运行结束后,系统会弹出一个包含六个子图的可视化窗口,展示从原始图像到最终二值化结果的完整处理流程。
核心算法实现逻辑
该系统的主要处理逻辑分为以下步骤:
1. 空间导数计算
系统通过一维高斯核及其导数的组合,利用分离卷积(Separable Convolution)技术计算 RGB 各通道在 X 和 Y 方向的空间偏导数。这种方式相比直接使用差分算子具有更好的抗噪性和尺度可调性。
2. 标准彩色结构张量构建
系统计算梯度的外积并进行多通道累加,构造 2x2 的对称矩阵 Field。随后应用空间积分滤波器(高斯平滑),获取宏观的张量特征。通过求解该张量的特征值,提取反映局部能量强度的边缘指标。
3. 阴影/遮挡不变算子推导
系统获取每个像素的单位颜色向量,将彩色导数向量减去其在颜色方向上的分量。这一操作在几何上等同于去除了亮度和强度的改变,只保留了颜色方向的变化。由此计算出的张量特征值能够有效地在强阴影和遮挡区域保持边缘的连续性。
4. 高光不变算子推导
系统引入了对等颜色空间的概念。通过计算 (R-G) 和 (R+G-2B) 方向的导数,实际上构建了一个准色调(Hue-like)特征空间。在这个空间中,白色高光的梯度由于在各通道表现一致而被大幅抵消,从而提取出不受高光干扰的本质特征。
5. 方向场与结果可视化
系统利用张量分量计算主特征向量的偏角,反映了图像纹理的走向。通过归一化处理和阈值分割,将复杂的物理特征转化为直观的边缘检测二值图。
关键函数与细节分析
高斯偏导数函数 (gaussian_derivatives)
该函数实现了高斯滤波与微分的耦合。通过计算 1D 高斯系数和 1D 高斯导数系数,采用两次一维卷积代替一次二维卷积,极大地提升了计算效率。其计算公式遵循图像与高斯核导数的卷积原理:Ix = I * dg(x) * g(y)。
对称矩阵特征值求解 (solve_eigenvalues)
由于结构张量是一个 2x2 的对称矩阵,系统直接通过特征方程(行列式与迹的关系)求得解析解。计算公式为:lambda = (tr ± sqrt(tr^2 - 4*det)) / 2。其中较大的特征值 L1 代表了边缘的主能量,L2 则反映了角点特征。
准不变性投影逻辑
在阴影不变性处理中,系统引入了极小值常量 (epsilon) 以防止除以零。通过计算 dot_x = grad_I · f_unit(dot product),实现了将梯度向量投影到颜色轴的操作。随后通过 I_invariant = grad_I - (grad_I · f_unit) * f_unit 得到正交分量,这是实现光照鲁棒性的关键数学步骤。