总目录
图像处理总目录←点击这里
五、图像平滑
可以看出图像被加入了椒盐噪声,需要平滑处理(去噪)
img = cv2.imread('./image/lenaNoise.png')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.1、均值滤波
对周围数值去均值(以3X3为例)
# 简单的平均卷积操作
img = cv2.imread('./image/lenaNoise.png')
blur = cv2.blur(img, (3, 3))
cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.2、方框滤波
# 基本和均值一样,可以选择归一化
img = cv2.imread('./image/lenaNoise.png')
box = cv2.boxFilter(img,-1,(3,3), normalize=True)
cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 选择归一化
normalize=True
(取9个数的均值),和均值滤波一样
- 不选择归一化
normalize=False
(不取均值,求和,≥255取值为256)
5.3、高斯滤波
# 高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的
aussian = cv2.GaussianBlur(img, (5, 5), 1)
cv2.imshow('aussian', aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.4、中值滤波
# 相当于用中值代替
median = cv2.medianBlur(img, 5) # 中值滤波
cv2.imshow('median', median)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.5、对比效果
# 展示所有的
res = np.hstack((blur,aussian,median))
#print (res)
cv2.imshow('median vs average', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
可以看出中值滤波处理效果最好