在為盡量保留原有圖像信息的情況下揍拆,過(guò)濾掉圖像內(nèi)部的噪聲泞歉,這就是圖像的平滑處理雨女。圖像平滑處理會(huì)對(duì)圖像中與周圍像素點(diǎn)的像素值差異較大的像素點(diǎn)進(jìn)行處理锰提,將其值調(diào)整為與周圍像素值的近似值曙痘。取近似值的方法有很多,比如:均值濾波立肘、方框?yàn)V波边坤、高斯濾波、中值濾波谅年、雙邊濾波茧痒、2D濾波(自定義濾波)。
圖像平滑處理(Smoothing Images)通常伴隨著圖像的模糊操作融蹂,用此常被稱為圖像的模糊處理(Blurring Images)旺订。也有人稱為圖像濾波(Images Filtering)
1.均值濾波
均值濾波是指用當(dāng)前像素點(diǎn)周圍MN個(gè)像素值得平均值來(lái)代替當(dāng)前的像素值弄企。用此方法來(lái)遍歷每一個(gè)像素,就可以完成整幅圖的均值濾波区拳。一般來(lái)說(shuō)M和N是相等的拘领,這兩個(gè)值越大,圖像失真越嚴(yán)重樱调。
1.1函數(shù)語(yǔ)法
dst = cv2.blur(src, ksize, anchor, borderType)
src: 需要處理的圖像约素。可以有任意數(shù)量的通道本涕。圖像深度應(yīng)該是CV_8U业汰、CV_16U、CV_16S菩颖、CV_32F或者CV_64F中的一種样漆。
ksize: 是濾波核的大小,即MN的大小晦闰,代表均值處理過(guò)程中其鄰域的高度和寬度放祟。
anchor: 錨點(diǎn),其默認(rèn)值是(-1,-1),表示當(dāng)前計(jì)算均值的點(diǎn)位于核的中心點(diǎn)位置呻右。
borderType: 邊界樣式跪妥,決定了以何種方式處理邊界。一般用默認(rèn)值即可声滥。
課件處理后圖像變模糊了眉撵。
2.方框?yàn)V波
與均值濾波不同的是,落塑,方框?yàn)V波可以自由的選擇是否對(duì)均值濾波的結(jié)果進(jìn)行歸一化纽疟,即可以選擇是取鄰域像素之和的平均值,還是取鄰域像素值之和憾赁。
dst_box = cv2.boxFilter(src,ddepth,ksize,anchor,normalize,borderType)
其中前三個(gè)參數(shù)是必選參數(shù)污朽;
ddepth: 是處理結(jié)果圖像的圖像深度,一般使用-1龙考, 表示圖像深度與原圖像相同蟆肆。
normalize: 表示濾波時(shí)是否進(jìn)行歸一化,該參數(shù)是一個(gè)邏輯值晦款,為真(值為1)炎功,或?yàn)榧伲ㄖ禐?)。默認(rèn)為1柬赐,此時(shí)與cv2.blur()方法等效亡问。
3.高斯濾波
在均值濾波和方框?yàn)V波中,鄰域里每個(gè)像素的權(quán)重是一致的。在高斯濾波中州藕,會(huì)將中心點(diǎn)的權(quán)重值加大束世,遠(yuǎn)離中心點(diǎn)的權(quán)重值減小,在此基礎(chǔ)上進(jìn)行鄰域像素值得加權(quán)求和床玻。
在高斯濾波中毁涉,卷積核的寬度和高度可以不同,但必須是奇數(shù)锈死。每一種尺寸的卷積核都可以有不同形式的權(quán)重比例贫堰。在實(shí)際計(jì)算中心卷積核是歸一化處理的(求和為1)。
dst_gauss = cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)
src:是需要處理的原始圖像待牵。它可以是多通道其屏,并能夠?qū)Ω鱾€(gè)通道獨(dú)立處理。圖像深度應(yīng)該是CV_8U缨该、CV_16U偎行、CV_16S、CV_32F或者CV_64F中的一種贰拿。
ksize:是濾波核的大小蛤袒。
sigmaX:是卷積核在水平方向上(X軸方向)的標(biāo)準(zhǔn)差,其控制的是權(quán)重的比例膨更。
sigmaY:是卷積核在垂直方向上(Y軸方向)的標(biāo)準(zhǔn)差妙真。如果該值是0,則只采用singmaX的值荚守;如果sigmaX 和sigmaY都是0珍德,則通過(guò)ksize.width和ksize.height計(jì)算得到。其中
borderType:是邊界樣式矗漾,該值決定了以什么方式處理邊界菱阵。一般情況下可以用默認(rèn)值。
例如:
4.中值濾波
中值濾波它用鄰域內(nèi)所有所有像素值的中間值來(lái)代替當(dāng)前像素點(diǎn)的值缩功。
median_dst=cv2.medianBlur(src,ksize)
src:是需要處理的原始圖像。它可以是多通道都办,并能夠?qū)Ω鱾€(gè)通道獨(dú)立處理嫡锌。圖像深度應(yīng)該是CV_8U、CV_16U琳钉、CV_16S势木、CV_32F或者CV_64F中的一種。
ksize: 是濾波核的大小歌懒。指在濾波處理過(guò)程中其鄰域圖像的高度和寬度啦桌。且核的大小必須是比1大的奇數(shù)。
例如:可以看到效果還不錯(cuò)
由于沒(méi)有進(jìn)行均值處理,中值濾波不存在均值濾波方式帶來(lái)的細(xì)節(jié)模糊問(wèn)題甫男。在中值濾波處理過(guò)程中且改,噪聲成分很難被選上,所以可以在幾乎不影響原有圖像的情況下去除全部噪聲板驳,但由于排序操作又跛,中值濾波需要的運(yùn)算量非常大。
5.雙邊濾波
雙邊濾波是綜合考慮空間信息和色彩信息的濾波方式若治,在濾波過(guò)程中能有效的保護(hù)圖像內(nèi)的邊緣信息慨蓝。
在均值濾波、方框?yàn)V波端幼、高斯濾波中礼烈,都會(huì)計(jì)算邊緣上各個(gè)像素點(diǎn)的加權(quán)平均值,從而模糊邊緣信息婆跑。在雙邊濾波中此熬,當(dāng)處于邊緣上,與當(dāng)前像素點(diǎn)色彩相近的像素點(diǎn)會(huì)被賦予較大的權(quán)重洽蛀,而與當(dāng)前色彩差別較大的像素點(diǎn)會(huì)被賦予較小的權(quán)重(極端條件下可以是0)摹迷。這樣就保護(hù)了邊緣信息、
dst= cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)
src:是需要處理的原始圖像郊供。它可以是多通道峡碉,并能夠?qū)Ω鱾€(gè)通道獨(dú)立處理。圖像深度應(yīng)該是CV_8U驮审、CV_16U鲫寄、CV_16S、CV_32F或者CV_64F中的一種疯淫。
d: 是在濾波時(shí)選取的空間距離參數(shù)地来,這里表示以當(dāng)前像素點(diǎn)為中心的直徑。如果該值是非正數(shù)熙掺,則由sigmaSpace參數(shù)計(jì)算得到未斑。如果濾波空間較大(d>5),則速度較慢币绩,因則在實(shí)際應(yīng)用中蜡秽,推薦d=5。對(duì)于較大噪聲的離線綠波缆镣,可以選擇d=9芽突。
sigmaColor:是濾波處理時(shí)選擇的顏色差值范圍,該值決定了周圍哪些像素點(diǎn)能夠參與到濾波中來(lái)董瞻。與當(dāng)前像素點(diǎn)的像素值差值小于sigmaColor的像素點(diǎn)寞蚌,能夠參與到當(dāng)前的濾波當(dāng)中,該值越大說(shuō)明有越多的像素點(diǎn)可以參與到運(yùn)算中。當(dāng)值為0時(shí)挟秤,濾波失去意義壹哺;該值是255,指定指定直徑內(nèi)的所有點(diǎn)夠能參與運(yùn)算煞聪。
sigmaSpace::是坐標(biāo)空間中sigma的大小斗躏。該值越大說(shuō)明有越多的像素點(diǎn)可以參與到運(yùn)算中。當(dāng)d>0時(shí)昔脯,無(wú)論sigmaSpace是何值啄糙,d都指定鄰域大小。否則d與sigmaSpace的值成正比云稚。(sigmaSpace參數(shù)表示坐標(biāo)空間的標(biāo)準(zhǔn)方差(像素單位)隧饼,一般盡可能小)静陈。
雙邊濾波去除噪聲的效果并不理想燕雁,他的優(yōu)勢(shì)體現(xiàn)在對(duì)于邊緣信息的處理上。
img = cv2.imread('filter_bil.png')
# 均值濾波
dst = cv2.blur(img, (5,5))
#中值濾波
median_dst=cv2.medianBlur(img,3)
#高斯濾波
dst_gauss = cv2.GaussianBlur(img,(5,5),sigmaX=2)
# 雙邊濾波
bilateral_img = cv2.bilateralFilter(img,5,100,100)
cv2.imshow("img",img)
cv2.imshow("mean_img",dst?)
cv2.imshow("median_dst",median_dst)
cv2.imshow("dst_gauss",dst_gauss)
cv2.imshow("bilateral_img",bilateral_img)
6.2D卷積
有時(shí)我們需要使用特定的卷積核實(shí)現(xiàn)卷積操作鲸拥,方法如下:
dst = cv2.filter2D(img,ddepth,kernel,anchor,delta,borderType)
src: 需要處理的圖像拐格;
ddepth: 是處理結(jié)果圖像的圖像深度,一般使用-1刑赶, 表示圖像深度與原圖像相同捏浊;
kernel: 是卷積核。是一個(gè)簡(jiǎn)單的數(shù)組撞叨。如果想要在處理彩色圖像時(shí)金踪,讓每一個(gè)通道使用不同的核,則必須將彩色圖像分解后使用不同的核完成牵敷。
anchor: 是錨點(diǎn)胡岔,默認(rèn)值是(-1,-1), 表示當(dāng)前計(jì)算均值的點(diǎn)位于核的中心位置。
delta: 是修正值枷餐,它是可選值靶瘸。如果該值存在,會(huì)在基礎(chǔ)濾波的結(jié)果上加上該值毛肋,作為最終結(jié)果奕锌。
如: