python-图像模糊操作
-
- 一、均值模糊
- 二、中值模糊
- 三、高斯模糊
- 四、双边滤波
"""
图像模糊:在尽量保留图像原有信息的情况下,过滤掉图像内部的噪声
opencv主要提供四种模糊技术
1.均值模糊
格式:cv2.blur(img,(n1,n2)) img表示图片,n1表示x方向卷积核大小,n2表示y方向卷积核大小
2.中值模糊:取内核区域下所有像素的中值,然后用这个中值替换中心元素
格式:cv2.medianBlur(img,n1) img表示图片,n1表示卷积核大小,应该是正奇数
3.高斯模糊:在进行均值模糊的时候,其领域类的每个像素权重是相等的,高斯模糊中,会将中心点的
权重值加大,远离中心点的值减小,在此基础上计算各个领域内各个像素值不同权重的和
格式:cv2.Gaussianblur(img,(n1,n2),0) img表示图片,n1表示x方向卷积核大小,n2表示y
方向卷积核大小,数值可以不同,但都应为正奇数,
0代表内核大小取(n1,n2)
4.双边滤波:综合考虑到空间信息和色彩信息,在滤波过程中能够有效的地保护图像内部地边缘信息,
高斯模糊后会使边缘模糊
格式:cv2.bilateralFilter(img,n1,n2,n3) img表示图片,n1表示过滤时周围每个像素领域的直径,一般指定为0
n2表示在color space中过滤sigma。参数越大,临近像素
将会在越远的地方mix,n3表示在coordinate space
中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大
"""
一、均值模糊
"""
1.均值模糊
格式:cv2.blur(img,(n1,n2)) img表示图片,n1表示x方向卷积核大小,n2表示y方向卷积核大小
"""
import cv2
img1 = cv2.imread('clock.png',1)
blur = cv2.blur(img1,(6,6))
cv2.imshow('img',img1)
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、中值模糊
"""
2.中值模糊:取内核区域下所有像素的中值,然后用这个中值替换中心元素
格式:cv2.medianBlur(img,n1) img表示图片,n1表示卷积核大小,应该是正奇数
"""
import cv2
img2 = cv2.imread('clock.png',1)
medianblur = cv2.medianBlur(img2,5)
cv2.imshow('img',img2)
cv2.imshow('medianblur',medianblur)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、高斯模糊
"""
3.高斯模糊:在进行均值模糊的时候,其领域类的每个像素权重是相等的,高斯模糊中,会将中心点的
权重值加大,远离中心点的值减小,在此基础上计算各个领域内各个像素值不同权重的和
格式:cv2.Gaussianblur(img,(n1,n2),0) img表示图片,n1表示x方向卷积核大小,n2表示y
方向卷积核大小,数值可以不同,但都应为正奇数,
0代表内核大小取(n1,n2)
"""
import cv2
img3 = cv2.imread('clock.png',1)
gaussianblur = cv2.GaussianBlur(img3,(5,5),0)
cv2.imshow('img',img3)
cv2.imshow('gaussianblur',gaussianblur)
cv2.waitKey(0)
cv2.destroyAllWindows()
四、双边滤波
"""
4.双边滤波:综合考虑到空间信息和色彩信息,在滤波过程中能够有效的地保护图像内部地边缘信息,
高斯模糊后会使边缘模糊
格式:cv2.bilateralFilter(img,n1,n2,n3) img表示图片,n1表示过滤时周围每个像素领域的直径,一般指定为0
n2表示在color space中过滤sigma。参数越大,临近像素
将会在越远的地方mix,n3表示在coordinate space
中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大
"""
img4 = cv2.imread('clock.png',1)
bilateralfilter = cv2.bilateralFilter(img4,0,5,25)
cv2.imshow('img',img4)
cv2.imshow('bilateralfilter',bilateralfilter)
cv2.waitKey(0)
cv2.destroyAllWindows()