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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenCV与图像处理学习十五——LBP纹理特征(含代码)

發(fā)布時(shí)間:2024/7/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV与图像处理学习十五——LBP纹理特征(含代码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OpenCV與圖像處理學(xué)習(xí)十五——LBP紋理特征(含代碼)

  • 一、LBP介紹
  • 二、LBP原理
  • 三、代碼應(yīng)用

一、LBP介紹

LBP(Local Binary Pattern, 局部二值模式) , 是一種用來描述圖像局部紋理特征的算子; 它具有旋轉(zhuǎn)不變性和灰度不變性等顯著的優(yōu)點(diǎn);

作者: T. Ojala, M.Pietik?inen, 和 D. Harwood ;

提出時(shí)間: 1994年

二、LBP原理

LBP算子定義在一個(gè) 3 × 3 的窗口內(nèi), 以窗口中心像素為閾值, 與相鄰的8個(gè)像素的灰度值比較, 若周圍的像素值大于中心像素值, 則該位置被標(biāo)記為1; 否則標(biāo)記為0。如此可以得到一個(gè)8位二進(jìn)制數(shù)(通常還要轉(zhuǎn)換為10進(jìn)制, 即LBP碼, 共256種) , 將這個(gè)值作為窗口中心像素點(diǎn)的LBP值, 以此來反應(yīng)這個(gè)3× 3區(qū)域的紋理信息。


用數(shù)學(xué)公式表示:

其中, p表示 3 × 3 窗口中除中心像素點(diǎn)外的第p個(gè)像素點(diǎn);I( c )表示中心像素點(diǎn)的灰度值, I( p )表示領(lǐng)域內(nèi)第p個(gè)像素點(diǎn)的灰度值;s(x)公式如下:

  • LBP記錄的是中心像素點(diǎn)與領(lǐng)域像素點(diǎn)之間的差值;
  • 當(dāng)光照變化引起像素灰度值同增同減時(shí), LBP變化并不明顯;
  • LBP對與光照變化不敏感, LBP檢測的僅僅是圖像的紋理信息
  • 三、代碼應(yīng)用

    import cv2 import numpy as npdef LBP(src):''':param src:灰度圖像:return:'''height = src.shape[0]width = src.shape[1]dst = src.copy()lbp_value = np.zeros((1, 8), dtype=np.uint8)# print(lbp_value)neighbours = np.zeros((1, 8), dtype=np.uint8)# print(neighbours)for x in range(1, width - 1):for y in range(1, height - 1):neighbours[0, 0] = src[y - 1, x - 1]neighbours[0, 1] = src[y - 1, x]neighbours[0, 2] = src[y - 1, x + 1]neighbours[0, 3] = src[y, x - 1]neighbours[0, 4] = src[y, x + 1]neighbours[0, 5] = src[y + 1, x - 1]neighbours[0, 6] = src[y + 1, x]neighbours[0, 7] = src[y + 1, x + 1]center = src[y, x]for i in range(8):if neighbours[0, i] > center:lbp_value[0, i] = 1else:lbp_value[0, i] = 0lbp = lbp_value[0, 0] * 1 + lbp_value[0, 1] * 2 + lbp_value[0, 2] * 4 + lbp_value[0, 3] * 8 \+ lbp_value[0, 4] * 16 + lbp_value[0, 5] * 32 + lbp_value[0, 6] * 64 + lbp_value[0, 7] * 128# print(lbp)dst[y, x] = lbpreturn dstimg = cv2.imread('image/people.jpg', 0) print(img.shape) cv2.imshow('src', img) cv2.waitKey(0) cv2.destroyAllWindows() new_img = LBP(img)cv2.imshow('dst', new_img) cv2.waitKey(0) cv2.destroyAllWindows()

    輸入的圖像(灰度變化后的):

    LBP特征變化后的結(jié)果:

    ps:這個(gè)特征提取的過程稍微有點(diǎn)慢。。。

    總結(jié)

    以上是生活随笔為你收集整理的OpenCV与图像处理学习十五——LBP纹理特征(含代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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