opencv之局部方向模式(LDP)

    人脸图像的局部方向模式基本思想是图像每个相素点都有一个局部3×3 邻域像素灰度值,该相素处于邻域中心。将该局部与3×3 邻域的灰度值与8 个Kirsch 模板卷积得到相应方向的边缘梯度值  (i=0,1,…,7),将边缘梯度值的绝对值 进行排序,求出第k大的值 并将大于等于 的 对应的第i位二进制数设置为1,剩余8-i位置为0,得到一个八位的二进制编码,然后根据不同位置进行加权求和,所得的十进制数即为该像素点的 LDP 特征值。八个方向的 Kirsch 模板(M0~M7)如图 1 所示,LDP 特征提取流程如图 2 所示。


源码如下:

完整的Qt工程下载:http://download.csdn.net/detail/j_d_c/9328865

main.cpp

#include"ldp.h"
#include <iostream>
using namespace cv;
using namespace std;
 
int main(int argc,char *argv[])
{
 
     int R=1;
     Mat grayImg,ldpImg;
 
     Mat pImg = imread("F:/MyQt/Gaussian/1.bmp",1);
     grayImg.create(pImg.rows,pImg.cols,CV_8UC1);
     cvtColor(pImg,grayImg,CV_RGB2GRAY);//转换成灰度图像
     imshow("oringe",pImg);
     LDP ldp;
     ldp.ldppattern(grayImg,ldpImg,R);
    namedWindow("ldpImg",WINDOW_AUTOSIZE);
    imshow("ldpImg",ldpImg);
    waitKey(0);
}

ldp.cpp

#include "ldp.h"
#include <qDebug>
 
#include <iostream>
#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
 
using namespace cv;
using namespace std;
 
typedef struct
{
 
    int 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值