日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LBP特征原理

發布時間:2023/12/31 编程问答 84 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LBP特征原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、LBP特征的背景介紹

LBP指局部二值模式,英文全稱:Local Binary Pattern,是一種用來描述圖像局部特征的算子,LBP特征具有灰度不變性和旋轉不變性等顯著優點。它是由T. Ojala, M.Pietik?inen, 和 D. Harwood [1][2]在1994年提出,由于LBP特征計算簡單、效果較好,因此LBP特征在計算機視覺的許多領域都得到了廣泛的應用,LBP特征比較出名的應用是用在人臉識別和目標檢測中,在計算機視覺開源庫OpenCV中有使用LBP特征進行人臉識別的接口,也有用LBP特征訓練目標檢測分類器的方法,Opencv實現了LBP特征的計算,但沒有提供一個單獨的計算LBP特征的接口。

二、LBP特征的原理

1、原始LBP特征描述及計算方法

原始的LBP算子定義在像素3*3的鄰域內,以鄰域中心像素為閾值,相鄰的8個像素的灰度值與鄰域中心的像素值進行比較,若周圍像素大于中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3*3鄰域內的8個點經過比較可產生8位二進制數,將這8位二進制數依次排列形成一個二進制數字,這個二進制數字就是中心像素的LBP值,LBP值共有2828種可能,因此LBP值有256種。中心像素的LBP值反映了該像素周圍區域的紋理信息。
備注:計算LBP特征的圖像必須是灰度圖,如果是彩色圖,需要先轉換成灰度圖。?

彩色RGB圖轉為灰度圖像的原理 ? 只取圖像的亮度信息 ? ??

其實這其中是有一個轉換公式的,簡單來說,就是把RGB3個通道的分量按照一定的比例計算到灰度圖像中。即 公式(1)所闡述的那樣,Gray = R*0.299 + G*0.587 + B*0.114


我有一個想法,就是不是可以不通過不用上面公式中的著中轉換方式,可以讓取三個通道的對應像素的平均值,

此時是一個單通道,(不知道效果,回頭可以試一試),目前還沒有試


上述過程用圖像表示為:


將上述過程用公式表示為:

(xc,yc)(xc,yc)為中心像素的坐標,pp為鄰域的第pp個像素,ipip為鄰域像素的灰度值,icic為中心像素的灰度值,s(x)s(x)為符號函數

原始LBP特征計算代碼(Opencv下):

//原始LBP特征計算 template <typename _tp> void getOriginLBPFeature(InputArray _src,OutputArray _dst) {Mat src = _src.getMat();_dst.create(src.rows-2,src.cols-2,CV_8UC1);Mat dst = _dst.getMat();dst.setTo(0);for(int i=1;i<src.rows-1;i++){for(int j=1;j<src.cols-1;j++){_tp center = src.at<_tp>(i,j);unsigned char lbpCode = 0;lbpCode |= (src.at<_tp>(i-1,j-1) > center) << 7;lbpCode |= (src.at<_tp>(i-1,j ) > center) << 6;lbpCode |= (src.at<_tp>(i-1,j+1) > center) << 5;lbpCode |= (src.at<_tp>(i ,j+1) > center) << 4;lbpCode |= (src.at<_tp>(i+1,j+1) > center) << 3;lbpCode |= (src.at<_tp>(i+1,j ) > center) << 2;lbpCode |= (src.at<_tp>(i+1,j-1) > center) << 1;lbpCode |= (src.at<_tp>(i ,j-1) > center) << 0;dst.at<uchar>(i-1,j-1) = lbpCode;}} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

測試結果:

2、LBP特征的改進版本

在原始的LBP特征提出以后,研究人員對LBP特征進行了很多的改進,因此產生了許多LBP的改進版本。

2.1 圓形LBP特征(Circular LBP or Extended LBP)

由于原始LBP特征使用的是固定鄰域內的灰度值,因此當圖像的尺度發生變化時,LBP特征的編碼將會發生錯誤,LBP特征將不能正確的反映像素點周圍的紋理信息,因此研究人員對其進行了改進[3]。基本的 LBP 算子的最大缺陷在于它只覆蓋了一個固定半徑范圍內的小區域,這顯然不能滿足不同尺寸和頻率紋理的需要。為了適應不同尺度的紋理特征,并達到灰度和旋轉不變性的要求,Ojala 等對 LBP 算子進行了改進,將 3×3 鄰域擴展到任意鄰域,并用圓形鄰域代替了正方形鄰域,改進后的 LBP 算子允許在半徑為 R 的圓形鄰域內有任意多個像素點。從而得到了諸如半徑為R的圓形區域內含有P個采樣點的LBP算子:

這種LBP特征叫做Extended LBP,也叫Circular LBP。使用可變半徑的圓對近鄰像素進行編碼,可以得到如下的近鄰:

對于給定中心點(xc,yc)(xc,yc),其鄰域像素位置為(xp,yp)(xp,yp)pPp∈P,其采樣點(xp,yp)(xp,yp)用如下公式計算:

RR是采樣半徑,pp是第pp個采樣點,PP是采樣數目。由于計算的值可能不是整數,即計算出來的點不在圖像上,我們使用計算出來的點的插值點。目的的插值方法有很多,Opencv使用的是雙線性插值,雙線性插值的公式如下:

通過LBP特征的定義可以看出,LBP特征對光照變化是魯棒的,其效果如下圖所示:

//圓形LBP特征計算,這種方法適于理解,但在效率上存在問題,聲明時默認neighbors=8 template <typename _tp> void getCircularLBPFeature(InputArray _src,OutputArray _dst,int radius,int neighbors) {Mat src = _src.getMat();//LBP特征圖像的行數和列數的計算要準確_dst.create(src.rows-2*radius,src.cols-2*radius,CV_8UC1);Mat dst = _dst.getMat();dst.setTo(0);//循環處理每個像素for(int i=radius;i<src.rows-radius;i++){for(int j=radius;j<src.cols-radius;j++){//獲得中心像素點的灰度值_tp center = src.at<_tp>(i,j);unsigned char lbpCode = 0;for(int k=0;k<neighbors;k++){//根據公式計算第k個采樣點的坐標,這個地方可以優化,不必每次都進行計算radius*cos,radius*sinfloat x = i + static_cast<float>(radius * \cos(2.0 * CV_PI * k / neighbors));float y = j - static_cast<float>(radius * \sin(2.0 * CV_PI * k / neighbors));//根據取整結果進行雙線性插值,得到第k個采樣點的灰度值//1.分別對x,y進行上下取整int x1 = static_cast<int>(floor(x));int x2 = static_cast<int>(ceil(x));int y1 = static_cast<int>(floor(y));int y2 = static_cast<int>(ceil(y));//2.計算四個點(x1,y1),(x1,y2),(x2,y1),(x2,y2)的權重//下面的權重計算方式有個問題,如果四個點都相等,則權重全為0,計算出來的插值為0//float w1 = (x2-x)*(y2-y); //(x1,y1)//float w2 = (x2-x)*(y-y1); //(x1,y2)//float w3 = (x-x1)*(y2-y); //(x2,y1)//float w4 = (x-x1)*(y-y1); //(x2,y2)//將坐標映射到0-1之間float tx = x - x1;float ty = y - y1;//根據0-1之間的x,y的權重計算公式計算權重float w1 = (1-tx) * (1-ty);float w2 = tx * (1-ty);float w3 = (1-tx) * ty;float w4 = tx * ty;//3.根據雙線性插值公式計算第k個采樣點的灰度值float neighbor = src.at<_tp>(x1,y1) * w1 + src.at<_tp>(x1,y2) *w2 \+ src.at<_tp>(x2,y1) * w3 +src.at<_tp>(x2,y2) *w4;//通過比較獲得LBP值,并按順序排列起來lbpCode |= (neighbor>center) <<(neighbors-k-1);}dst.at<uchar>(i-radius,j-radius) = lbpCode;}} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
//圓形LBP特征計算,效率優化版本,聲明時默認neighbors=8 template <typename _tp> void getCircularLBPFeatureOptimization(InputArray _src,OutputArray _dst,int radius,int neighbors) {Mat src = _src.getMat();//LBP特征圖像的行數和列數的計算要準確_dst.create(src.rows-2*radius,src.cols-2*radius,CV_8UC1);Mat dst = _dst.getMat();dst.setTo(0);for(int k=0;k<neighbors;k++){//計算采樣點對于中心點坐標的偏移量rx,ryfloat rx = static_cast<float>(radius * cos(2.0 * CV_PI * k / neighbors));float ry = -static_cast<float>(radius * sin(2.0 * CV_PI * k / neighbors));//為雙線性插值做準備//對采樣點偏移量分別進行上下取整int x1 = static_cast<int>(floor(rx));int x2 = static_cast<int>(ceil(rx));int y1 = static_cast<int>(floor(ry));int y2 = static_cast<int>(ceil(ry));//將坐標偏移量映射到0-1之間float tx = rx - x1;float ty = ry - y1;//根據0-1之間的x,y的權重計算公式計算權重,權重與坐標具體位置無關,與坐標間的差值有關float w1 = (1-tx) * (1-ty);float w2 = tx * (1-ty);float w3 = (1-tx) * ty;float w4 = tx * ty;//循環處理每個像素for(int i=radius;i<src.rows-radius;i++){for(int j=radius;j<src.cols-radius;j++){//獲得中心像素點的灰度值_tp center = src.at<_tp>(i,j);//根據雙線性插值公式計算第k個采樣點的灰度值float neighbor = src.at<_tp>(i+x1,j+y1) * w1 + src.at<_tp>(i+x1,j+y2) *w2 \+ src.at<_tp>(i+x2,j+y1) * w3 +src.at<_tp>(i+x2,j+y2) *w4;//LBP特征圖像的每個鄰居的LBP值累加,累加通過與操作完成,對應的LBP值通過移位取得dst.at<uchar>(i-radius,j-radius) |= (neighbor>center) <<(neighbors-k-1);}}} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

