中值滤波(Median filtering)
1.概念介紹
?中值濾波法是一種非線性平滑技術,它將每一像素點的灰度值設置為該點某鄰域窗口內的所有像素點灰度值的中值。
?中值濾波的方法是用某種結構的二維滑動模板,將板內像素按照像素值的大小進行排序,生成單調上升(或下降)的為二維數據序列。
2.基本原理
?中值濾波會選取數字圖像或數字序列中像素點及其周圍臨近像素點(一共有奇數個像素點)的像素值,將這些像素值排序,然后將位于中間位置的像素值作為當前像素點的像素值,讓周圍的像素值接近真實值,從而消除孤立的噪聲點。
?例如,針對圖2-1中第4行第4列的像素點,計算它的中值濾波值。
圖2-1 ?一幅圖像的像素值示例
?將其鄰域設置為3×3大小,對其3×3鄰域內像素點的像素值進行排序(升序降序均可),按升序排序后得到序列值為:[66,78,90,91,93,94,95,97,101]。在該序列中,處于中心位置(也叫中心點或中值點)的值是“93”,因此用該值替換原來的像素值 78,作為當前點的新像素值,處理結果如圖2-2所示。
圖2-2 ?中值濾波處理結果
3.函數語法
?在 OpenCV 中,實現中值濾波的函數是 cv2.medianBlur(),其語法格式如下:
dst = cv2.medianBlur( src, ksize)
參數解析:
dst:返回值,表示進行中值濾波后得到的處理結果。
src:是需要處理的圖像,即源圖像。它能夠有任意數量的通道,并能對各個通道獨立處理。圖像深度應該是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一種。
ksize:濾波核的大小。濾波核大小是指在濾波處理過程中其鄰域圖像的高度和寬度。需要注意,核大小必須是比1大的奇數,比如3、5、7等。
4.程序示例
針對一幅噪聲圖像進行中值濾波,顯示濾波的結果。
import cv2 Gn=cv2.imread("Gaussian_noise.jpg") Gf=cv2.medianBlur(Gn,3) cv2.imshow("噪聲圖像",Gn) cv2.imshow("中值濾波處理結果圖像",Gf) cv2.waitKey() cv2.destroyAllWindows()
圖4-1?噪聲圖像
圖4-2 ?中值濾波處理結果
?在中值濾波處理中,噪聲成分很難被選上,所以可以在幾乎不影響原有圖像的情況下去除全部噪聲。但是由于需要進行排序等操作,中值濾波需要的運算量較大。
總結
以上是生活随笔為你收集整理的中值滤波(Median filtering)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: efucms搭建教程_EFUCMS E1
- 下一篇: 【Python】numpy库和scipy