LBP特征提取算法的提取与实现
来源:互联网 发布:java tcp编程实例 编辑:程序博客网 时间:2024/05/29 14:01
LBP的基本思想是对图像的像素和它周围8个像素进行比较,然后求和。如果中心像素的亮度大于等于他的相邻像素,把他标记为1,否则标记为0。最终可以获取2^8个可能的组合,称为局部二值模式或LBP码。
这样做的原理:因为对于一张图片,相邻像素之间的的值是有关系的。因此中心点和相邻像素比较后就能得到一个二进制串,这个二进制串就能很好的表示这个点和相邻像素之间的模式,这个模式就是这个二进制串。这种描述方法就可以很好的捕捉到图像中的细节。
#include"imgProcess.h"int main(){IplImage* color_face = cvLoadImage("D://test.png",1);IplImage* gray_face = cvCreateImage(cvSize(color_face->width, color_face->height), color_face->depth, 1);cvCvtColor(color_face, gray_face, CV_BGR2GRAY);IplImage* LBP_face = cvCreateImage(cvSize(color_face->width, color_face->height), color_face->depth, 1);//先分配图像空间 cvNamedWindow("Color Image", 1);cvShowImage("Color Image", color_face);cvNamedWindow("Gray Image", 1);cvShowImage("Gray Image", gray_face);ImgProcess imgp;imgp.src_LBP(gray_face, LBP_face);cvNamedWindow("LBP Image", CV_WINDOW_AUTOSIZE);cvShowImage("LBP Image", LBP_face);waitKey();cvReleaseImage(&color_face);cvReleaseImage(&gray_face);cvReleaseImage(&LBP_face);cvDestroyWindow("Color Image");cvDestroyWindow("Gray Image");cvDestroyWindow("LBP Image");return 0;}imgProcess.h#include <opencv2/opencv.hpp> #include <cv.h> #include <highgui.h> #include <cxcore.h> using namespace std;using namespace cv;class ImgProcess{public:int tmp[8];IplImage *temp;ImgProcess(){};~ImgProcess(){};void src_LBP(IplImage *src, IplImage *dst);};imgProcess.cpp#include "imgProcess.h"void ImgProcess::src_LBP(IplImage *src, IplImage *dst){CvScalar s;temp = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);uchar *data = (uchar*)src->imageData;int step = src->widthStep;tmp[8] = { 0 };cout << "step" << step << endl;for (int i = 1; i<src->height - 1; i++)for (int j = 1; j<src->width - 1; j++){int sum = 0;if (data[(i - 1)*step + j - 1]>data[i*step + j])tmp[0] = 1;elsetmp[0] = 0;if (data[i*step + (j - 1)]>data[i*step + j])tmp[1] = 1;elsetmp[1] = 0;if (data[(i + 1)*step + (j - 1)]>data[i*step + j])tmp[2] = 1;elsetmp[2] = 0;if (data[(i + 1)*step + j]>data[i*step + j])tmp[3] = 1;elsetmp[3] = 0;if (data[(i + 1)*step + (j + 1)]>data[i*step + j])tmp[4] = 1;elsetmp[4] = 0;if (data[i*step + (j + 1)]>data[i*step + j])tmp[5] = 1;elsetmp[5] = 0;if (data[(i - 1)*step + (j + 1)]>data[i*step + j])tmp[6] = 1;elsetmp[6] = 0;if (data[(i - 1)*step + j]>data[i*step + j])tmp[7] = 1;elsetmp[7] = 0;//计算LBP编码 s.val[0] = (tmp[0] * 1 + tmp[1] * 2 + tmp[2] * 4 + tmp[3] * 8 + tmp[4] * 16 + tmp[5] * 32 + tmp[6] * 64 + tmp[7] * 128);cvSet2D(dst, i, j, s); //写入LBP图像}}
1 0
- LBP特征提取算法的提取与实现
- LBP特征提取的实现以及思考
- LBP局部特征提取算法
- 局部特征提取-LBP算法
- 特征提取方法(二):LBP原理与OpenCV实现
- 图像特征提取LBP
- 图像特征提取LBP
- 特征提取之LBP
- LBP特征提取
- LBP特征提取
- LBP特征提取
- LBP纹理特征提取
- 特征提取->LBP特征(1)
- LBP特征:图像特征提取
- LBP特征用于特征提取
- 纹理特征提取 及LBP纹理特征matlab实现
- HOG特征提取算法的实现过程
- SIFT算法的特征提取与匹配
- unity+高通vuforia开发增强现实(AR)教程
- 手机日期插件mobiscroll奇巧淫技&mobiscroll 中文API
- 蓝牙系列学习
- OpenTSDB研究---安装过程
- Sql语句备份恢复数据库
- LBP特征提取算法的提取与实现
- leetcode--Best Time to Buy and Sell Stock II
- 最近点对(分治)
- 如何查询本机ip地址
- Python异常
- 初识ActiveMQ
- C语言string.h中常用字符函数介绍
- 17个新手常见Python运行时错误
- javascript闭包