日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LBP纹理图的提取

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LBP纹理图的提取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LBP紋理通過像素點的八鄰域元素和自身比較,大于自身取值為1,否則為0。將八鄰域比較后的值以特殊的順序排列,形成一個八位的二進制數,將該數作為紋理圖的像素值。

程序如下:


LBP.h

#pragma once



//#pragma comment(lib, "cv.lib")
//#pragma comment(lib, "cxcore.lib")
//#pragma comment(lib, "highgui.lib")
#include "opencv/cv.h"
#include "opencv/cxcore.h"
#include "opencv/highgui.h"
#include <string>
using namespace std;


class CLBP
{
public:
CLBP(void);
public:
~CLBP(void);


private:
IplImage* m_cvImage;
IplImage* m_cvLBPImage;
IplImage* m_cvSubImage;
string m_strFilename;
string m_strLBPFilename;


public:
void LBP(string src_image_fl, string lbp_image_fl);
void SRC_LBP(IplImage* image1, IplImage* image2, IplImage* dst);

};




LBP.cpp


#include "LBP.h"


CLBP::CLBP(void)
{
}


CLBP::~CLBP(void)
{
if (m_cvImage) cvReleaseImage(&m_cvImage);
if (m_cvLBPImage) cvReleaseImage(&m_cvLBPImage);
if (m_cvSubImage) cvReleaseImage(&m_cvSubImage);
}


void CLBP::LBP(string src_image_fl, string lbp_image_fl)
{
IplImage* temp_image = cvLoadImage(src_image_fl.c_str(), 1);
m_cvImage = cvCreateImage(cvSize(temp_image->width, temp_image->height), 8, 1);
m_cvSubImage = cvCreateImage(cvSize(temp_image->width, temp_image->height), 8, 1);
if (temp_image->nChannels == 3)
{
cvCvtColor(temp_image, m_cvImage, CV_BGR2GRAY);
}
cvNamedWindow("src_image", 1);
cvShowImage("src_image", m_cvImage);
m_cvLBPImage = cvCreateImage(cvSize(m_cvImage->width, m_cvImage->height), 8, 1);


int center=0;
int center_lbp=0;
for (int row=1; row<m_cvImage->height-1; row++)
for (int col=1; col<m_cvImage->width-1; col++)
{
center = cvGetReal2D(m_cvImage, row, col);
center_lbp = 0;
if (center >= cvGetReal2D(m_cvImage, row-1, col-1))
{
center_lbp += 1;
}
if (center >= cvGetReal2D(m_cvImage, row-1, col))
{
center_lbp += 2;
}
if (center >= cvGetReal2D(m_cvImage, row-1, col+1))
{
center_lbp += 4;
}
if (center >= cvGetReal2D(m_cvImage, row, col-1))
{
center_lbp += 8;
}
if (center >= cvGetReal2D(m_cvImage, row, col+1))
{
center_lbp += 16;
}
if (center >= cvGetReal2D(m_cvImage, row+1, col-1))
{
center_lbp += 32;
}
if (center >= cvGetReal2D(m_cvImage, row+1, col))
{
center_lbp += 64;
}
if (center >= cvGetReal2D(m_cvImage, row+1, col+1))
{
center_lbp += 128;
}
cvSetReal2D(m_cvLBPImage, row, col, center_lbp);
}

cvNamedWindow("lbp_image", 1);
cvShowImage("lbp_image", m_cvLBPImage);
? ??
? ? SRC_LBP(m_cvImage, m_cvLBPImage, m_cvSubImage);
cvReleaseImage(&temp_image);
cvWaitKey(0);
cvDestroyAllWindows();


}


void CLBP::SRC_LBP(IplImage* image1, IplImage* image2, IplImage* dst)
{
for (int row=0; row<dst->height; row++)
for (int col=0; col<dst->width; col++)
{
cvSetReal2D(dst, row, col, abs(cvGetReal2D(image1, row, col)-cvGetReal2D(image2, row, col)));
}
cvNamedWindow("sub_image", 1);
cvShowImage("sub_image", dst);
}





main.cpp


#include "LBP.h"


int _tmain(int argc, _TCHAR* argv[])
{
CLBP mylbp;


mylbp.LBP("data/lena.bmp", "");
//mylbp.LBP("1.jpg", "");


return 0;
}


總結

以上是生活随笔為你收集整理的LBP纹理图的提取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。