測試結果:
radius = 3,neighbors = 8

第三幅圖像為radius = 3,neighbors = 8,第四幅圖像為radius = 1,neighbors = 8,從實驗結果可以看出,半徑越小,圖像紋理越精細

第三幅圖像為radius = 3,neighbors = 8,第四幅圖像為radius = 3,neighbors = 4,從實驗結果可以看出,鄰域數目越小,圖像亮度越低,合理,因此4位的灰度值很小
由于我代碼的問題,不能使neighbors >8,可改進

2.2 旋轉不變LBP特征

從上面可以看出,上面的LBP特征具有灰度不變性,但還不具備旋轉不變性,因此研究人員又在上面的基礎上進行了擴展,提出了具有旋轉不變性的LBP特征。

首先不斷的旋轉圓形鄰域內的LBP特征,根據選擇得到一系列的LBP特征值,從這些LBP特征值選擇LBP特征值最小的作為中心像素點的LBP特征。具體做法如下圖所示:

如圖,通過對得到的LBP特征進行旋轉,得到一系列的LBP特征值,最終將特征值最小的一個特征模式作為中心像素點的LBP特征。

//旋轉不變圓形LBP特征計算,聲明時默認neighbors=8 template <typename _tp> void getRotationInvariantLBPFeature(InputArray _src,OutputArray _dst,int radius,int neighbors) {Mat src = _src.getMat();//LBP特征圖像的行數和列數的計算要準確_dst.create(src.rows-2*radius,src.cols-2*radius,CV_8UC1);Mat dst = _dst.getMat();dst.setTo(0);for(int k=0;k<neighbors;k++){//計算采樣點對于中心點坐標的偏移量rx,ryfloat rx = static_cast<float>(radius * cos(2.0 * CV_PI * k / neighbors));float ry = -static_cast<float>(radius * sin(2.0 * CV_PI * k / neighbors));//為雙線性插值做準備//對采樣點偏移量分別進行上下取整int x1 = static_cast<int>(floor(rx));int x2 = static_cast<int>(ceil(rx));int y1 = static_cast<int>(floor(ry));int y2 = static_cast<int>(ceil(ry));//將坐標偏移量映射到0-1之間float tx = rx - x1;float ty = ry - y1;//根據0-1之間的x,y的權重計算公式計算權重,權重與坐標具體位置無關,與坐標間的差值有關float w1 = (1-tx) * (1-ty);float w2 = tx * (1-ty);float w3 = (1-tx) * ty;float w4 = tx * ty;//循環處理每個像素for(int i=radius;i<src.rows-radius;i++){for(int j=radius;j<src.cols-radius;j++){//獲得中心像素點的灰度值_tp center = src.at<_tp>(i,j);//根據雙線性插值公式計算第k個采樣點的灰度值float neighbor = src.at<_tp>(i+x1,j+y1) * w1 + src.at<_tp>(i+x1,j+y2) *w2 \+ src.at<_tp>(i+x2,j+y1) * w3 +src.at<_tp>(i+x2,j+y2) *w4;//LBP特征圖像的每個鄰居的LBP值累加,累加通過與操作完成,對應的LBP值通過移位取得dst.at<uchar>(i-radius,j-radius) |= (neighbor>center) <<(neighbors-k-1);}}}//進行旋轉不變處理for(int i=0;i<dst.rows;i++){for(int j=0;j<dst.cols;j++){unsigned char currentValue = dst.at<uchar>(i,j);unsigned char minValue = currentValue;for(int k=1;k<neighbors;k++){//循環左移unsigned char temp = (currentValue>>(neighbors-k)) | (currentValue<<k);if(temp < minValue){minValue = temp;}}dst.at<uchar>(i,j) = minValue;}} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

測試結果:
radius = 3,neighbors = 8,最后一幅是旋轉不變LBP特征

2.3 Uniform Pattern LBP特征

Uniform Pattern,也被稱為等價模式或均勻模式,由于一個LBP特征有多種不同的二進制形式,對于半徑為R的圓形區域內含有P個采樣點的LBP算子將會產生2P種模式。很顯然,隨著鄰域集內采樣點數的增加,二進制模式的種類是以指數形式增加的。例如:5×5鄰域內20個采樣點,有220=1,048,576種二進制模式。這么多的二進制模式不利于紋理的提取、分類、識別及存取。例如,將LBP算子用于紋理分類或人臉識別時,常采用LBP模式的統計直方圖來表達圖像的信息,而較多的模式種類將使得數據量過大,且直方圖過于稀疏。因此,需要對原始的LBP模式進行降維,使得數據量減少的情況下能最好的表示圖像的信息。

為了解決二進制模式過多的問題,提高統計性,Ojala提出了采用一種“等價模式”(Uniform Pattern)來對LBP算子的模式種類進行降維。Ojala等認為,在實際圖像中,絕大多數LBP模式最多只包含兩次從1到0或從0到1的跳變。因此,Ojala將“等價模式”定義為:當某個LBP所對應的循環二進制數從0到1或從1到0最多有兩次跳變時,該LBP所對應的二進制就稱為一個等價模式類。如00000000(0次跳變),00000111(只含一次從0到1的跳變),10001111(先由1跳到0,再由0跳到1,共兩次跳變)都是等價模式類。除等價模式類以外的模式都歸為另一類,稱為混合模式類,例如10010111(共四次跳變)。通過這樣的改進,二進制模式的種類大大減少,而不會丟失任何信息。模式數量由原來的2P種減少為 P ( P-1)+2種,其中P表示鄰域集內的采樣點數。對于3×3鄰域內8個采樣點來說,二進制模式由原始的256種減少為58種,即:它把值分為59類,58個uniform pattern為一類,其它的所有值為第59類。這樣直方圖從原來的256維變成59維。這使得特征向量的維數更少,并且可以減少高頻噪聲帶來的影響。

