網(wǎng)站是生成靜態(tài)好還是動態(tài)好青檸影院免費觀看電視劇高清
【1】引言
前序?qū)W習過程中,已經(jīng)掌握了對圖像的基本濾波操作技巧,具體的圖像濾波方式包括均值濾波、中值濾波和高斯濾波,相關(guān)文章鏈接有:
python學opencv|讀取圖像(五十四)使用cv2.blur()函數(shù)實現(xiàn)圖像像素均值處理-CSDN博客
python學opencv|讀取圖像(五十五)使用cv2.medianBlur()函數(shù)實現(xiàn)圖像像素中值濾波處理-CSDN博客
python學opencv|讀取圖像(五十六)使用cv2.GaussianBlur()函數(shù)實現(xiàn)圖像像素高斯濾波處理-CSDN博客
進過前序文章的實踐探索,隨著像素核的增大,實際的濾波效果都出現(xiàn)了圖像模糊的情形,因此,有必要繼續(xù)探索新的濾波方式。
這就是本次文章的學習目的:掌握雙邊濾波函數(shù)cv.bilateralFilter()。
雙邊濾波函數(shù)cv.bilateralFilter()的工作原理為:在圖像的中心區(qū)域,采用類似高斯濾波的方式處理,在圖像的邊緣區(qū)域,加大邊緣區(qū)域像素點的權(quán)重,以保證圖像的清晰度。
【2】官網(wǎng)教程
點擊下方鏈接,直達雙邊濾波函數(shù)cv.bilateralFilter()的官網(wǎng)教程:
OpenCV: Image Filtering
官網(wǎng)頁面對雙邊濾波函數(shù)cv.bilateralFilter()的說明為:
圖1 ? 官網(wǎng)頁面對雙邊濾波函數(shù)cv.bilateralFilter()的說明
官網(wǎng)頁面對雙邊濾波函數(shù)cv.bilateralFilter()的參數(shù)說明為:
void cv::bilateralFilter???? (????
??????? InputArray???? src,?????????????????????? #輸入圖像
??????? OutputArray???? dst,??????????????????? #輸出圖像
??????? int???? d,????????????????????????????????????? #像素核直徑
??????? double???? sigmaColor,?????????????? #像素點顏色值和周圍顏色值差值小于此值時進行濾波
??????? double???? sigmaSpace,???????????? #像素坐標開關(guān),值越大,參與計算的像素點越多
??????? int???? borderType = BORDER_DEFAULT )? #邊界樣式,可選參數(shù)
【3】代碼測試
首先是引入模塊和相關(guān)圖像:
import cv2 as cv # 引入CV模塊# 讀取圖片
srcm = cv.imread('srcx.png') # 讀取圖像srcx.png
然后是對圖像進行雙邊濾波處理:
#濾波計算
src1 = cv.bilateralFilter(srcm,3,180,200) # 圖像取平均值,像素核大小為(3,3)
src2 = cv.bilateralFilter(srcm,5,180,200) # 圖像取平均值,像素核大小為(5,5)
src3 = cv.bilateralFilter(srcm,7,180,200) # 圖像取平均值,像素核大小為(7,7)
之后顯示圖像:
# 顯示結(jié)果
cv.imshow('srcm ', srcm)
cv.imshow('src1 ', src1)
cv.imshow('src2 ', src2)
cv.imshow('src3 ', src3)
cv.imwrite('src1b.png',src1)
cv.imwrite('src2b.png',src2)
cv.imwrite('src3b.png',src3)
# 窗口控制
cv.waitKey() # 圖像不關(guān)閉
cv.destroyAllWindows() # 釋放所有窗口
程序運行使用的相關(guān)圖像為:
圖2? 初始圖像scrx.png
圖3? 雙邊濾波圖像scr1.png
圖3? 雙邊濾波圖像scr2.png
圖3? 雙邊濾波圖像scr3.png
由圖2至圖5可見,雙邊濾波函數(shù)cv.bilateralFilter()處理后的圖像,隨著像素核的增大,雖然也出現(xiàn)了模糊的效果,但模糊的程度較小,較大程度保證了圖像的清晰度。
【4】細節(jié)說明
調(diào)用cv2.bilateralFilter()濾波函數(shù)進行雙邊濾波時,給出的是像素核直徑。
而其他三種濾波方式不一樣:
調(diào)用cv2.medianBlur()函數(shù)進行中值濾波時,使用的像素核只需要寫出邊長n,但這個邊長也應該是奇數(shù),cv2.medianBlur()函數(shù)會自動根據(jù)這個邊長劃定一個正方形的像素核。
調(diào)用cv2.blur()函數(shù)進行均值濾波和調(diào)用cv2.GaussianBlur()函數(shù)進行高斯濾波處理時,均需要給出(nXn)大小的像素核,這個n應使用奇數(shù)。
像素核使用奇數(shù)大小會比較好,是因為奇數(shù)大小會在最中間圍成一個方格,這個方格就是核心方格,濾波計算的值直接賦給這個核心方格。
圖6 圖像濾波技術(shù)對比
【5】總結(jié)
掌握了使用python+opencv實現(xiàn)調(diào)用cv2.bilateralFilter()函數(shù)進行雙邊濾波處理圖像的技巧。