【影象特徵提取3】區域性二值模式LBP特徵描述符C++程式碼的實現
/******************************************************************************************************** 檔案說明: 經典LBP特徵的C++程式碼實現 開發環境: Win10 + OpenCv2.4.8 + VS2012 時間地點: 陝西師範大學 2017.3.16 作 者: 九 月 *********************************************************************************************************/ #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; cv::Mat OLBP(cv::Mat& srcImg) { const int iRows = srcImg.rows; const int iCols = srcImg.cols; cv::Mat resultMat(srcImg.size(),srcImg.type()); //變數影象,生成LBP特徵 for(int y = 1;y<iRows-1; y++) { for(int x = 1;x<iCols-1; x++) { //定義8鄰域 uchar cNeighbor[8] = {0}; cNeighbor[0] = srcImg.at<uchar>(y-1,x-1); cNeighbor[1] = srcImg.at<uchar>(y-1,x); cNeighbor[2] = srcImg.at<uchar>(y-1,x+1); cNeighbor[3] = srcImg.at<uchar>(y, x+1); cNeighbor[4] = srcImg.at<uchar>(y+1,x+1); cNeighbor[5] = srcImg.at<uchar>(y+1,x); cNeighbor[6] = srcImg.at<uchar>(y+1,x-1); cNeighbor[7] = srcImg.at<uchar>(y ,x-1); //當前影象的中心畫素點 uchar cCenter = srcImg.at<uchar>(y,x); uchar cTemp = 0; //計算LBP的值 for(int k =0;k<8;k++) { cTemp += (cNeighbor[k]>=cCenter)*(1<<k); //將1的二進位制數按位左移k位 } resultMat.at<uchar>(y,x) = cTemp; }//for x }//for y return resultMat; } int main() { cv::Mat srcImg = cv::imread(".\\images\\crack.jpeg",0); if(srcImg.empty()) { std::cout<<"【NOTICE】NO valid inout image was given,please check the inoput image!"<<std::endl; std::system("pause"); return -1; } cv::Mat resultMat = OLBP(srcImg); cv::imshow("srcImg",srcImg); cv::imshow("resultMat",resultMat); cv::waitKey(0); return 0; }
相關推薦
【影象特徵提取3】區域性二值模式LBP特徵描述符C++程式碼的實現
/******************************************************************************************************** 檔案說明: 經典LBP特徵的C++程式碼實現
【影象特徵提取2】區域性二值模式LBP----從原理到實踐
(一)區域性二值模式LBP的簡介 LBP(Local Binary Pattern,區域性二值模式)是一種描述影象區域性紋理的特徵運算元,該運算元是由T.Ojala等人於1994年
openCV學習筆記(十四) —— 人臉識別演算法(3/3)—— 區域性二值模式LBP
LBP(Local Binary Patterns,區域性二值模式)是提取區域性特徵作為判別依據的。LBP方法顯著的優點是對光照不敏感,但是依然沒有解決姿態和表情的問題。不過相比於特徵臉方法,LBP的識別率已經有了很大的提升。在[1]的文章裡,有些人臉庫的識別率已經達到了
區域性二值模式LBP-簡單人臉識別(三)
一)區域性二值模式簡介 前面介紹過關於主成分分析法的識別方法,這個方法是選取的整幅影象的主成分分量來作為新的特徵,從某種意義上說這是一種基於全域性特徵的方法。但是一般影象識別中,僅僅使用全域性特徵是不夠的,獲得的識別率較低,更多的時候,表徵一副影象的特徵也缺少不了區域性
人臉表情識別筆記(二)特徵提取之LBP(區域性二值模式)原理及MATLAB程式碼
一:原理部分 LBP(Local Binary Pattern,區域性二值模式)是一種用來描述影象區域性紋理特徵的運算元;它具有旋轉不變性和灰度不變性等顯著的優點。它是首先由T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,用
【A-劍指offer】04-二維陣列中的查詢特定數字 python實現
題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數
區域性二值模式(LBP)理論學習與演算法實現
專案原始碼:https://github.com/zhongqianli/local_binary_pattern 一、概念 區域性二值模式, Local binary patterns, LBP, 一種用於紋理分類的特徵。如果區域性二值模式特徵與方向梯度直方圖結合,則可以在一些
LBP(區域性二值模式)基礎知識篇
一篇非常好的 關於LBP的入門介紹! 向群主致敬! 另外推薦一篇英文介紹,建議打印出來,沒事翻著讀 LBP(Local Binary Pattern,區域性二值模式)是一種用來描述影象區域性紋理特徵的運算元;它具有旋轉不變性和灰度不變性等顯著的優點。它是首先由T.
【轉】Linux下配置檔案讀取操作流程及其C程式碼實現
轉自:http://blog.csdn.net/zhouzhaoxiong1227/article/details/45563263#comments 一、概述 Linux具有免費、可靠、安全、穩定、多平臺等特點,因此深受廣大程式設計師的歡迎。 為了體現軟體產品的靈活性,可新增配置檔案存放某些重要的
《大話資料結構9》—— “二叉樹的順序儲存結構”——C++程式碼實現
順序儲存結構: 二叉樹的順序儲存結構就是用一維陣列儲存二叉樹中的結點,並且結點的儲存位置,也就是陣列的下標要能體現結點之間的關秀,比如雙親與孩子的關係,左右結點的兄弟關係。 完全二叉樹: 完全二叉樹由於其結構上的特點,通常採用順序儲存方式儲存。一棵有n個結點的完全二
二叉樹的基本操作 C++程式碼實現
首先定義節點 typedef struct BTree { int value; struct BTree *lchild; struct BTree *rchild; }BTree; 前序遞迴建立二叉樹 /* *
【影象特徵提取13】SIFT原理之KD樹+BBF演算法解析
本文轉載自:http://blog.csdn.NET/luoshixian099/article/details/47606159 繼上一篇中已經介紹了,最後得到了一系列特徵點,每個特徵點對應一個128維向量。假如現在有兩副圖片都已經提取到特徵點,現在要做
【影象特徵提取7】SURF特徵提取演算法的
本文大量參考了:http://blog.csdn.net/cxp2205455256/article/details/41311013;並且在此部落格的基礎之上,增加了一些新的內容。 一、SURF演算法的概述 SURF,英文的全稱為Speed Up Ro
【Python+OpenCV入門學習】十二、影象的幾何變換
本篇文章介紹影象處理的幾何變換,幾何變換有平移、縮放、旋轉等。 主要學習resize()、warpAffine()等函式的使用。 環境:Windows 7(64) Python 3.6 OpenCV3.4.2 一、縮放 1.1 resize()函式介紹 r
【深度學習】【caffe實用工具3】筆記25 Windows下caffe中將影象資料集合轉換為DB(LMDB/LEVELDB)檔案格式之convert_imageset
/********************************************************************************************************************************* 檔案說明:
【OpenCV3影象處理】查詢二值影象的邊緣 ( findContours()函式詳解 )
void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode
【日常學習】【搜索/遞歸】codevs2802 二的冪次方題解
sni trac mil amp 方法 data font 經典 註意 轉載請註明出處 [ametake版權全部]http://blog.csdn.net/ametake歡迎來看 題目描寫敘述 Description 不論什麽一個正
【PostgreSQL-9.6.3】使用pg_settings表查看參數的生效條件
intern name 數據庫 查看 context 影響 pre 無需重啟 per PostgreSQL數據庫的配置參數都在postgresql.conf文件中,此文件的目錄為數據庫的數據目錄($PGDATA)。這些參數有些是直接修改就可以生效,有些需要重啟數據庫才能生效
【深入Java虛擬機】之二:Class類文件結構
本質 拒絕 處理 implement align 默認值 改變 占用 至少 平臺無關性 Java是與平臺無關的語言,這得益於Java源代碼編譯後生成的存儲字節碼的文件,即Class文件,以及Java虛擬機的實現。不僅使用Java編譯器可以把Java代碼編譯成存儲字節
【POI每日題解 #3】 OKR-Periods of Words
lan img http class IT 鏈接 tdi names ID 題目鏈接 蒟蒻對kmp了解很淺 然鵝此題很裸 一個位置的i - next[i] 是它的“最小周期” 而“最大周期”就是一直向前找next 找到沒有了 i - next[沒有next的位置]就是該位置