具體實現:采樣點數目為8個,即LBP特征值有28種,共256個值,正好對應灰度圖像的0-255,因此原始的LBP特征圖像是一幅正常的灰度圖像,而等價模式LBP特征,根據0-1跳變次數,將這256個LBP特征值分為了59類,從跳變次數上劃分:跳變0次—2個,跳變1次—0個,跳變2次—56個,跳變3次—0個,跳變4次—140個,跳變5次—0個,跳變6次—56個,跳變7次—0個,跳變8次—2個。共9種跳變情況,將這256個值進行分配,跳變小于2次的為等價模式類,共58個,他們對應的值按照從小到大分別編碼為1—58,即它們在LBP特征圖像中的灰度值為1—58,而除了等價模式類之外的混合模式類被編碼為0,即它們在LBP特征中的灰度值為0,因此等價模式LBP特征圖像整體偏暗。

//等價模式LBP特征計算 template <typename _tp> void getUniformPatternLBPFeature(InputArray _src,OutputArray _dst,int radius,int neighbors) {Mat src = _src.getMat();//LBP特征圖像的行數和列數的計算要準確_dst.create(src.rows-2*radius,src.cols-2*radius,CV_8UC1);Mat dst = _dst.getMat();dst.setTo(0);//LBP特征值對應圖像灰度編碼表,直接默認采樣點為8位uchar temp = 1;uchar table[256] = {0};for(int i=0;i<256;i++){if(getHopTimes(i)<3){table[i] = temp;temp++;}}//是否進行UniformPattern編碼的標志bool flag = false;//計算LBP特征圖for(int k=0;k<neighbors;k++){if(k==neighbors-1){flag = true;}//計算采樣點對于中心點坐標的偏移量rx,ryfloat rx = static_cast<float>(radius * cos(2.0 * CV_PI * k / neighbors));float ry = -static_cast<float>(radius * sin(2.0 * CV_PI * k / neighbors));//為雙線性插值做準備//對采樣點偏移量分別進行上下取整int x1 = static_cast<int>(floor(rx));int x2 = static_cast<int>(ceil(rx));int y1 = static_cast<int>(floor(ry));int y2 = static_cast<int>(ceil(ry));//將坐標偏移量映射到0-1之間float tx = rx - x1;float ty = ry - y1;//根據0-1之間的x,y的權重計算公式計算權重,權重與坐標具體位置無關,與坐標間的差值有關float w1 = (1-tx) * (1-ty);float w2 = tx * (1-ty);float w3 = (1-tx) * ty;float w4 = tx * ty;//循環處理每個像素for(int i=radius;i<src.rows-radius;i++){for(int j=radius;j<src.cols-radius;j++){//獲得中心像素點的灰度值_tp center = src.at<_tp>(i,j);//根據雙線性插值公式計算第k個采樣點的灰度值float neighbor = src.at<_tp>(i+x1,j+y1) * w1 + src.at<_tp>(i+x1,j+y2) *w2 \+ src.at<_tp>(i+x2,j+y1) * w3 +src.at<_tp>(i+x2,j+y2) *w4;//LBP特征圖像的每個鄰居的LBP值累加,累加通過與操作完成,對應的LBP值通過移位取得dst.at<uchar>(i-radius,j-radius) |= (neighbor>center) <<(neighbors-k-1);//進行LBP特征的UniformPattern編碼if(flag){dst.at<uchar>(i-radius,j-radius) = table[dst.at<uchar>(i-radius,j-radius)];}}}} } //計算跳變次數 int getHopTimes(int n) {int count = 0;bitset<8> binaryCode = n;for(int i=0;i<8;i++){if(binaryCode[i] != binaryCode[(i+1)%8]){count++;}}return count; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

測試結果:
radius = 3,neighbors = 8,最后一幅是等價模式LBP特征

2.4 MB-LBP特征

MB-LBP特征,全稱為Multiscale Block LBP,來源于論文[9],中科院的人發明的,在Traincascade級聯目標訓練檢測中的LBP特征使用的就是MB-LBP。
MB-LBP的原理:

將圖像分成一個個小塊(Block),每個小塊再分為一個個的小區域(類似于HOG中的cell),小區域內的灰度平均值作為當前小區域的灰度值,與周圍小區域灰度進行比較形成LBP特征,生成的特征稱為MB-LBP,Block大小為3*3,則小區域的大小為1,就是原始的LBP特征,上圖的Block大小為9*9,小區域的大小為3*3。

不同Block提取的MB-LBP特征如圖所示:

計算MB-LBP代碼:

//MB-LBP特征的計算 void getMultiScaleBlockLBPFeature(InputArray _src,OutputArray _dst,int scale) {Mat src = _src.getMat();Mat dst = _dst.getMat();//定義并計算積分圖像int cellSize = scale / 3;int offset = cellSize / 2;Mat cellImage(src.rows-2*offset,src.cols-2*offset,CV_8UC1);for(int i=offset;i<src.rows-offset;i++){for(int j=offset;j<src.cols-offset;j++){int temp = 0;for(int m=-offset;m<offset+1;m++){for(int n=-offset;n<offset+1;n++){temp += src.at<uchar>(i+n,j+m);}}temp /= (cellSize*cellSize);cellImage.at<uchar>(i-cellSize/2,j-cellSize/2) = uchar(temp); }}getOriginLBPFeature<uchar>(cellImage,dst); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

效果圖:
Block=3,即原始的LBP特征

Block=9

Block=15

到此為止,還沒有結束,作者對得到LBP特征又進行了均值模式編碼,通過對得到的特征圖求直方圖,得到了LBP特征值0-255之間(0-255即直方圖中的bin)的特征數量,通過對bin中的數值進行排序,通過權衡,將排序在前63位的特征值看作是等價模式類,其他的為混合模式類,總共64類,作者在論文中稱之為SEMB-LBP(Statistically Effective MB-LBP )。類似于等價模式LBP,等價模式的LBP的等價模式類為58種,混合模式類1種,共59種。二者除了等價模式類的數量不同之外,主要區別在于:對等價模式類的定義不同,等價模式LBP是根據0-1的跳變次數定義的,而SEMB-LBP是通過對直方圖排序得到的。當然下一步要做的就是將SEMB-LBP變為LBPH進行使用。

計算SEMB-LBP的代碼

//求SEMB-LBP void SEMB_LBPFeature(InputArray _src,OutputArray _dst,int scale) {Mat dst=_dst.getMat();Mat MB_LBPImage;getMultiScaleBlockLBPFeature(_src,MB_LBPImage,scale);//imshow("dst",dst);Mat histMat;int histSize = 256;float range[] = {float(0),float(255)};const float* ranges = {range};//計算LBP特征值0-255的直方圖calcHist(&MB_LBPImage,1,0,Mat(),histMat,1,&histSize,&ranges,true,false);histMat.reshape(1,1);vector<float> histVector(histMat.rows*histMat.cols);uchar table[256];memset(table,64,256);if(histMat.isContinuous()){//histVector = (int *)(histMat.data);//將直方圖histMat變為vector向量histVectorhistVector.assign((float*)histMat.datastart,(float*)histMat.dataend);vector<float> histVectorCopy(histVector);//對histVector進行排序,即對LBP特征值的數量進行排序,降序排列sort(histVector.begin(),histVector.end(),greater<float>());for(int i=0;i<63;i++){for(int j=0;j<histVectorCopy.size();j++){if(histVectorCopy[j]==histVector[i]){//得到類似于Uniform的編碼表table[j]=i;}}}}dst = MB_LBPImage;//根據編碼表得到SEMB-LBPfor(int i=0;i<dst.rows;i++){for(int j=0;j<dst.cols;j++){dst.at<uchar>(i,j) = table[dst.at<uchar>(i,j)];}} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

測試結果:
第二幅為對MB-LBP進行編碼得到的SEMB-LBP圖像

總結:MB-LBP有點類似于先將圖像進行平滑處理,然后再求LBP特征。而SEMB-LBP是在MB-LBP進行編碼后的圖像。類似于等價模式LBP,先求LBP特征,再用等價模式進行編碼。當Scale=3時,MB-LBP和SEMB-LBP就是LBP和等價模式LBP。想具體了解需要去看論文,當然要自己實現才會理解的更透徹。

