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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)

發布時間:2023/12/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


OpenCV濾波器專題@ 龍門石窟篇
?
?????????【Python-Open_CV系列(九)】

文章目錄

  • 1. 濾波器
    • 1.1 什么是濾波器?
    • 1.2 關于濾波核
  • 1.3 素材選擇
  • 2.均值濾波器 cv2.blur()
    • 2.1 語法簡介
    • 2.2 代碼示例
      • 2.2.1 3×3 濾波核為例
      • 2.2.2 5×5 濾波核為例
      • 2.2.3 10×10濾波核為例
  • 3. 中值濾波器 cv2.medianBlur()
    • 代碼示例
  • 4. 高斯濾波器 cv2.GaussianBlur()
  • 5. 雙邊濾波器 cv2.bilateralFilter()


??????????????????????????????????????????????????????????????????????????????????????????????
?????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????


大家好,我是侯小啾!

?今天分享的內容是,OpenCV濾波器,本文將介紹的濾波器有均值濾波器、中值濾波器、高斯濾波器、雙邊濾波器。如果對您有所幫助,還請留下您寶貴的支持過的痕跡。
?????????????????????????????????????



1. 濾波器

1.1 什么是濾波器?

??濾波器是對圖像做平滑處理 的一種常用工具。
?
??平滑處理即在盡可能地保留原圖像信息的情況下,對像素值進行微調,使鄰近的像素值之間,值的大小趨于“平滑”,以去除圖像內的噪聲、降低細節層次信息等的一系列的操作過程。本篇blog將為大家展示OpenCV中的均值濾波器中值濾波器高斯濾波器雙邊濾波器

??濾波器的算法邏輯為,指定一個濾波核的大小(該大小表示參與計算的像素數據的范圍),以圖像中的每一個像素都作為波的核心,通過該范圍內的數據,以一定的計算方式進行計算,將計算結果該值賦值給該像素。


1.2 關于濾波核

??以大小為n×n的濾波核為例,對于每一個像素數據,我們可以在數組中得到以一個像素為中心的n×n的矩陣,此即參與計算的數據的范圍(邊界)。這樣的矩陣結構即被稱為濾波核。


1.3 素材選擇

使用圖像《龍門石窟》(longmen.jpg) shape:(350, 600, 3)
??????


2.均值濾波器 cv2.blur()

2.1 語法簡介

均值濾波器,也稱低通濾波器
顧名思義,均值濾波器即對濾波核內的數據求均值,然后將這個值賦值給矩陣核心位置。
均值濾波器可以使用cv2.blur() 方法實現

cv2.blur()的語法:

dst = blur(src, ksize, dst=None, anchor=None, borderType=None)

其中
?
scr 即圖像
?
ksize 濾波核大小。使用一個元組表示,形如(a, b),a表示height(高度),b表示width(寬度)。
?
anchor 波核錨點
?
borderType 邊界類型

下邊以3×3,5×5,10×10三種濾波核為例,分別展示圖像經過均值濾波器處理后的效果。


2.2 代碼示例


2.2.1 3×3 濾波核為例

import cv2 img = cv2.imread("longmen.jpg") dst1 = cv2.blur(img, (3, 3)) cv2.imshow("3*3", dst1) cv2.waitKey() cv2.destroyAllWindows()

濾波效果如下:
??????


2.2.2 5×5 濾波核為例

import cv2 img = cv2.imread("longmen.jpg") dst2 = cv2.blur(img, (5, 5)) cv2.imshow("5*5", dst2) cv2.waitKey() cv2.destroyAllWindows()

濾波效果如下:
??????


2.2.3 10×10濾波核為例

import cv2 img = cv2.imread("longmen.jpg") dst3 = cv2.blur(img, (10, 10)) cv2.imshow("10*10", dst3) cv2.waitKey() cv2.destroyAllWindows()

????????


可以看出,濾波核大小越大,圖像越趨于模糊。


3. 中值濾波器 cv2.medianBlur()

中值濾波器,即對濾波核內所有數據排序,將中間值賦值給濾波核核心位置的數字。
?
medianBlur(src, ksize, dst=None)

其中 ksize必須是奇數,是偶數的話會發生報錯。
?
不同于均值濾波器的方法,cv2.blur(),cv2.blur()的ksize參數是一個元組,而cv2.blur()的ksize參數是一個數值。

代碼示例

import cv2 img = cv2.imread("longmen.jpg") dst1 = cv2.medianBlur(img, 3) cv2.imshow("3*3", dst1) cv2.waitKey() cv2.destroyAllWindows()

濾波后效果如下:
?????


4. 高斯濾波器 cv2.GaussianBlur()

