function [histLBP,MatLBP,MatLBP_MB]=getMBLBPFea(I,blockSize)
%计算分块区域I的LBP特征,(8,2),uniform
%blocksize分块大小,MBLBP中默认是1
%返回值:MatLBP---LBP响应矩阵
%histLBP---行向量,LBP直方图
%MatLB_MB---MBLBP的像素块低分辨率表示
if nargin<2
blockSize =1;
end
% 获得分块图像I的大小
[m n] = size(I);
%将原始图像依据blockSize分块,计算每块的平均灰度值,对应保存在映射矩阵I_MB中
mSub = floor(m/blockSize);
nSub = floor(n/blockSize);
mRem = mod(m,blockSize);
nRem = mod(n,blockSize);
mRem = round(mRem/2);
nRem = round(nRem/2);
I_MB = zeros(mSub,nSub);
for ii=1:mSub
for jj=1:nSub
%取中心区域,不够分出整块的留在两个边
I_center = I(1+mRem:mRem+mSub*blockSize,1+nRem:nRem+nSub*blockSize);
SubRgn=I_center((ii-1)*blockSize+1:ii*blockSize,(jj-1)*blockSize+1: ...,
jj*blockSize);
I_MB(ii,jj)=mean(SubRgn(:));
end
end
%剩下的任务就是对分块矩阵的映射I_MB计算blockSize=1的uniform(8,2)LBP特征了
rad=2;
if(mSub<=2*rad)||(nSub<=2*rad)
error('I is too small to compute LBP feature1');
end
MatLBP_MB=zeros(mSub-2*rad,nSub-2*rad);
%读入LBP映射(像素灰度与直方图索引的映射)
load LBPMap.mat
for ii= 1+rad:mSub-rad
for jj=1+rad:nSub-rad
nCnt = 1;
% 计算(8,2)邻域的像素值,不在像素中心的点通过双线性插值获得
nbPT(nCnt)=I_MB(ii,jj-rad);
nCnt=nCnt+1;
horInterp1=I_MB(ii-2,jj-2)+0.5858*(I_MB(ii-1,jj-1)-I_MB(ii-2,jj-2));
%水平方向插值
horInterp2 = I_MB(ii-1,jj-2)+0.5858*(I_MB(ii-1,jj-1)-I_MB(ii-1,jj-2));
% 水平方向插值
verInterp = horInterp1+0.5858*(horInterp2-horInterp1);%竖直方向的插值
nbPT(nCnt)=verInterp;
nCnt=nCnt+1;
nbPT(nCnt)=I_MB(ii-2,jj);
nCnt=nCnt+1;
horInterp1=I_MB(ii-2,jj+1)+0.4142*(I_MB(ii-2,jj+2)-I_MB(ii-2,jj+1));
horInterp2=I_MB(ii-1,jj+1)+0.4142*(I_MB(ii-1,jj+2)-I_MB(ii-1,jj+1));
nerInterp=horInterp1+0.5858*(horInterp2-horInterp1);
nbPT(nCnt)=verInterp;
nCnt=nCnt+1;
nbPT(nCnt)=I_MB(ii,jj+2);
nCnt=nCnt+1;
horInterp1=I_MB(ii+1,jj+1)+0.4142*(I_MB(ii+1,jj+2)-I_MB(ii+1,jj+1));
horInterp2= I_MB(ii+2,jj+1)+0.4142*(I_MB(ii+2,jj+2)-I_MB(ii+2,jj+1));
verInterp=horInterp1+0.4142*(horInterp2-horInterp2);
nbPT(nCnt)=verInterp;
nCnt=nCnt+1;
nbPT(nCnt)=I_MB(ii+2,jj);
nCnt=nCnt+1;
horInterp1=I_MB(ii+1,jj-2)+0.5858*(I_MB(ii+1,jj-1)-I_MB(ii+1,jj-2));
horInterp2=I_MB(ii+2,jj-2)+0.5858*(I_MB(ii+2,jj-1)-I_MB(ii+2,jj-2));
verInterp = horInterp1+0.4142*(horInterp2-horInterp2);
nbPT(nCnt)=verInterp;
for iCnt=1:nCnt
if (nbPT(iCnt)>=I_MB(ii,jj))
MatLBP_MB(ii-rad,jj-rad)=MatLBP_MB(ii-rad,jj-rad)+2^(nCnt-iCnt);
end
end
end
end
%还原MatLBP_MB
MatLBP=zeros(m-2*rad*blockSize,n-2*rad*blockSize);
for ii=1:mSub-2*rad
for jj=1:nSub-2*rad
MatLBP(mRem+(ii-1)*blockSize+1:mRem+ii*blockSize,nRem+(jj-1)*blockSize+1:nRem+jj*blockSize)=MatLBP_MB(ii,jj);
end
end
% 计算LBP直方图
histLBP = zeros(1,59);%对于(8,2)的unifrom直方图共有59个收集箱
for ii=1:mSub-2*rad
for jj=1:nSub-2*rad
histLBP(vecLBPMap(MatLBP_MB(ii,jj)+1))= ...,
histLBP(vecLBPMap(MatLBP_MB(ii,jj)+1))+1;
end
end

TANG85YAN
- 粉丝: 1
最新资源
- 基于51单片机的电子琴设计.doc
- 网络人物--------.pdf
- 网络安全项目网络建设方案.doc
- 公司网络管理规定.docx
- 网络众筹电影票房分红是真的吗?投资影视被骗该如何要回本金?.doc
- 论项目管理中人的管理.doc
- 网络运营中心产品部经理绩效考核表.doc
- 物理学中角度变换色散谱与多极子分解的光学特性研究及其应用
- 井下漏泄汇通信改造升级项目施工安全技术措施.doc
- 模板电气自动化设备技术协议.doc
- PLC设备技术协议.doc
- 数据库设计理论.doc
- 各种经典的网络拓扑图.ppt
- 数据信息知识智慧的区别和联系(数据挖掘商业智能BI知识必备).doc
- 2019年网站编辑试用期转正工作总结1000字.pdf
- 新版工艺品公司网络营销策划书.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
- 3
- 4
- 5
- 6
前往页