基于多块比较的改进局部二值模式(MB-LBP)特征提取系统
项目介绍
本系统实现了一种改进的纹理特征提取算法——多块局部二值模式(Multi-Block Local Binary Pattern, MB-LBP)。传统的LBP算法由于仅基于单像素点进行比较,极易受到图像噪声的影响,且难以捕捉较大尺度下的宏观结构信息。本系统通过引入多块比较机制,将局部邻域划分为多个等大小的子块,以块内像素的平均灰度作为比较基准。这种改进不仅显著提升了算法对噪声的鲁棒性,还赋予了其更强的宏观纹理描述能力。系统完整实现了从图像预处理、积分图加速计算、多尺度特征编码到全局特征直方图生成的全流程,适用于复杂光照和纹理环境下的图像分析任务。
功能特性
- 多尺度纹理分析:支持自定义子块尺寸(blockScale)和邻域布局(gridSize),能够提取不同尺度下的图像特征。
- 积分图加速计算:利用积分图(Integral Image)技术,使得任意尺寸子块的像素和计算均能在常数时间内完成,极大提升了特征提取的执行效率。
- 鲁棒的编码机制:通过比较中心块与周围8个邻域块的平均灰度,生成具备光照不变性和旋转稳健性的8位二进制编码。
- 直观的可视化界面:系统自动展示原始图像、MB-LBP特征映射图以及归一化后的特征直方图,便于定性分析纹理分布。
- 灵活的数据输入:内置交互式文件选择器,支持多种常用图像格式,并具备自动处理RGB转灰度和合成纹理生成的兜底方案。
主程序逻辑流程主程序按照以下逻辑顺序执行:
- 环境初始化与参数配置:清除环境变量,设置默认的子块尺寸(默认为5x5像素)和邻域网格布局(3x3子块)。
- 图像获取与预处理:
* 通过图形界面供用户选择路径下的图像文件。
* 若用户未选择,则尝试加载内置测试图;若环境受限,则自动生成正弦纹理合成图。
* 对彩色图像进行灰度化处理,并转换为双精度浮点数以确保计算精度。
- 计算积分图:对预处理后的图像构建积分图矩阵,为后续快速计算子块平均值奠定基础。积分图的尺寸通过边界扩充比原图大一像素,用于存储从原点到当前像素的累加和。
- MB-LBP 特征映射计算:
* 根据子块尺寸计算边缘损失距离,初始化结果矩阵。
* 定义3x3邻域内9个子块的相对坐标偏移。
* 遍历图像有效区域,利用积分图公式(右下+左上-右上-左下)通过4次查表快速求得每个子块的像素总和,进而求得平均值。
* 将中心块(第5块)的平均值与周围8个块(按顺时针/顺序排列)进行阈值比较,生成二进制编码并转换为0-255之间的十进制数值。
- 全局特征提取:
* 统计特征映射图中所有有效像素点的编码分布。
* 生成256维的特征直方图,并进行归一化处理,得到代表图像纹理特征的概率分布统计量。
- 结果输出与可视化:
* 创建四宫格图表,对比展示原图与特征映射效果。
* 绘制纹理特征直方图,并实时打印图像分辨率、处理耗时、特征维度等统计报告。
关键算法与实现细节
- 积分图加速原理:算法核心是通过
cumsum 函数在行和列方向依次累加。在提取子块特征时,不再需要对块内所有像素点进行遍历求和,而是直接引用积分图中四个顶点的数值进行加减运算,计算复杂度与块的大小无关。 - 邻域编码顺序:系统采用了经典的邻域索引顺序(1, 2, 3, 6, 9, 8, 7, 4),跳过中心块(5号块),将比较结果按位权加权求和(2^0 到 2^7),最终形成反映局部纹理结构的LBP值。
- 边缘处理:为了保证计算的严谨性,算法自动计算因邻域算子覆盖范围产生的边缘损失(margin),仅对能完整容纳 3x3 个子块的区域进行特征提取。
系统要求- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱支持:Image Processing Toolbox(图像处理工具箱)。
- 硬件建议:标准PC配置,内存不低于4GB,以支持高分辨率图像的分块计算。