高斯濾波器也被稱為高斯模糊高斯平滑
高斯濾波器可以在降低圖片噪聲、細節層次的同時保留更多的圖像信息,使經過處理的圖像呈現出“磨砂玻璃”的濾鏡效果。
?
使用均值濾波時,每個像素都是均等權重的。使用高斯濾波器求的是不同權重下的均值,越靠近核心的像素的權重越大,約靠近邊緣的像素的權重則越小。
與濾波核對應的由每個數據權重組成的矩陣結構,是一個卷積核。卷積核中所有權重值的和為1。卷積核中的數值會隨著核的大小而變化。
OpenCV使用cv2.GaussianBlur()方法實現高斯濾波器。其語法如下:

GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

其中
?
src 為目標圖像
?
ksize 是濾波核大小,寬高必須是奇數 。格式為是元組形式。
?
修改sigmaX 和 sigmaY都會改變卷積核中的權重值。這里涉及卷積方面的知識。
?
borderType 是邊界類型。

以9×9的濾波核為例

import cv2 img = cv2.imread("longmen.jpg") dst1 = cv2.GaussianBlur(img, (9, 9), 0, 0) cv2.imshow("9*9", dst1) cv2.waitKey() cv2.destroyAllWindows()

濾波后效果如下:
?????


5. 雙邊濾波器 cv2.bilateralFilter()

前三種濾波方式都會使圖像變得平滑的同時,邊緣區域變得模糊不清。
雙邊濾波是可以在濾波過程中起到保護圖像邊界信息作用的濾波操作方法。
?
其邏輯為:
如果圖像在邊緣區域,則加大邊緣像素的權重,盡可能地讓邊緣區域的像素值保持不變。如果不在邊緣區域(在平坦區域),則使用類似高斯濾波器的算法進行。

雙邊濾波器的語法為:
?
bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
?
scr ??即目標圖像
?
d ??過濾期間使用的每個像素鄰域的直徑。如果為非正,則根據sigmaSpace計算。即如果為15,則表示15×15的濾波核。
?
sigmaColor ??參與計算的顏色的范圍,只有像素小于這個值時,以其為核心的濾波核才參與濾波計算。否則不參與。當sigmaColor值為255時,表示所有像素值為核心的濾波核都會參與。
?
sigmaSpace ??坐標空間的σ\sigmaσ值,σ\sigmaσ越大,參與計算的像素數量就越多。
?
borderType ??邊界的樣式。

還以圖片"longmen.jpg"為例,
選擇20×20的濾波核,
參與計算的像素值范圍為:小于125的像素值;
坐標空間的σ\sigmaσ值為,200

import cv2 img = cv2.imread("longmen.jpg") # 雙邊濾波,選取范圍直徑為15,顏色范圍為125 dst = cv2.bilateralFilter(img, 15, 125, 200) cv2.imshow("bilateral", dst) cv2.waitKey() cv2.destroyAllWindows()

雙邊濾波效果如下:
?????
可以看出,相比以上濾波效果,雙邊濾波保留了較清晰的圖像邊緣信息。


本次分享就到這里。小啾感謝您的關注與支持!更多精彩內容敬請期待!
🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??

🌹??本系列blog傳送門:
?
?OpenCV圖像處理基本操作 【Python-Open_CV系列(一)】
?
?OpenCV像素處理基本操作 【Python-Open_CV系列(二)】
?
?OpenCV之 BGR、GRAY、HSV色彩空間&色彩通道專題 【Python-Open_CV系列(三)】
?
?OpenCV繪制圖像與文字(可作為腳手架代碼)(python) 【Python-Open_CV系列(四)】
?
?OpenCV圖像幾何變換專題(縮放、翻轉、仿射變換及透視)【python-Open_CV系列(五)】
?
?基于梵·高《向日葵》的 圖像閾值處理專題(二值處理、反二值處理、截斷處理、自適應處理及Otsu方法)【Python-Open_CV系列(六)】
?
?OpenCV基本功 之 圖像的掩模、運算 & 合并專題 -小啾帶學【Python-Open_CV系列(七)】
?
?《三英戰呂布》 - 圖像模板匹配 【Python-Open_CV系列(八)】
?
?OpenCV濾波器 龍門石窟篇【Python-Open_CV系列(九)】(均值濾波器、中值濾波器、高斯濾波器、雙邊濾波器)
?
?Open_CV形態學運算專題 (腐蝕&膨脹、開&閉運算、梯度運算、頂帽運算黑帽運算 )【Python-Open_CV系列(十)】
?
?霍夫變換看不懂?小啾帶你串一遍:OpenCV圖形檢測專題 這樣學最簡單【Python-Open_CV系列(十一)】
?
?小啾帶你開天眼 之 開啟py-OpenCV攝像頭及視頻處理【Python-Open_CV系列(十二)】
?
?小啾帶你開天眼 之 人臉檢測與識別(以及華強、皇叔、高祖配墨鏡特效)【Python-Open_CV系列(十三)】

總結

以上是生活随笔為你收集整理的OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)的全部內容,希望文章能夠幫你解決所遇到的問題。

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