在保留影像原有資訊的情況下,過濾掉影像內部的雜訊,這過程稱為向的平滑處理,所得的影像稱為平滑影像。
影像平滑處理會對影像中與周圍像素點的像素質差異較大的像素點進行處理,將其值調整為周圍像素點像素值的近似值。
影像平滑通常伴隨影像模糊操作,因此影像平滑處理有時也被稱為影像模糊處理。
假設有一矩陣
img = [[140 , 140 ,140]
[140 , 20 ,140]
[140, 140 , 140]]
平滑處理過後可能就會成為
img = [[140 ,140, 140]
[140 ,140, 140]
[140 , 140 ,140]]
說可能的原因是因取近似值的方法有許多種:
均值濾波
方框濾波
高斯濾波
中值濾波
雙邊濾波
2D旋積(自訂濾波)
均值濾波是指用目前像素點周圍N*N個像素值的均值來代替目前像素值。
針對邊緣像素點(可能為第一行第一列)可以只取影像記憶體在的周圍鄰域點的像素值均值。
在OpenCV中,實現均值濾波的函數為cv2.blur():
dst = cv2.blur(src ,ksize , anchor , borderType)
大部分情俇對於錨點anchor和邊界樣式borderType,直接採用預設值即可,因此可寫成:
dst = cv2.blur(src,ksize)
blur55 = cv2.blur(img,(5,5))
blur3030 = cv2.blur(img,(30,30))
明顯看出,使用5*5的旋積核進行濾波處理時,影像的失真不明顯;而使用30*30的失真情況較為明顯。
旋積核越大,參與到均值運算中的像素就會越多,因此旋積核越大,去噪效果越好,同時影像失真越嚴重。