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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lbp特征提取算法 知乎_计算机视觉基础-图像处理: LBP特征描述算子

發(fā)布時(shí)間:2025/3/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lbp特征提取算法 知乎_计算机视觉基础-图像处理: LBP特征描述算子 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 簡(jiǎn)介

LBP指局部二值模式(Local Binary Pattern),是一種用來描述圖像局部特征的算子,具有灰度不變性和旋轉(zhuǎn)不變性等顯著優(yōu)點(diǎn)。LBP常應(yīng)用于人臉識(shí)別和目標(biāo)檢測(cè)中,在OpenCV中有使用LBP特征進(jìn)行人臉識(shí)別的接口,也有用LBP特征訓(xùn)練目標(biāo)檢測(cè)分類器的方法,OpenCV實(shí)現(xiàn)了LBP特征的計(jì)算,但沒有提供一個(gè)單獨(dú)的計(jì)算LBP特征的接口。也就是說OpenCV中使用了LBP算法,但是沒有提供函數(shù)接口。

2 LBP算法原理

2.1 LBP算法思想

原始的LBP算子定義在像素3*3的鄰域內(nèi),以鄰域中心像素為閾值,相鄰的8個(gè)像素的灰度值與鄰域中心的像素值進(jìn)行比較,若周圍像素大于中心像素值,則該像素點(diǎn)的位置被標(biāo)記為1,否則為0。這樣,3*3鄰域內(nèi)的8個(gè)點(diǎn)經(jīng)過比較可產(chǎn)生8為二進(jìn)制數(shù),將這8位二進(jìn)制數(shù)依次排列形成一個(gè)二進(jìn)制數(shù)字,這個(gè)二進(jìn)制數(shù)字的十進(jìn)制表示就是中心像素的LBP值,LBP值共有28種可能,因此LBP值有256種可能。中心像素的LBP值反映了該像素周圍區(qū)域的紋理信息。

(圖片注:然后講19放入到中心,作為L(zhǎng)BP值)

2.2 標(biāo)準(zhǔn)LBP算法原理

LBP特征用圖像的局部領(lǐng)域的聯(lián)合分布

來描述圖像的紋理特征,如果假設(shè)局部鄰域中像素個(gè)數(shù)為

,那么紋理特征的聯(lián)合分布

可以表述成:

其中,

表示相應(yīng)局部鄰域的中心像素的灰度值,

表示以中心像素圓心,以

為半徑的圓上的像素的灰度值。

假設(shè)中心像素和局部鄰域像素相互獨(dú)立,那么這里可以將上面定義式寫成如下形式:

其中

決定了局部區(qū)域的整體亮度,對(duì)于紋理特征,可以忽略這一項(xiàng),最終得到:

上式說明,將紋理特征定義為鄰域像素和中心像素的差的聯(lián)合分布函數(shù),因?yàn)?/p>

是基本不受亮度均值影響的,所以從上式可以看出,此時(shí)統(tǒng)計(jì)量T 是一個(gè)跟亮度均值,即灰度級(jí)無關(guān)的值。最后定義特征函數(shù)如下:

是符號(hào)函數(shù),即大于0為1,小于0為0.

標(biāo)準(zhǔn)LBP(灰度級(jí)不變LBP)定義如下

最后的

用于將二進(jìn)制轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制,例如,

3 改進(jìn)的LBP算子

3.1 圓形LBP算子

基本的 LBP算子的最大缺陷在于它只覆蓋了一個(gè)固定半徑范圍內(nèi)的小區(qū)域,這顯然不能滿足不同尺寸和頻率紋理的需要。為了適應(yīng)不同尺度的紋理特征,并達(dá)到灰度級(jí)和旋轉(zhuǎn)不變性的要求,Ojala等對(duì) LBP算子進(jìn)行了改進(jìn),將 3×3鄰域擴(kuò)展到任意鄰域,并用圓形鄰域代替了正方形鄰域,改進(jìn)后的 LBP算子允許在半徑為 R的圓形鄰域內(nèi)有任意多個(gè)像素點(diǎn)。從而得到了諸如半徑為R的圓形區(qū)域內(nèi)含有P個(gè)采樣點(diǎn)的LBP算子,表示為

對(duì)于給定中心點(diǎn)

,其鄰域像素位置為

,其采樣點(diǎn)

用如下公式計(jì)算:

R是采樣半徑,p是第p個(gè)采樣點(diǎn),P是采樣數(shù)目。如果近鄰點(diǎn)不在整數(shù)位置上,就需要進(jìn)行插值運(yùn)算,可以參考這篇博客 OpenCV框架下的插值算法

3.2 旋轉(zhuǎn)不變的LBP

