图像平滑化处理 Opencv(python)

发布时间 2023-04-21 20:56:47作者: 落霞&孤鹜

主要是以下一些简单的处理方法

1 均值滤波就是 在该点附近的 A X B的像素框内 将每点的灰度系数求平均后赋值该点

1 #均值滤波
2 blur = cv2.blur(img,(3,3))#卷积操作
3 Cv_show('Average Filter Picture', blur)

2 方框滤波 和均值滤波在处理上的主要区别是normalize参数是否取值为True

1 #方框滤波
2 #当normalize参数为True 则执行归一化操作,操作结果相同于均值滤波的操作
3 box1 = cv2.boxFilter(img,-1,(3,3),normalize=True)
4 Cv_show('Box Filter Picture', box1)
5 
6 #当normalize参数为False 则不执行归一化操作,当灰度系数大于255时,则默认为255
7 box2 = cv2.boxFilter(img,-1,(3,3),normalize=False)
8 Cv_show('Box Filter Picture', box2)

3 高斯滤波 根据高斯分布得到离该点越近 则越重要 以此给予像素框内各个像素点权值

1 #高斯滤波
2 #主要是依靠高斯分布的思想,更加重视里该点更近的像素 对框内像素都附加有权值
3 gaussianBlur = cv2.GaussianBlur(img,(5,5),1)
4 Cv_show('Gaussian Blur Picture', gaussianBlur)

4 中值滤波 就是在像素框内的灰度系数排序 然后取中值

1 #中值滤波
2 #将框内像素按照升序或者降序排列 选取中间那个
3 median = cv2.medianBlur(img,5)
4 Cv_show('Median Blur Picture', gaussianBlur)

5 四个方法的比较

1 #展示所有
2 res = np.hstack((blur,box1,box2,gaussianBlur,median)) #hstack为行展示 vstack为列展示
3 Cv_show('Blur,Box Fliter Normalize, Box Fliter, Gaussian, Median Picture',res)

6 注意 

  这是对图片平滑的处理 即图片本身存在噪音 才能看到明显的效果,基本上无噪音的图片 除了Normalize=False的方框滤波 其余是看不到特别明显效果