自由Man

LBP特征及其源码实现

    原始LBP特征即是以gc为中心,比较其灰度值与它邻近的8个像素点灰度值的大小关系:如果大于等于,则取1;否则,取0。从而得到8bit的一个二进制数。后来,为了满足多尺度的要求,又引入邻域半径R:R为半径的P点邻域,gc为中心,gp为邻域点 ;区分邻域比中心亮度大还是小。公式及示意图如下:

http://img.blog.csdn.net/20130531170631543http://img.blog.csdn.net/20130531170638839http://img.blog.csdn.net/20130531170643808

改变P,R 可形成多尺度LBP

 

原始LBP实现源码:

void LBP(IplImage* src, IplImage* dst)

{

         int width=src->width;

         int height=src->height;

         for(int j=1;j<width-1;j++)

         {

                   for(int i=1;i<height-1;i++)

                   {

                            uchar neighborhood[8]={0};

                            neighborhood[7]       = CV_IMAGE_ELEM( src, uchar, i-1, j-1);

                            neighborhood[6]       = CV_IMAGE_ELEM( src, uchar, i-1, j);

                            neighborhood[5]       = CV_IMAGE_ELEM( src, uchar, i-1, j+1);

                            neighborhood[4]       = CV_IMAGE_ELEM( src, uchar, i, j-1);

                            neighborhood[3]       = CV_IMAGE_ELEM( src, uchar, i, j+1);

                            neighborhood[2]       = CV_IMAGE_ELEM( src, uchar, i+1, j-1);

                            neighborhood[1]       = CV_IMAGE_ELEM( src, uchar, i+1, j);

                            neighborhood[0]       = CV_IMAGE_ELEM( src, uchar, i+1, j+1);

                            uchar center = CV_IMAGE_ELEM( src, uchar, i, j);

                            uchar temp=0;

                            for(int k=0;k<8;k++)

                            {

                                     temp+=(neighborhood[k]>=center)<<k;

                            }

                            CV_IMAGE_ELEM( dst, uchar, i, j)=temp;

                   }

         }

}


相关文章
LBP特征及其源码实现2015年01月22日
LBP特征提取步骤2015年01月19日

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.5.2 Zero Theme By 爱墙纸

Copyright ZiYouMan.cn. All Rights Reserved. 蜀ICP备15004526号