LPB特征是灰度不變,但不是旋轉(zhuǎn)不變的,同一幅圖像,進(jìn)行旋轉(zhuǎn)以后,其特征將會(huì)有很大的差別,影響匹配的精度。Ojala在LBP算法上,進(jìn)行改進(jìn),實(shí)現(xiàn)了具有旋轉(zhuǎn)不變性的LPB的特征。

實(shí)現(xiàn)方法:不斷旋轉(zhuǎn)圓形鄰域得到一系列初始定義的LPB值,取最小值作為該鄰域的值。

其中

表示具有旋轉(zhuǎn)不變性的LBP特征。ROR(x,i)

為旋轉(zhuǎn)函數(shù),表示將x右循環(huán)i位。如下圖所示,旋轉(zhuǎn)后得到了一系列的LBP,取其中最小的15作為最終的LBP,這樣改進(jìn)便可以使得LBP具備旋轉(zhuǎn)不變性。

3.3 LBP的等價(jià)模式和混合模式

等價(jià)模式:當(dāng)某個(gè)局部二進(jìn)制模式所對(duì)應(yīng)的循環(huán)二進(jìn)制數(shù)從0到1或從1到0最多有兩次跳變時(shí),該局部二進(jìn)制模式所對(duì)應(yīng)的二進(jìn)制就稱為一個(gè)等價(jià)模式。

比如:00000000,11111111,11110010,10111111都是等價(jià)模式。

一個(gè)LBP算子可以產(chǎn)生不同的二進(jìn)制模式,對(duì)于

將會(huì)產(chǎn)生2p種模式。比如7?7鄰域內(nèi)有236種模式。如此多的二值模式對(duì)于信息的提取和識(shí)別都是不利的。Ojala等認(rèn)為,在實(shí)際圖像中,絕大多數(shù)LPB模式最多只包含兩次從1到0或從0到1的跳變。

混合模式:除了等價(jià)模式之外的稱為混合模式。

改進(jìn)后的LPB模式數(shù)由2 p(p為鄰域集內(nèi)的采集點(diǎn)數(shù) ) 降維為p?(p?1)+2 。維數(shù)減少,可以降低高頻噪聲的影響。Ojala認(rèn)為等價(jià)模式占總模式中的絕大數(shù)。圖2.4 ( a ), ( b ), ( c )等價(jià)模式分別占88%,93%和76%。可以通過低通濾波的方法來增強(qiáng)等價(jià)模式所占的比例。圖2.4( c )經(jīng)過高斯濾波后,其等價(jià)模式所占比可以增加到90%。

4 LBP算子特征圖可視化原圖灰度不變常規(guī)LBP等價(jià)灰度不變LBP

5 利用LBP特征做人臉檢測(cè)

5.1 人臉檢測(cè)流程

人臉檢測(cè)過程采用多尺度滑窗搜索方式,每個(gè)尺度通過一定步長(zhǎng)截取大小為20x20的窗口,然后將窗口放到分類器中進(jìn)行是不是人臉的判決,如果是人臉則該窗口通過所有分類器;反之,會(huì)在某一級(jí)分類器被排除。

5.2 基于OpenCV的實(shí)現(xiàn)

#coding:utf-8

import cv2 as cv

# 讀取原始圖像

img= cv.imread('*.png')

#face_detect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

face_detect = cv.CascadeClassifier("lbpcascade_frontalface_improved.xml")

# 檢測(cè)人臉

# 灰度處理

gray = cv.cvtColor(img, code=cv.COLOR_BGR2GRAY)

# 檢查人臉 按照1.1倍放到 周圍最小像素為5

face_zone = face_detect.detectMultiScale(gray, scaleFactor = 2, minNeighbors = 2) # maxSize = (55,55)

print ('識(shí)別人臉的信息:\n',face_zone)

# 繪制矩形和圓形檢測(cè)人臉

for x, y, w, h in face_zone:

# 繪制矩形人臉區(qū)域

cv.rectangle(img, pt1 = (x, y), pt2 = (x+w, y+h), color = [0,0,255], thickness=2)

# 繪制圓形人臉區(qū)域 radius表示半徑

cv.circle(img, center = (x + w//2, y + h//2), radius = w//2, color = [0,255,0], thickness = 2)

# 設(shè)置圖片可以手動(dòng)調(diào)節(jié)大小

cv.namedWindow("Easmount-CSDN", 0)

# 顯示圖片

cv.imshow("Easmount-CSDN", img)

# 等待顯示 設(shè)置任意鍵退出程序

cv.waitKey(0)

cv.destroyAllWindows()

原圖:

檢測(cè)結(jié)果:

參考

總結(jié)

以上是生活随笔為你收集整理的lbp特征提取算法 知乎_计算机视觉基础-图像处理: LBP特征描述算子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。