您好,登錄后才能下訂單哦!
小編給大家分享一下opencv圖像濾波的作用是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
為什么要使用濾波
消除圖像中的噪聲成分叫作圖像的平滑化或濾波操作。信號或圖像的能量大部分集中在幅度譜的低頻和中頻段是很常見的,而在較高頻段,感興趣的信息經常被噪聲淹沒。因此一個能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。
如下圖,左圖帶有椒鹽噪聲,右圖為使用中值濾波處理后的圖片。
圖像濾波的目的有兩個:一是抽出對象的特征作為圖像識別的特征模式;另一個是為適應圖像處理的要求,消除圖像數字化時所混入的噪聲。
python +opencv講解
均值濾波
含義
如圖:如果我們想對紅色點進行處理,則它新值等于周圍N乘N個像素點的平均(包括自身)
用表達式表達:
擴展到對整個圖像進行均值濾波
實現方法:
處理結果=cv2.blur(原始圖像,核大小)
核大小:以(寬度,高度)的元祖
效果:使圖像變模糊啦。能處理被椒鹽攻擊過的照片。
import cv2 a=cv2.imread('lenacolor.png')# b=cv2.blur(a,(8,8)) cv2.imshow('original',a) cv2.imshow('result',b) cv2.waitKey(0) cv2.destroyAllWindows()
方框濾波
實現方法:函數boxFilter
處理結果=cv2.boxFilter(原始圖像,目標圖像深度,核大小,normalize屬性)
目標圖像深度: int類型的目標圖像深度,-1表示與原始圖像一致
核大小:(寬度,高度)元祖
normalize:是否對目標圖像進行歸一化處理
normalize為true 時與均值濾波一樣,為false時表示任意一個點的像素為周圍像素點的和,容易發生溢出超過255
normalize=1,1為true
import cv2 a=cv2.imread('lenacolor.png')# b=cv2.boxFilter(a,-1,(5,5),normalize=1) cv2.imshow('original',a) cv2.imshow('result',b) cv2.waitKey(0) cv2.destroyAllWindows()
結果:
normalize=0,0為false
結果中只有幾個點不是白色
減少核大小為(2,2)normalize=0
高斯濾波
含義:
中心點權重高,越遠越低
實現方法:GaussianBlur
處理結果=cv2.GaussianBlur(原始圖像src,核函數大小ksize,sigmaX)
核函數大小ksize:(N,N)必須是奇數
sigmaX:控制x方向方差,控制權重,一般取0,它自己去計算方差。y軸方差和x一致
import cv2 a=cv2.imread('lenacolor.png')# b=cv2.GaussianBlur(a,(3,3),0) cv2.imshow('original',a) cv2.imshow('result',b) cv2.waitKey(0) cv2.destroyAllWindows()
中值濾波
使用像素點鄰域附近的像素的中值代替該點的像素值。通俗點來說,在這個像素的左邊找五個像素點,右邊找五個像素點,將這些像素進行排序,排序過后產生一個中值,用中間大小的值,來代替該像素的值。
中值濾波可以有效的去除斑點和椒鹽噪聲。但是效率低,其運算時間 為均值濾波的五倍以上。
實現方法:medianBlur
目標圖像=cv2.medianBlur(原始圖像,intksize)
intksize:核函數,必須為奇數.
import cv2 a=cv2.imread('lenacolor.png')# b=cv2.medianBlur(a,5) cv2.imshow('original',a) cv2.imshow('result',b) cv2.waitKey(0) cv2.destroyAllWindows()
看完了這篇文章,相信你對opencv圖像濾波的作用是什么有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。