中值濾波
其基本思路是通過(guò)濾波器遍歷圖像,取濾波器區(qū)域像素值中值為新的像素值。表示為數(shù)學(xué)表達(dá)式如下:其中,f(x,y)和g(x,y)分別是原圖像和處理后圖像,(x,y),(s,t)均為像素點(diǎn)坐標(biāo)。如果是(3*3)的模板,就是對(duì)這3*3個(gè)像素點(diǎn)的值進(jìn)行排序,(x,y)取值為排序之后的中值。可以用opencv自帶的函數(shù)medianBlur()實(shí)現(xiàn)中值濾波,代碼如下:其運(yùn)行結(jié)果如下,左圖為加了噪聲的原圖,右圖為中值濾波后的圖。 從上圖可看出,中值濾波可以有效地消除噪聲,并且相對(duì)于均值濾波,它能夠更好地保護(hù)邊緣信息,圖像的視覺(jué)效果更好。當(dāng)然,也可以逐像素點(diǎn)對(duì)圖像進(jìn)行運(yùn)算,來(lái)求得中值并進(jìn)行賦值,代碼如下圖所示:其中paixu()是對(duì)序列a進(jìn)行從大到小的排序,median()是求序列a的中值,twotoone()是將列表從二維降到一維,這三個(gè)自定義的函數(shù)的目的都是為了求中值。可能有更好的辦法,只是我沒(méi)有找到python或者numpy中自帶的求中值的函數(shù),只能自己寫(xiě)了。
|