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