MATLAB简单
1)划分子区域
方法一:
图像I是个矩阵,划分为子区域就是按一定规律取矩阵的对应行列。
例如I 100*100矩阵,10*10个子区域为:
则其
第一块为:(1:10,1:10) 子区域编号为(1,1)
第二块为:(11:20,1:10) 子区域编号为(2,1)
以此类推:
可以通过循环来实现:
for i=1:10;
for j=1:10;
eval(['I' num2str(i) num2str(j) '=I(1+10*(i-1):10+10*(i-1),1+10*(j-1):10+10*(j-1))']);
end
end
每个子区域为I11 I12 I13...I1010
示例:
方法二:通过裁剪命令,裁剪出对应的区域:
I2=imcrop(I,RECT)
RECT是对应区域的边界
比如:
I11=imcrop(I,[1,1,10,10]);即子区域的左上角点坐标和右下角点坐标。
示例代码如下:
for i=1:10;
for j=1:10;
eval(['I' num2str(i) num2str(j) '=imcrop(I,[1+10*(i-1),1+10*(i-1),10+10*(j-1),10+10*(j-1)])']);
end
end
2)直方图的求取和画法:
[x,n]=hist(I(:),1:255);
% x返回横坐标数组-----频数统计的小区间的中点
% n返回纵坐标数组-----各小区间内的频数
plot(n,x)
此外也可以直接用:
p=imhist(I);
plot(p);
概率密度:plot(p/N);
%N为区域总点数,如10*10。
3)将划分区域和灰度直方图一起使用:
for i=1:10;
for j=1:10;
p(10*(i-1)+j,:)=imhist(I(1+10*(i-1):10+10*(i-1),1+10*(j-1):10+10*(j-1)));
end
end
则每个子区域的直方图统计数据在p矩阵的每一行中,共计100行。
我其实想问的是结合这个LBP算法一起怎么写代码~~~单独求我也会,揉合一起我就不晓得了,因为没有把LBP理解明白~~不过还是谢谢您~很用心~~~