这篇博文的内容主要来自研讨课周娴同学的课件,在此表示感谢。
LBP(Local Binary Pattern):局部二值模式。由Timo Ojala等人在1996年提出,用于纹理特征的提取。
一. 基本算法
- 对推按个中的所有点,以该点为中心,取
3*3
的邻域窗口; - 将8-邻域像素值与中心点像素值比较,大于或等于中心像素的标记为1,否则标记为0;
- 将周围0-1序列,以一定的顺序排列,成为一个8位二进制数,转化为十进制数;
- 这个十进制整数就是表征这个窗口的LBP值,并用这个值来反映该区域的纹理信息。
当然,这里的8-邻域只是一种情况,为了使用不同尺度的纹理特征,研究者对LBP算子进行了改进,将3*3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,半径R可以是小数,对于没有落到整数位置的点,根据轨道内离其最近的两个整数位置像素灰度值,利用双线性插值的方法计算它的灰度值。
该算法存在的问题:
- 对旋转敏感;
- 对于P个采样点的LBP算子会产生
2^P
中模式,模式太多!
解决:
二. 改进的LBP算子
1.LBP旋转不变模式
研究者对LBP算子进行扩展提出了具有旋转不变的LBP算子,即不断旋转圆形邻域得到一系列初始定义的LBP值,取其最小值作为该邻域的LBP值。公式表示如下:
2. LBP等价模式
前文说了,含有P个采样点的LBP算子会产生2^P中模式,为了给LBP算子的模式种类进行降维,Ojala提出一种“等价模式”(Uniform Parttern)。
Ojala等认为,在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,Ojala将“等价模式”定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类。
如00000000(0次跳变),00000111(只含一次从0到1的跳
变),10001111(先由1跳到0,再由0跳到1,共两次跳变)
都是等价模式类。除等价模式类以外的模式都归为另一类,称为混合模式类。
通过这样的改进,二进制模式的种类大大减少,而且不会丢失任何信息。模式数量由原来的2^P种减少为P(P-1)+2,P表示邻域内的采样点数。对于3*3邻域内8个采样点来说,二进制模式由原始的256种减少为58种,这样使得特征向量的维数更少。
3. LBP旋转不变的等价模式
LBP算子的旋转不变模式还可以与等价模式联合起来,将等
价模式类进行旋转得到旋转不变的等价模式,这使得可能的模式种类由2^P类减少为P+1类。所有的非等价模式被归为第P+1类,如公式所示:
三. LBP算子的优缺点
优点:
- 一定程度上,LBP算子消除了光照变化的问题
- LBP算子具有旋转不变性
- LBP纹理特征维度低,计算速度快
缺点:
- 当光照变化不均匀时,各像素间的大小关系被破坏,对应的LBP算子也就发生了变化。
- 通过引入旋转不变的定义,使LBP算子更具鲁棒性。但这也使LBP算
四. LBP特征向量提取步骤
(1)将检测窗口划分为16*16的小区域(cell);
(2)对于每个cell中的每一个像素,将邻域内像素的灰度
值与其进行比较,得到该像素点的LBP值
(3)然后计算每个cell的直方图,即每个数字(假定是十进制数LBP值出现的频率);然后对该直方图进行归一化处理。
(4)最后将得到的每个cell的统计直方图进行连接成为一个特征向量,也就是整幅图的LBP纹理特征向量了。
然后便可利用机器学习算法进行分类了。