三、LBPH——圖像的LBP特征向量

LBPH,Local Binary Patterns Histograms,即LBP特征的統計直方圖,LBPH將LBP特征與圖像的空間信息結合在一起。這種表示方法由Ahonen等人在論文[3]中提出,他們將LBP特征圖像分成m個局部塊,并提取每個局部塊的直方圖,然后將這些直方圖依次連接在一起形成LBP特征的統計直方圖,即LBPH。
一幅圖像具體的計算LBPH的過程(以Opencv中的人臉識別為例):

  • 計算圖像的LBP特征圖像,在上面已經講過了。
  • 將LBP特征圖像進行分塊,Opencv中默認將LBP特征圖像分成8行8列64塊區域
  • 計算每塊區域特征圖像的直方圖cell_LBPH,將直方圖進行歸一化,直方圖大小為1?numPatterns1?numPatterns
  • 將上面計算的每塊區域特征圖像的直方圖按分塊的空間順序依次排列成一行,形成LBP特征向量,大小為1?numPatterns?641?(numPatterns?64)
  • 用機器學習的方法對LBP特征向量進行訓練,用來檢測和識別目標
  • 舉例說明LBPH的維度:
    采樣點為8個,如果用的是原始的LBP或Extended LBP特征,其LBP特征值的模式為256種,則一幅圖像的LBP特征向量維度為:64*256=16384維,
    而如果使用的UniformPatternLBP特征,其LBP值的模式為59種,其特征向量維度為:64*59=3776維,可以看出,使用等價模式特征,其特征向量的維度大大減少,
    這意味著使用機器學習方法進行學習的時間將大大減少,而性能上沒有受到很大影響。
    Opencv的人臉識別使用的是Extended LBP

    計算LBPH的代碼如下:

    //計算LBP特征圖像的直方圖LBPH Mat getLBPH(InputArray _src,int numPatterns,int grid_x,int grid_y,bool normed) {Mat src = _src.getMat();int width = src.cols / grid_x;int height = src.rows / grid_y;//定義LBPH的行和列,grid_x*grid_y表示將圖像分割成這么些塊,numPatterns表示LBP值的模式種類Mat result = Mat::zeros(grid_x * grid_y,numPatterns,CV_32FC1);if(src.empty()){return result.reshape(1,1);}int resultRowIndex = 0;//對圖像進行分割,分割成grid_x*grid_y塊,grid_x,grid_y默認為8for(int i=0;i<grid_x;i++){for(int j=0;j<grid_y;j++){//圖像分塊Mat src_cell = Mat(src,Range(i*height,(i+1)*height),Range(j*width,(j+1)*width));//計算直方圖Mat hist_cell = getLocalRegionLBPH(src_cell,0,(numPattern-1),true);//將直方圖放到result中Mat rowResult = result.row(resultRowIndex);hist_cell.reshape(1,1).convertTo(rowResult,CV_32FC1);resultRowIndex++;}}return result.reshape(1,1); } //計算一個LBP特征圖像塊的直方圖 Mat getLocalRegionLBPH(const Mat& src,int minValue,int maxValue,bool normed) {//定義存儲直方圖的矩陣Mat result;//計算得到直方圖bin的數目,直方圖數組的大小int histSize = maxValue - minValue + 1;//定義直方圖每一維的bin的變化范圍float range[] = { static_cast<float>(minValue),static_cast<float>(maxValue + 1) };//定義直方圖所有bin的變化范圍const float* ranges = { range };//計算直方圖,src是要計算直方圖的圖像,1是要計算直方圖的圖像數目,0是計算直方圖所用的圖像的通道序號,從0索引//Mat()是要用的掩模,result為輸出的直方圖,1為輸出的直方圖的維度,histSize直方圖在每一維的變化范圍//ranges,所有直方圖的變化范圍(起點和終點)calcHist(&src,1,0,Mat(),result,1,&histSize,&ranges,true,false);//歸一化if(normed){result /= (int)src.total();}//結果表示成只有1行的矩陣return result.reshape(1,1); }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    總結:上面的LBP特征都是較經典的LBP特征,除此之外,LBP特征還有大量的變種,如TLBP(中心像素與周圍所有像素比較,而不是根據采樣點的數目),DLBP(編碼標準四個方向的灰度變化,每個方向上用2比特編碼),MLBP(將中心像素值替換成采樣點像素的平均值),MB-LBP(上面有介紹),VLBP(沒太看懂),RGB-LBP(RGB圖像分別計算LBP,然后連接在一起)等,具體的需要自己去研究,可參考維基百科

    四、LBP特征的匹配與使用

    1、LBP特征用在目標檢測中

    人臉檢測比較出名的是Haar+Adaboost方法,其實目前的Opencv也支持LBP+Adaboost和HOG+Adaboost方法進行目標檢測,從目前我的使用效果來看,LBP+Adaboost方法用在目標檢測中的效果比Haar特征、HOG特征都要好(HOG特征用的不多,主要是Haar和LBP),而且LBP特征的訓練速度比Haar和HOG都要快很多。在LBP+Adaboost中,LBP特征主要是用作輸入的訓練數據(特征),使用的LBP特征應該是DLBP(維基百科上說的,待考證,沒太看明白Cascade中LBP特征的計算方式),具體用法需要看源碼。Opencv的TrainCascade中使用的LBP特征是MB-LBP。
    老外的對Opencv級聯檢測中使用的LBP的解釋(非常好,自己讀,就不翻譯了),在看這個之前最好是運行過TrainCascade來訓練目標檢測的分類器,并使用過LBP特征訓練,調節過參數[8]:

    OpenCV ships with a tool called traincascade that trains LBP, Haar and HOG. Specifically for face detection they even ship the 3000-image dataset of 24x24 pixel faces, in the format needed bytraincascade.

    In my experience, of the three types traincascade supports, LBP takes the least time to train, taking on the order of hours rather than days for Haar.

    A quick overview of its training process is that for the given number of stages (a decent choice is 20), it attempts to find features that reject as many non-faces as possible while not rejecting the faces. The balance between rejecting non-faces and keeping faces is controlled by the mininum hit rate (OpenCV chose 99.5%) and false alarm rate (OpenCV chose 50%). The specific meta-algorithm used for crafting OpenCV’s own LBP cascade is Gentle AdaBoost (GAB).

    The variant of LBP implemented in OpenCV is described here:

    Shengcai Liao, Xiangxin Zhu, Zhen Lei, Lun Zhang and Stan Z. Li. Learning Multi-scale Block Local Binary Patterns for Face Recognition. International Conference on Biometrics (ICB), 2007, pp. 828-837.

    What it amounts to in practice in OpenCV with default parameters is:

    OpenCV LBP Cascade Runtime Overview

    The detector examines 24x24 windows within the image looking for a face. Stepping from Stage 1 to 20 of the cascade classifier, if it can show that the current 24x24 window is likely not a face, it rejects it and moves over the window by one or two pixels over to the next position; Otherwise it proceeds to the next stage.

    During each stage, 3-10 or so LBP features are examined. Every LBP feature has an offset within the window and a size, and the area it covers is fully contained within the current window. Evaluating an LBP feature at a given position can result in either a pass or fail. Depending on whether an LBP feature succeeds or fails, a positive or negative weight particular to that feature is added to an accumulator.

    Once all of a stage’s LBP features are evaluated, the accumulator’s value is compared to the stage threshold. A stage fails if the accumulator is below the threshold, and passes if it is above. Again, if a stage fails, the cascade is exited and the window moves to the next position.

    LBP feature evaluation is relatively simple. At that feature’s offset within the window, nine rectangles are laid out in a 3x3 configuration. These nine rectangles are all the same size for a particular LBP feature, ranging from 1x1 to 8x8.

    The sum of all the pixels in the nine rectangles are computed, in other words their integral. Then, the central rectangle’s integral is compared to that of its eight neighbours. The result of these eight comparisons is eight bits (1 or 0), which are assembled in an 8-bit LBP.

    This 8-bit bitvector is used as an index into a 2^8 == 256-bit LUT, computed by the training process and particular to each LBP feature, that determines whether the LBP feature passed or failed.

    2、LBP用在人臉識別中

    LBP在人臉識別中比較出名,從源碼上來看,人臉識別中LBPH的使用主要是用來進行直方圖的比較,通過直方圖的比較來判斷目標的類別。在Opencv的基于LBP的人臉識別的實現中使用的LBP特征是Extendes LBP,即圓形LBP特征。參考的論文為文獻[10]。

    LBPH訓練主要是提取輸入的圖像的LBPH保存,當進行識別時,遍歷保存的LBPH,找到輸入圖像與訓練圖像方差最小的LBPH,將其對應的類別作為識別的類別輸出。
    用LBPH進行訓練和識別的代碼。

    #include<iostream> #include<opencv2\core\core.hpp> #include<opencv2\highgui\highgui.hpp> #include<opencv2\imgproc\imgproc.hpp> #include<opencv2\contrib\contrib.hpp>using namespace std; using namespace cv;int main(int argc,char* argv[]) {vector<Mat> images;vector<int> labels;char buff[10];for(int i=1;i<8;i++){sprintf(buff,"0%d.tif",i);Mat image = imread(buff);Mat grayImage;cvtColor(image,grayImage,COLOR_BGR2GRAY);images.push_back(grayImage);labels.push_back(1);}for(int i=8;i<12;i++){sprintf(buff,"0%d.tif",i);Mat image = imread(buff);Mat grayImage;cvtColor(image,grayImage,COLOR_BGR2GRAY);images.push_back(grayImage);labels.push_back(2);}Ptr<FaceRecognizer> p = createLBPHFaceRecognizer();p->train(images,labels);Mat test= imread("12.tif");Mat grayImage;cvtColor(test,grayImage,COLOR_BGR2GRAY);int result = p->predict(grayImage);cout<<result<<endl;system("pause");return 0; }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    測試結果:


    總結

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

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

    福利电影久久 | 色a在线观看 | 国产区在线看 | 亚洲国产精品日韩 | 国产精品青草综合久久久久99 | 99久久精品国产观看 | 少妇精69xxtheporn | 亚洲精品久久久久久国 | 免费看的黄色网 | 国产日韩精品一区二区三区在线 | 日韩精品中文字幕在线不卡尤物 | 亚洲黄色高清 | 久久久黄色av | 日韩在线精品 | 五月激情av| 亚洲国产69| 日韩三区在线观看 | 国产一级电影免费观看 | 成人免费 在线播放 | 最新中文字幕视频 | 日本精品视频网站 | 欧美性精品 | 亚洲视频一级 | 精精国产xxxx视频在线播放 | 美女免费网站 | av免费黄色 | 狠狠的操你 | 狠狠躁日日躁狂躁夜夜躁av | 丰满少妇一级片 | 四虎国产永久在线精品 | 国产成人精品久久 | 日韩在线视频不卡 | 国产精品k频道 | 日韩艹| 久久久久久久久免费视频 | 国产一区二区在线播放视频 | 亚洲精品乱码久久久久 | 在线视频婷婷 | 国产v在线观看 | 婷婷伊人综合亚洲综合网 | 91成人短视频在线观看 | 在线影院av | 97综合网| 视频一区二区三区视频 | 美女网站黄免费 | 狠狠色伊人亚洲综合网站色 | 91污污| 久久香蕉影视 | 欧美激情视频三区 | 国产精品中文字幕av | 午夜少妇av | 国产精品久久久久9999 | 免费日韩一区二区 | 天天操天天怕 | 久久久国产精品亚洲一区 | 久草com| 天天操夜夜操 | 91专区在线观看 | 亚洲激情综合网 | 国产剧在线观看片 | 性色视频在线 | 欧美人操人| 日韩艹| 一区二区免费不卡在线 | 日韩精品一区二区三区在线播放 | 色插综合 | 国产一级片久久 | 日本精品一二区 | 国产成人av电影 | 一区二区三区不卡在线 | 色婷婷六月天 | 亚洲精品国产第一综合99久久 | 91国内产香蕉 | 超碰97久久 | 国产成人精品福利 | 狠狠色丁香久久综合网 | 97成人精品视频在线观看 | 伊人五月天综合 | 人人干人人搞 | av电影一区 | 久久精品一二三区白丝高潮 | 亚洲精品视频大全 | 在线观看一级 | 五月婷丁香网 | 免费成人黄色片 | 久久精品中文字幕免费mv | 波多野结衣动态图 | 亚洲久在线| 久久久久国产精品厨房 | 日韩91av | 欧美aⅴ在线观看 | 日韩av在线小说 | 五月激情视频 | 亚洲欧美日韩国产一区二区三区 | 综合色综合| 高清av在线免费观看 | 97日日| 免费毛片一区二区三区久久久 | 久久国产品 | 国产一区电影在线观看 | 五月婷婷,六月丁香 | 99精品视频免费观看 | 欧美在线99| 在线中文字幕av观看 | 日韩二区在线 | av在线免费观看不卡 | 欧美一级片 | 国产伦精品一区二区三区四区视频 | 中文字幕久久精品 | 亚洲天天看 | 超碰在线人人草 | 亚洲精品国产精品乱码不99热 | 日韩av免费大片 | 日韩精品免费专区 | 国产一级特黄毛片在线毛片 | 色偷偷88欧美精品久久久 | 在线免费观看的av | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产在线中文字幕 | 国产日韩欧美在线一区 | 天堂在线视频免费观看 | 在线免费观看麻豆视频 | 免费视频成人 | 国产免费观看高清完整版 | 日韩一区二区三区观看 | 成人看片 | 久草视频在线看 | 日韩高清www | 九九久久久久久久久激情 | 日本三级国产 | 96久久欧美麻豆网站 | 国产精品中文在线 | 黄色福利网 | 看片在线亚洲 | 深爱婷婷 | 五月天中文字幕mv在线 | 久久精品日产第一区二区三区乱码 | 国产99久久99热这里精品5 | 亚洲精品在线免费看 | 免费a级黄色毛片 | av在线电影免费观看 | 久久人人添人人爽添人人88v | 特级a老妇做爰全过程 | 久久国产色 | 手机看片国产 | 91丨九色丨蝌蚪丨老版 | 色综合欧洲 | 亚洲一区久久久 | 美女黄久久 | 久久一本综合 | 久久精品99精品国产香蕉 | 欧美日韩二区三区 | 又黄又刺激 | 免费av小说 | 亚洲精品理论片 | 麻豆传媒电影在线观看 | 丁香婷婷亚洲 | 久久再线视频 | 国产精品不卡在线 | 日韩精品亚洲专区在线观看 | 日韩久久精品一区二区三区下载 | 国产色在线 | 91看片淫黄大片在线播放 | 久久久久久久久久免费 | 欧美精品久久久久久久久免 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 色综合久久88色综合天天 | 亚洲精品国偷拍自产在线观看蜜桃 | a'aaa级片在线观看 | 色在线免费观看 | 国产视频精选 | 日韩三级视频 | 四虎影视成人精品国库在线观看 | 四虎4hu永久免费 | 国产免费av一区二区三区 | 日韩电影中文字幕在线 | 黄色福利| 久久天堂影院 | 精品国产一区二区三区久久影院 | 久久久久久久久久免费 | 69国产精品视频免费观看 | 日韩性久久| 日日干精品 | 天天综合狠狠精品 | 97国产人人 | 天天躁日日躁狠狠躁av中文 | 欧美另类网站 | www.狠狠操.com | 91大神电影 | 不卡的av电影 | 午夜av大片 | 国产美女视频一区 | 国产精品国产精品 | 国产香蕉视频在线观看 | 亚洲人久久 | 久久99精品国产麻豆婷婷 | 在线免费黄 | 99精品观看| 中文字幕网站 | 欧美另类网站 | 91视频免费视频 | 久久久久福利视频 | 日日夜夜精品视频天天综合网 | 久久久精品国产一区二区三区 | 日韩免费专区 | 51久久成人国产精品麻豆 | 999久久久国产精品 高清av免费观看 | 91色影院| 国产精品免费在线播放 | 啪啪免费观看网站 | www日韩欧美 | 欧美日韩在线视频一区二区 | 免费视频91 | 免费高清在线视频一区· | 国模一二三区 | 日韩av免费大片 | 在线日本看片免费人成视久网 | 婷婷色网站 | 国产成人精品一区二区三区网站观看 | 在线av资源| 少妇bbb | 97久久久免费福利网址 | 久久9999久久免费精品国产 | 成年人视频在线免费观看 | 免费色黄 | а中文在线天堂 | av九九 | 久久精品一区二区三区视频 | 在线成人性视频 | www.婷婷色 | 西西www4444大胆视频 | 男女精品久久 | 9色在线视频 | 久久成年人 | 国产在线不卡视频 | 国产高清日韩欧美 | 91高清免费观看 | 日本三级大片 | 激情久久伊人 | 又黄又爽的免费高潮视频 | 欧美精品免费在线观看 | 在线欧美日韩 | 日韩电影在线观看一区 | 国产精品网站一区二区三区 | 亚洲精品玖玖玖av在线看 | 国产理论片在线观看 | 色国产精品 | 日女人电影 | 97视频在线免费观看 | 国产美女久久久 | 四虎成人免费影院 | 亚洲 欧洲av| 一区 二区 精品 | 国产成人精品一区二区三区在线观看 | 午夜视频黄 | 丁香婷婷激情啪啪 | 亚洲精品高清视频在线观看 | 有没有在线观看av | 成人av片免费观看app下载 | 色婷婷电影 | 日本深夜福利视频 | 久章草在线观看 | 日韩精品久久久 | 在线成人高清电影 | 久久久精品欧美 | 亚洲狠狠婷婷 | 欧美日韩在线观看视频 | 欧美最爽乱淫视频播放 | 瑞典xxxx性hd极品 | 毛片网站在线看 | 在线观看韩国av | 99精彩视频在线观看免费 | 日韩精品视频在线免费观看 | 久草在线欧美 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲va在线va天堂va偷拍 | 日韩午夜网站 | 免费国产在线精品 | 国产亚洲精品成人av久久ww | 久久国产精品精品国产色婷婷 | 亚洲精品一区二区三区在线观看 | 最新91在线视频 | 免费三级网 | 伊人永久 | 久久久久久久久久亚洲精品 | 免费性网站 | 亚洲国产精品999 | 韩国精品一区二区三区六区色诱 | 久久久久电影 | 福利片免费看 | 免费观看一区二区三区视频 | 亚洲免费成人 | 天堂av网站| 国产精品高清在线观看 | 久久高清国产 | 久久在线免费观看视频 | 91成品视频 | 亚洲国产精品500在线观看 | 国产视频日韩 | 九九热只有这里有精品 | 97免费视频在线播放 | 中文字幕在线影视资源 | 久久噜噜少妇网站 | 免费人人干 | 草久久久久久久 | 亚洲综合色丁香婷婷六月图片 | 久久久久久久电影 | 菠萝菠萝在线精品视频 | 日韩欧美在线免费观看 | 91看片在线免费观看 | 天天艹| 韩国一区在线 | 国产91成人在在线播放 | 亚洲综合在线视频 | 高清国产午夜精品久久久久久 | 91黄色影视 | 天天操福利视频 | 国产精品99久久免费观看 | 99免费在线观看视频 | 国产精品免费视频一区二区 | 亚洲视频专区在线 | 国产精品孕妇 | 日日夜夜精品免费观看 | 黄色av大片 | 黄色三级网站在线观看 | 91麻豆精品国产午夜天堂 | 久久夜色精品国产欧美乱 | www.国产精品 | 国产精品黄色影片导航在线观看 | 美女视频黄色免费 | 毛片在线播放网址 | 懂色av一区二区三区蜜臀 | www色| 中文日韩在线视频 | 国产精品原创视频 | 成人羞羞视频在线观看免费 | 久久久久免费网站 | 日本三级国产 | 欧美一级大片在线观看 | 天天想夜夜操 | 国产麻豆视频 | 色五月激情五月 | 五月婷婷综合激情网 | 久久a级片| www.久久视频 | www天天操 | 日本黄区免费视频观看 | 波多野结衣视频在线 | 免费成人av电影 | 怡红院av | 亚洲在线免费视频 | 亚洲天天草 | 久久久久国产一区二区三区四区 | 蜜桃视频在线观看一区 | 亚洲国产精品成人va在线观看 | 亚洲综合色丁香婷婷六月图片 | 99精品久久久久久久 | 在线免费观看黄色av | 国产精品久久精品 | 亚洲视频电影在线 | 2021国产在线视频 | 在线成人欧美 | 久久综合精品一区 | 一区二区三区影院 | 国产精品一区二区中文字幕 | 五月婷婷色播 | 日韩精品久久久免费观看夜色 | 国产成人在线综合 | 久久精品高清视频 | 久黄色 | 夜夜澡人模人人添人人看 | 日韩中文字幕免费在线播放 | 99久视频| 亚洲精品在线观 | 精品免费国产一区二区三区四区 | 国产高清成人在线 | 人人澡人人澡人人 | 色综合中文综合网 | 日韩激情片在线观看 | 在线免费观看欧美日韩 | 免费三级黄色片 | 国产午夜精品一区二区三区在线观看 | 国产亚洲精品久久久久久大师 | 97在线视频免费观看 | 成人免费视频播放 | 日日干网| 日韩免费精品 | 日韩在线视频看看 | 国模视频一区二区 | 国产成人久久精品 | 亚洲精品国产精品国自产 | 天天摸天天舔天天操 | 极品久久久久久久 | 免费在线播放黄色 | 97电影手机 | 99精品在线直播 | 精品国产伦一区二区三区观看方式 | 在线视频免费观看 | 中文字幕在线色 | 黄色成人小视频 | 五月激情丁香婷婷 | 日韩二三区 | 精品国产一区二区三区久久久 | 日韩h在线观看 | 国产视频精品免费播放 | 欧美一级视频免费看 | 超碰国产在线观看 | 伊人电影天堂 | 黄色大片国产 | 国产视频在线观看一区 | 日韩黄色在线观看 | 午夜国产一区 | 超碰97.com| 天天色天天射天天干 | 国产一卡二卡在线 | 在线观看一二三区 | 黄色av免费看 | 亚洲国产精品久久 | 午夜成人免费电影 | 蜜臀精品久久久久久蜜臀 | 福利一区二区在线 | 日日夜夜人人天天 | 免费在线观看av网址 | a√天堂中文在线 | 午夜av免费在线观看 | 欧美性色xo影院 | 黄色性av | 在线涩涩| 亚洲午夜精品一区二区三区电影院 | 中文字幕一区二区三区久久蜜桃 | 综合网五月天 | 久久成年人视频 | 在线综合 亚洲 欧美在线视频 | 91精品网站在线观看 | 91九色视频在线 | 久久综合色播五月 | 免费人成在线观看网站 | 免费av看片 | 久久久免费高清视频 | 成人久久亚洲 | 1000部18岁以下禁看视频 | 欧美污污网站 | 麻豆视频免费在线观看 | 国产一区二区三区高清播放 | 激情黄色一级片 | av电影在线免费 | 激情久久久久 | 亚洲国产精品成人精品 | 日韩在线第一 | 制服丝袜在线 | 国产呻吟在线 | 欧美激情第八页 | 日韩精品一区二区三区免费观看 | 婷婷深爱网| 日韩91精品 | 欧美久久久久 | 欧美日韩另类在线观看 | 日韩免费一级a毛片在线播放一级 | 亚洲一级电影在线观看 | 精品99在线 | 国产精品乱码在线 | 国产精品入口传媒 | 涩涩爱夜夜爱 | 国产精品永久在线 | 天天射天天拍 | 成人影片在线免费观看 | 丝袜美腿在线播放 | 日韩91精品 | 97超碰国产在线 | 成人黄色一级视频 | 成人97视频 | 日韩高清一区在线 | 欧美日韩一级久久久久久免费看 | 亚洲国产综合在线 | 久久手机免费观看 | 色婷婷播放 | 精品一区二区亚洲 | 91麻豆国产| 成人午夜精品久久久久久久3d | 日韩高清成人在线 | 91看片在线 | 成年人免费在线观看网站 | 天天操网| 色婷婷一区 | 黄色aaa级片 | 日韩黄色软件 | 欧美在线视频一区二区三区 | 精品 一区 在线 | 欧美午夜性 | 国产做爰视频 | 亚洲精品综合在线观看 | 中文字幕在线看视频国产中文版 | 午夜免费福利片 | 亚洲视频 视频在线 | 久久少妇 | 丁香婷婷综合五月 | 精品免费观看 | a黄色片在线观看 | 正在播放亚洲精品 | 超碰人人干人人 | 精品国产欧美一区二区 | 欧美一级电影在线观看 | 国产少妇在线观看 | 国产精品成人久久久 | 高清日韩一区二区 | 欧美久久久久久久久久久久 | 69国产精品视频免费观看 | adn—256中文在线观看 | 免费三及片 | 亚洲视频综合 | 亚洲第一区精品 | 久草免费在线 | 久久久久久久久综合 | 亚州精品天堂中文字幕 | 一区二区在线不卡 | 久草视频网| 91成人免费 | 黄色免费av | 天天干com| 国产成人精品电影久久久 | 精品国产一区二区三区在线观看 | 激情久久久久久久久久久久久久久久 | 久草网免费 | 亚洲精品乱码久久久久久按摩 | 最近中文字幕免费av | 娇妻呻吟一区二区三区 | 国产一区欧美在线 | www久久国产 | 欧美日本啪啪无遮挡网站 | 99亚洲视频 | 成人影视免费 | 亚洲高清视频在线观看免费 | 日本资源中文字幕在线 | 日本在线观看中文字幕 | 久久久999 | 国产成人免费高清 | 国产一区二区精品久久91 | 天堂黄色片 | 免费网站观看www在线观看 | 国产福利av在线 | 成人动漫视频在线 | 九九九九九精品 | 麻豆果冻剧传媒在线播放 | 国产精品免费久久久久影院仙踪林 | 天天操天天干天天综合网 | 西西444www大胆高清图片 | 久久国产精品久久w女人spa | 亚洲永久在线 | 日韩免费网址 | 日本一区二区三区免费看 | 日日操网 | 国产福利a | 精品免费观看视频 | 99免费在线观看视频 | 中文字幕在线观看视频一区二区三区 | 日本精品久久久久久 | 国产国产人免费人成免费视频 | 免费视频成人 | 日韩电影中文 | 婷婷久操 | 精品视频999| 成人在线播放av | 久久久久久久久久久久亚洲 | 国产福利专区 | 中文字幕999| 国产中文字幕一区 | 亚洲精品美女视频 | 亚洲综合网 | 国产精品久久久久久久久久直播 | 日韩在线观看中文字幕 | 欧美久草网| 视频国产在线 | 手机av电影在线 | 在线直播av| 6080yy精品一区二区三区 | 久久精品视频观看 | 中文字幕无吗 | 超碰97人人干 | 精品中文字幕在线观看 | 久久精品精品电影网 | 国产亚洲精品久久久久久久久久久久 | 亚洲精品一区二区网址 | 伊人色综合久久天天网 | 最新av在线网站 | 成人四虎影院 | 国产精品精品国产色婷婷 | 国产免费成人 | 国产+日韩欧美 | 国产精品 999 | 99久久精品免费 | 国产精品123| 欧美韩国日本在线 | 久久国产高清 | 久久久国产一区 | 日韩精品久久中文字幕 | 激情电影影院 | 精品久久在线 | 免费一级日韩欧美性大片 | 亚洲国产精品va在线看黑人动漫 | 天堂av在线网站 | 精品一区二区免费 | 色91在线| 国产不卡视频在线 | 天天操夜夜操 | av电影亚洲 | 九九久久精品视频 | 国产区精品在线观看 | av视屏在线播放 | 蜜臀久久99静品久久久久久 | 国产精品99久久久精品 | 国产五月 | 天天操天天舔天天干 | 国产精品乱码一区二区视频 | 国产美女免费看 | 中文字幕中文 | 区一区二在线 | 国内精品久久久久久久 | 久久观看最新视频 | www五月天婷婷| 91黄视频在线观看 | 久久黄色片子 | 国产精品不卡一区 | 狠狠操狠狠插 | 97精品国自产拍在线观看 | 中文字幕色婷婷在线视频 | 亚洲精品999| 日本中文字幕影院 | 91在线超碰 | 欧美日韩一区二区视频在线观看 | 精品国产片 | 亚洲永久精品在线 | 亚洲黄色av | 久热爱 | www激情com| 国产精品久久久久久爽爽爽 | 黄色大片免费播放 | 国产精品原创 | 久久久久久高清 | 精品一区二区亚洲 | 亚洲视频综合在线 | 美女啪啪图片 | av高清在线观看 | 久久在线免费观看 | 欧美精品久久久久久久 | 就操操久久 | 91av大全| 国产乱视频 | 日韩免费网址 | 久久99热久久99精品 | 欧美日韩在线视频免费 | 亚洲成人蜜桃 | 午夜视频免费 | 在线亚洲高清视频 | 日本天天色| 日韩中文字幕免费视频 | 91成人精品 | 最近中文字幕在线中文高清版 | 日日婷婷夜日日天干 | 337p日本欧洲亚洲大胆裸体艺术 | 国产98色在线 | 日韩 | 一级黄色片在线免费观看 | 欧美极品一区二区三区 | 婷婷免费视频 | 欧美日韩免费一区二区 | 91九色在线观看 | 日本黄色大片儿 | 久久精品中文 | 婷婷新五月 | 青春草免费视频 | av大片免费 | 日韩精品视频免费专区在线播放 | 久久久精品 一区二区三区 国产99视频在线观看 | 一区二区男女 | 成人黄色av免费在线观看 | 欧美一级小视频 | 国产精品免费大片视频 | 激情五月婷婷激情 | 96精品高清视频在线观看软件特色 | 日本韩国精品在线 | 午夜影院先 | 国产黄a三级三级三级三级三级 | 亚洲波多野结衣 | 亚洲专区一二三 | 国产精品久久久久久久av电影 | av电影不卡在线 | 在线成人免费电影 | 91av在线精品 | av直接看 | av+在线播放在线播放 | 在线观看福利网站 | 黄色一级性片 | 国产成人99av超碰超爽 | 成人黄色电影免费观看 | 亚洲精品黄网站 | 日本中文字幕观看 | 国产精品久久久久久超碰 | 国产精品欧美日韩在线观看 | 国产精品美女免费看 | 黄色在线小网站 | 狠狠干夜夜操天天爽 | 日韩欧美高清一区二区三区 | 婷婷射五月 | 日韩精品视频免费看 | 97超级碰碰 | 天天色天天射综合网 | 91九色蝌蚪视频在线 | 婷婷国产v亚洲v欧美久久 | 91久久精品一区二区二区 | 人人插人人看 | 亚洲精品视频网址 | 国产精品18毛片一区二区 | 日女人电影 | 91精品国自产在线观看欧美 | 三级黄色欧美 | 五月婷婷六月综合 | 久久综合婷婷国产二区高清 | 91网址在线看 | 国产黄色免费 | 国产在线观看a | 69av国产 | 亚洲欧洲精品久久 | 国产午夜精品一区二区三区 | 激情 亚洲| 97超碰人人澡人人 | 四虎国产精 | 日本99干网 | 国产精品久久在线观看 | 2023国产精品自产拍在线观看 | 色吊丝在线永久观看最新版本 | 日本女人的性生活视频 | 亚洲天堂自拍视频 | 亚洲国产精品久久久久久 | 亚洲国产精品小视频 | 欧美一区二视频在线免费观看 | 麻豆视频在线免费看 | 国产精品中文字幕av | 深爱激情五月网 | 9在线观看免费高清完整 | 国模精品一区二区三区 | 午夜12点 | 中文字幕在线观看免费高清完整版 | 亚洲精品午夜久久久久久久 | 91传媒激情理伦片 | 国产精品久久久久久久毛片 | 国产一区成人 | 亚洲国产精品va在线 | 久久免费视频网站 | 色综合天天色综合 | 中文免费观看 | 激情欧美一区二区免费视频 | 在线v片免费观看视频 | 超碰在线人人爱 | 国产成人99av超碰超爽 | 国产又黄又爽又猛视频日本 | 精品视频资源站 | 亚洲精品美女久久17c | 国产精品专区在线观看 | 最近在线中文字幕 | 久久婷婷丁香 | 国产精品美女久久久久久久 | 999精品| 国产成人性色生活片 | 精品视频网站 | 中文字幕在线视频免费播放 | 亚洲爱爱视频 | 97av视频在线观看 | 日日夜夜爱 | 日本中文字幕久久 | 久久久黄色免费网站 | 欧美aaa大片 | 欧美日韩国产欧美 | 私人av | 人人干人人艹 | 97电影在线 | 在线天堂视频 | 国产高潮久久 | 国产中文字幕三区 | 黄色一级大片在线免费看国产一 | av电影中文字幕 | 91精选| 国产一区免费视频 | 国产精品毛片久久蜜 | 91亚洲免费 | 久久久www成人免费精品 | 色五丁香 | 久久免费资源 | a在线视频v视频 | 久久久久久久福利 | 香蕉视频导航 | 碰碰影院| 精品视频免费观看 | 亚洲妇女av | 97视频一区 | 久久黄色a级片 | 一本一本久久aa综合精品 | 国产精品美女 | 超碰97公开 | 91九色网址 | 蜜臀av网址 | 日韩免费在线视频 | 日韩精品三区四区 | 久久草在线免费 | 激情开心站| 日日干影院| 中文字幕av电影下载 | 亚洲欧美视频 | 狠狠狠狠狠操 | 97精品国产91久久久久久久 | 亚洲国产成人高清精品 | 久久久久久国产精品免费 | 免费色视频网站 | 夜夜躁狠狠躁日日躁 | 亚在线播放中文视频 | 午夜精品一区二区三区视频免费看 | 日韩视频一区二区在线 | 99热这里只有精品8 久久综合毛片 | 日韩欧美高清视频在线观看 | 亚洲综合视频在线 | 久久久久久久久久久免费视频 | 久久精品久久精品久久 | 久久久久久久久久久久电影 | 激情 婷婷 | 91香蕉视频黄| 国产xx在线 | 久插视频 | 九九视频网站 | 久久国产精品视频观看 | 午夜精品电影一区二区在线 | 久久黄色免费视频 | 亚洲国产偷 | 亚洲男人天堂a | 91视频这里只有精品 | 狠狠色丁香久久综合网 | 丰满少妇在线观看资源站 | 久久美女视频 | 免费一区在线 | 在线观看成人一级片 | 超碰在线94| 国内精品视频一区二区三区八戒 | 久久视屏网 | 亚洲精品综合一二三区在线观看 | 国产视频欧美视频 | 欧美在线视频免费 | 狠狠色丁香婷婷综合欧美 | 国产黄a三级三级 | 国产精品18久久久久久首页狼 | 国产精品久久久久久久久久久久 | 日韩av网页 | av在线观| 三级av黄色 | 91久久国产综合精品女同国语 | 蜜桃av综合网| 久久影视网 | av在线看网站 | 日本公妇色中文字幕 | 成人av午夜 | 91免费在线播放 | 久草干| 92国产精品久久久久首页 | 亚洲综合色婷婷 | 日韩视频在线不卡 | 国产精品久久久久久久久久久杏吧 | 精品国产一区二区三区久久久蜜臀 | 永久中文字幕 | 亚洲一区日韩在线 | 激情av资源网 | 国产成人a亚洲精品v | 免费在线一区二区 | 亚洲免费婷婷 | 黄色av一级 | 免费一级特黄录像 | 91九色最新地址 | 有码中文在线 | 亚洲精品乱码久久久久久高潮 | 久久精品高清视频 | 在线国产视频观看 | 成人午夜电影免费在线观看 | 国产理论免费 | 狠狠干综合 | 国产第一页福利影院 | 91亚洲夫妻 | 天天综合网久久综合网 | 亚洲国产精品电影在线观看 | 色吧久久 | 天堂在线视频中文网 | 91av原创 | 免费观看不卡av | 免费99视频| 欧洲精品码一区二区三区免费看 | 国产精品久久久久久久久久东京 | 成人a免费| 欧美老人xxxx18 | 特级a毛片 | 国产成人综合在线观看 | 国产精品美乳一区二区免费 | 亚洲激情小视频 | 国产一级黄色电影 | 国产h在线观看 | 欧美一区二区三区四区夜夜大片 | 亚洲精品资源 | 国产亚洲精品久久19p | 激情久久久久久久久久久久久久久久 | 国产小视频你懂的在线 | 国产精品一区二区久久精品爱微奶 | 午夜 免费 | 亚洲成色 | 在线观看一区二区精品 | 日韩三级一区 | 日韩免费视频在线观看 | 久久久九九| 久久不见久久见免费影院 | 久久99精品国产99久久 | 国产免费高清视频 | av在线网站大全 | 国产福利免费看 | 国产精品一区二区电影 | 碰超在线观看 | 97在线免费视频 | 国产成人精品亚洲a | 欧美日韩国产亚洲乱码字幕 | 欧美性色综合网站 | 久久久久免费看 | 黄色a视频免费 | 五月婷婷六月丁香激情 | 青青草视频精品 | 91九色精品 | 亚洲最大色 | h视频在线看 | 五月天国产 | 少妇bbb| 国产精品女同一区二区三区久久夜 | 欧美日韩在线免费观看 | 麻豆影视在线免费观看 | 精品国产乱码久久久久久浪潮 | 日韩手机在线观看 | 娇妻呻吟一区二区三区 | 美女av免费 | 国产免费一区二区三区网站免费 | 久久国产精品电影 | 九九视频免费观看视频精品 | 中文字幕在线观看第三页 | 欧美黑人猛交 | 久久成人高清视频 | 色婷婷国产 | av电影免费观看 | 美女福利视频在线 | 久草免费看 | 国内一区二区视频 | 日本精品一区二区在线观看 | 亚洲视频一级 | 精品久久久久久久久久岛国gif | 99婷婷狠狠成为人免费视频 | 国产精品久久久久久久av大片 | 亚洲精品a区 | 婷婷国产在线观看 | 久99久精品视频免费观看 | 国产在线视频在线观看 | 综合av在线 | 国产成人久久久久 | 久久dvd | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 日韩视频一区二区在线 | 欧美一级片免费在线观看 | 色在线最新 | 一区在线观看视频 | 国产69精品久久久久99尤 | 国产高清免费在线播放 | 国产精品精品国产婷婷这里av | 狠狠五月天| 久久精品中文字幕少妇 | 久久久亚洲影院 | 日韩精品第一区 | 久久久www成人免费精品 | 日韩理论电影在线 | 一区二区三区四区不卡 | 日韩一区正在播放 | 免费看一级黄色 | 国产高清免费av | 天天射天天干天天爽 | 亚洲香蕉视频 | 在线免费黄色 | 国产成人精品久久亚洲高清不卡 | 一级黄色片在线免费观看 | 精品日韩中文字幕 | 日一日操一操 | 免费高清在线观看成人 | 久久人人爽人人人人片 | 日韩 在线 | 又长又大又黑又粗欧美 | 日韩欧美视频一区 | 久精品视频在线观看 | 日韩国产精品久久久久久亚洲 | 狠狠色丁香婷婷综合欧美 | av九九 | 日韩免费福利 | 亚洲黄色片一级 | 欧美一级专区免费大片 |