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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

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

  • 一、LBP介紹
  • 二、LBP原理
  • 三、代碼應用

一、LBP介紹

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

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

提出時間: 1994年

二、LBP原理

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


用數學公式表示:

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

  • LBP記錄的是中心像素點與領域像素點之間的差值;
  • 當光照變化引起像素灰度值同增同減時, LBP變化并不明顯;
  • LBP對與光照變化不敏感, LBP檢測的僅僅是圖像的紋理信息
  • 三、代碼應用

    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特征變化后的結果:

    ps:這個特征提取的過程稍微有點慢。。。

    總結

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

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