用matlab实现lbp
时间: 2023-10-09 16:15:19 浏览: 78
LBP(Local Binary Pattern)是一种用于图像纹理分析的算法,它是一种基于纹理的特征提取方法,可以描述图像中像素点周围局部区域的纹理特征。下面是一份Matlab代码实现LBP的例子:
```matlab
function lbpImg = LBP(img,R,P)
% img:输入图像
% R:半径
% P:邻域像素点数
[M,N] = size(img);
lbpImg = zeros(M-2*R,N-2*R); % 初始化LBP图像
for i = R+1:M-R
for j = R+1:N-R
centerPixel = img(i,j);
temp = zeros(1,P); % 初始化P个邻域像素点的二进制编码
for k = 1:P
offset = [R*cos(2*pi*k/P),-R*sin(2*pi*k/P)];
x = round(i+offset(2));
y = round(j+offset(1));
temp(k) = img(x,y);
end
% 二进制编码
binaryCode = zeros(1,P);
for k = 1:P
if temp(k) >= centerPixel
binaryCode(k) = 1;
end
end
% 转换为十进制
lbpImg(i-R,j-R) = binaryCode(1)*2^(P-1) + binaryCode(2)*2^(P-2) + ...
binaryCode(3)*2^(P-3) + binaryCode(4)*2^(P-4) + binaryCode(5)*2^(P-5) + ...
binaryCode(6)*2^(P-6) + binaryCode(7)*2^(P-7) + binaryCode(8)*2^(P-8);
end
end
% 绘制LBP图像
figure,imshow(lbpImg,[]),title('LBP Image');
end
```
上述代码中,我们先对图像进行了初始化,然后对于每个像素点,我们都计算其周围P个像素点的二进制编码,并将其转换为十进制数,最终得到LBP图像。最后,我们还可以利用Matlab的imshow函数绘制LBP图像。这里需要注意的是,由于我们在计算LBP值时,是从半径为R的圆形区域内选取P个像素点,因此输出的LBP图像大小应该为(M-2R)×(N-2R)。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)