博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习LBP特征
阅读量:4563 次
发布时间:2019-06-08

本文共 2918 字,大约阅读时间需要 9 分钟。

1、LBP特征背景介绍

     LBP指局部二值模式,英文全称:Local Binary Pattern,是一种用来描述图像局部特征的算子,LBP特征具有灰度不变性和旋转不变性等显著优点。它是由T. Ojala, M.Pietikäinen, 和 D. Harwood [1][2]在1994年提出,由于LBP特征计算简单、效果较好,因此LBP特征在的许多领域都得到了广泛的应用,LBP特征比较出名的应用是用在人脸识别和目标检测中,在计算机视觉开源库中有使用LBP特征进行人脸识别的接口,也有用LBP特征训练目标检测分类器的方法,Opencv实现了LBP特征的计算,但没有提供一个单独的计算LBP特征的接口。

2、MATLAB代码

1 %2017-05-12   学习LBP特征   2  3  clc; 4  clear; 5  6 %读图操作 7 img=imread('船 (403).bmp'); 8 [m,n]=size(img); 9 figure(1);10 imshow(img,[]);11 title('原图');12 %%13 %求原始的LBP特征14 img_LBP=zeros(m,n);15 for i=2:m-116    for j=2:n-1 17        18        code=zeros(1,8);    %行向量19        code(1)=img(i-1,j-1)>img(i,j);20        code(2)=img(i-1,j)>img(i,j);21        code(3)=img(i-1,j+1)>img(i,j);22        code(4)=img(i,j+1)>img(i,j);23        code(5)=img(i+1,j+1)>img(i,j);24        code(6)=img(i+1,j)>img(i,j);25        code(7)=img(i+1,j-1)>img(i,j);26        code(8)=img(i,j-1)>img(i,j);27        for p=1:828            img_LBP(i,j)=img_LBP(i,j)+code(p)*2^(8-p);     %从左上角开始,顺时针编码29        end30        31    end32 end33 34 figure(2);35 imshow(img_LBP,[]);36 title('original LBP');37 %%38 %求旋转不变LBP39 img_LBP_ri=zeros(m,n);40 for i=2:m-141    for j=2:n-1 42        43        code=zeros(1,8);    %行向量,原始LBP特征编码44        code(1)=img(i-1,j-1)>img(i,j);45        code(2)=img(i-1,j)>img(i,j);46        code(3)=img(i-1,j+1)>img(i,j);47        code(4)=img(i,j+1)>img(i,j);48        code(5)=img(i+1,j+1)>img(i,j);49        code(6)=img(i+1,j)>img(i,j);50        code(7)=img(i+1,j-1)>img(i,j);51        code(8)=img(i,j-1)>img(i,j);52        for p=1:853            img_LBP_ri(i,j)=img_LBP_ri(i,j)+code(p)*2^(8-p);     %从左上角开始,顺时针编码54        end55        56        %循环左移,移动k位相当于把开头的k个数放到最右边57        for k=1:758            code=[code(k+1:end) code(1:k)];    %移位之后的二进制编码,右移表达式 code=[code(end-k+1:end) code(1:end-k)]59            temp=0;60            for p=1:861                temp=temp+code(p)*2^(8-p);62            end63            if temp

3、LBP特征图像

 4、LBPH的求法

      LBPH(Local Binary PatternsHistograms),局部二进制编码直方图,建立在LBPH基础之上的人脸识别法基本思想如下:

(1)首先以每个像素为中心,判断与周围像素灰度值大小关系,对其进行二进制编码,从而获得整幅图像的LBP编码图像;

(2)再将LBP图像分为个区域,获取每个区域的LBP编码直方图,继而得到整幅图像的LBP编码直方图;

(3)通过比较不同图像LBP编码直方图达到图像分类的目的,其优点是不会受到光照、缩放、旋转和平移的影响。

比如说,对应、于一张200*200的图片,照上述方法求出LBP特征图像(在最外圈补0)也为200*200,再将LBP图像分为10行10列,按行求出每一小块20*20的直方图。

问题在于如何归一化,特意查了一下数据归一化的方法,如下:

      数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。

以下是两种常用的归一化方法:

一、min-max标准化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 , 1]之间。转换函数如下:

                                                           

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

二、Z-score标准化方法

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

                                                                             

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

 

 

但是网上看到有人解析Opencv里面用LBP 作人脸识别时说到直方图归一化,直接对直方图除以上文举例中的20*20

 

参考博客:http://blog.csdn.net/sinat_25885063/article/details/43704005

转载于:https://www.cnblogs.com/liulijin/p/6846160.html

你可能感兴趣的文章
[TYVJ1827]『Citric II』一道防AK好题
查看>>
poj 2785(折半枚举+二分搜索)
查看>>
Matrix4x4
查看>>
PHP7新功能及语法变化总结
查看>>
如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
查看>>
Python正则表达式初识(三)
查看>>
java step1:基础知识4
查看>>
qbzt day1 上午
查看>>
Java——参数传递
查看>>
Python全栈开发:socket代码实例
查看>>
centos7 下通过nginx+uwsgi部署django应用
查看>>
GNU make manual 翻译( 一百四十五)
查看>>
面试题集锦
查看>>
Python函数中的*与**
查看>>
地图划线Demo
查看>>
风险管理,未雨绸缪——《代码之殇》读书笔记II
查看>>
Springboot 系列(十一)使用 Mybatis(结合自动化生成插件) 访问数据库
查看>>
php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
查看>>
leetcode1
查看>>
c++源文件到可执行文件的过程
查看>>