extractLBPFeatures
提取局部二值模式(LBP)特征
描述
例子
利用LBP特征对图像进行纹理区分
读取包含不同纹理的图像。
砖墙= imread(“bricks.jpg”);旋转的砖墙= imread(“bricksRotated.jpg”);地毯“carpet.jpg”);
显示图像。
图imshow(brickWall)标题(“砖头”)
图imshow(rotatedBrickWall)“旋转砖”)
图imshow(地毯)标题(“地毯”)
从图像中提取LBP特征,对其纹理信息进行编码。
lbpBricks1 = extractLBPFeatures(brickWall,“正直”、假);lbpBricks2 = extractLBPFeatures(rotatedBrickWall,“正直”、假);lbpCarpet = extractLBPFeatures(地毯,“正直”、假);
通过计算LBP特征之间的平方误差来衡量它们之间的相似性。
brickVsBrick = (lbpBricks1 - lbpBricks2).^2;brickVsCarpet = (lbpBricks1 - lbpCarpet).^2;
可视化平方误差来比较砖块和砖块以及砖块和地毯。当图像纹理相似时,平方误差较小。
图酒吧([brickVsBrick;brickVsCarpet)”,“分组”)标题(“LBP直方图的平方误差”)包含(“LBP直方图箱”)传说(“砖块vs旋转砖块”,“砖块vs地毯”)
将L1归一化应用于LBP特征
读入一个样本图像并将其转换为灰度。
I = imread(“gantrycrane.png”);I = im2gray(I);
提取未规范化的LBP特征,以便应用自定义规范化。
lbpFeatures = extractLBPFeatures(I,“CellSize”(32 32),“归一化”,“没有”);
将LBP特征重塑为a邻居个数——- - - - - -单元格数量数组来访问每个单元格的直方图。
numNeighbors = 8;numBins = numNeighbors*(numNeighbors-1)+3;lbpCellHists =重塑(lbpFeatures,numBins,[]);
使用L1范数归一化每个LBP细胞直方图。
lbpCellHists = bsxfun(@rdivide,lbpCellHists,sum(lbpCellHists));
将LBP特征向量重新塑造为1 × -N特征向量。
lbpFeatures =重塑(lbpCellHists,1,[]);
输入参数
我
- - - - - -输入图像
米——- - - - - -N二维灰度图像
输入图像,指定为米——- - - - - -N二维灰度图像是真实的,并且是非稀疏的。
数据类型:逻辑
|单
|双
|int16
|uint8
|uint16
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“NumNeighbors”
,8
算法参数
LBP算法参数控制如何为输入图像中的每个像素计算局部二进制模式。
NumNeighbors
- - - - - -邻居个数
8
(默认)|正整数
用于计算输入图像中每个像素的LBP的邻居数量,指定为逗号分隔的对,由'NumNeighbors
'和一个正整数。邻居的集合是从每个像素周围的圆形对称模式中选择的。增加邻居的数量,以编码每个像素周围的更多细节。典型值范围为4
来24
.
半径
- - - - - -选择邻居的圆形图案的半径
1
(默认)|正整数
圆形图案的半径,用于为输入图像中的每个像素选择邻居,指定为逗号分隔的对,由'半径
'和一个正整数。要在更大的空间尺度上捕捉细节,请增大半径。典型值范围为1
来5
.
正直的
- - - - - -旋转不变性标志
真正的
|逻辑标量
旋转不变性标志,指定为逗号分隔的对,由'正直的
和一个逻辑标量。当您将此属性设置为真正的
时,LBP特征不编码旋转信息。设置”正直的
”假
当需要旋转不变特征时。
插值
- - - - - -插值法
“线性”
(默认)|“最近的”
用于计算像素邻居的插值方法,指定为逗号分隔的对,由'插值
’“线性”
或“最近的”
.使用“最近的”
计算速度更快,但精确度较低。
直方图参数
直方图参数确定如何在图像上聚合二进制模式的分布以产生输出特征。
输出参数
特性
—LBP特征向量
1——- - - - - -N向量
LBP特征向量,返回为1 × -N长度向量N表示特征的数量。LBP特性编码局部纹理信息,您可以将其用于分类、检测和识别等任务。该函数将输入图像划分为不重叠的单元格。若要收集更大区域的信息,请选择更大的单元格大小。然而,当您增加单元格大小时,您将失去局部细节。N,取决于图像中细胞的数量,numCells,邻居数,P,以及正直的
参数。
计算单元格数为:
numCells= prod (地板上 (大小 (我 )/CellSize )) |
该图显示了一个包含9个单元直方图的图像。每个直方图描述了一个LBP特征。
每个单元格的直方图大小为[1,B),B是柱状图中箱子的数量。箱子的数量取决于正直的
属性和邻居的数量,P.
正直的 | 箱数 |
---|---|
真正的 |
(P (x)P-1) + 3) |
假 |
(P+ 2) |
总体LBP特征长度,N,取决于单元格的数量和箱的数量,B:
N=numCellsxB |
参考文献
[1]奥哈拉,T., M. Pietikainen和T. Maenpaa。基于局部二值模式的多分辨率灰度和旋转不变纹理分类。模式分析与机器智能汇刊.第24卷,第7期,2002年7月,971-987页。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
不生成依赖于平台的库。
版本历史
在R2015b中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。