MATLAB简单

您好,我想问一下就是使用LBP算法时,可以将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBP特征的统计直方图。如此一... 您好,我想问一下就是使用LBP算法时,可以将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBP特征的统计直方图。如此一来,每个子区域,就可以用一个统计直方图来进行描述;整个图片就由若干个统计直方图组成;例如:一幅100*100像素大小的图片,划分为10*10=100个子区域,每个子区域的大小为10*10像素;在每个子区域内的每个像素点,提取其LBP特征,然后,建立统计直方图;这样,这幅图片就有10*10个子区域,也就有了10*10个统计直方图,利用这10*10个统计直方图,就可以描述这幅图片了。 这里的把图片划分为若干个子区域怎么划分呢?之后得到这个统计直方图是怎么得到的呢?菜鸟一枚~~~求解 展开
 我来答
幽兰书生823
2014-05-03 · TA获得超过1048个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:254万
展开全部

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理解明白~~不过还是谢谢您~很用心~~~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式