LTP (Local Triplet Pattern) 局部三元模式纹理特征提取系统
本项目实现了一种基于仿生视觉原理的局部纹理特征描述算法——局部三元模式 (Local Triplet Pattern, LTP)。与传统的局部二值模式 (LBP) 相比,该系统通过引入阈值区间,有效地增强了对图像平滑区域噪声的鲁棒性,能够更精细地刻画图像中的微弱纹理变化。
项目背景
在计算机视觉领域,纹理特征提取是图像识别的关键步骤。传统的 LBP 算子仅通过简单的二进制比较(大于或小于)来描述局部像素关系,这导致其在面对传感器噪声或微小光照波动时极易产生伪特征。LTP 算法通过定义一个三元算子,将中心像素与邻域的关系划分为“高于”、“接近”或“低于”三种状态,从而在保留纹理细节的同时显著抑制噪声干扰。
主要功能
- 多参数自定义提取:支持用户自定义采样半径 (Radius)、采样点数 (Neighbors) 以及噪声抑制阈值参数 (k),以适应不同分辨率和复杂度的图像。
- 鲁棒的采样策略:系统采用圆形邻域采样模型,并结合双线性插值算法,确保在非整数坐标点上也能获取精确的像素估计,支持任意角度的特征提取。
- 双通道特征映射:将生成的三元编码自动分解为正向 (Upper) 和反向 (Lower) 两组二进制模式,分别提取图像的明亮突变特征和黑暗突变特征。
- 特征归一化处理:通过 L2 范数对级联后的长特征向量进行归一化,消除了全局光照强度变化对特征表达的影响。
- 多维度结果可视化:系统提供完整的可视化界面,直观展示原始灰度图、正/反向编码映射图以及最终的特征直方图分布。
算法实现流程
- 图像预处理:系统将输入图像(如自带的 peppers.png 或自动生成的随机噪声图)转换为双精度灰度格式,并采用镜像填充 (Replicate Padding) 的方式处理边界,避免边缘像素特征丢失。
- 邻域采样点定位:利用三角函数计算指定半径内的采样点偏移坐标。
- 核心编码逻辑:
* 遍历图像中的每一个像素作为中心点。
* 对每个采样点执行双线性插值,利用周围四个整数像素的加权贡献计算精确值。
*
三元判定:若邻域像素比“中心值+k”大,编码为1(正向);若比“中心值-k”小,编码为1(反向);若落在阈值区间内,则均记为0。
* 使用位运算思想(2^p 累加)将 8 位(或 P 位)判定结果编码为十进制数值。
- 统计与级联:分别统计正向和反向映射图的分布直方图,并将两者首尾相连,形成维度为 2^P * 2 的特征向量。
- 归一化导出:对级联向量执行范数计算并除以幅值,防止大数值分量主导特征空间。
关键实现细节分析
- 双线性插值:在编码核心逻辑中,系统通过
r_p 和 c_p 计算浮点坐标,并利用 floor 与 ceil 函数锁定坐标围成的 2x2 像素区域,通过权重 wr 和 wc 实现亚像素级别的亮度补偿,这使得算法对图像的选择性更加平滑。 - 正负分量分解:系统没有直接处理三进制数,而是通过逻辑分支(if-elseif-else)将其拆解。这种设计将 3^P 的编码空间转化为 2 * 2^P 的空间,在保留关键区分度的同时极大降低了计算和存储复杂度。
- 噪声抑制机制:阈值
threshold_k 是系统的核心参数。当局部纹理变化小于 k 时,系统将其视为平展区域,编码均为 0。这一机制能有效防止由于数字化过程产生的微小灰度波动被错误地识别为突出的纹理结构。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 核心函数依赖:依赖于
padarray(图像处理工具箱)、histcounts 等标准算子。 - 硬件建议:由于采用矩阵化运算与嵌套循环相结合的方式,建议在配备 8GB 以上内存的设备上运行,以获得流畅的特征映射图渲染体验。
使用方法
- 将代码脚本置于 MATLAB 当前工作路径下。
- 根据需要修改参数设置区域的
radius(通常设为 1-3)、neighbors(通常设为 8 或 16)和 threshold_k(建议范围为 3-10)。 - 运行脚本,系统将自动读取测试图像或生成合成纹理进行处理。
- 在弹出的视觉窗口中观察不同通道下的纹理响应,并从命令行查看最终提取的特征向量维度。