模糊操作
作用是在图片时减低噪声
均值模糊
用卷积核中的全体像素的平均值来代替原来像素值
def blur_demo(image):
#cv.blur(图片,(水平方向模糊,垂直方向模糊)),
dst=cv.blur(image,(30,1))
cv.imshow("blur_demo",dst)
blur_demo(src)
中值模糊: 对椒盐模糊 效果最好
将卷积核中的全体像素从小到大排序,保留中值
def medianBlurr_demo(image):
#cv.medianBlur(图片,5(固定值)),
dst=cv.medianBlur(image,5)
cv.imshow("medianBlurr_demo",dst)
medianBlurr_demo(src)
自定义模糊
def customr_demo(image):
#数组定义
#kernel=np.array([[1,1,1],[1,1,1],[1,1,1]],np.float32)/9
#ones定义
#kernel=np.ones([5,5],np.float32)/25
#锐化
kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
#filter2D过滤器(图片,-1,自定义模糊)
dst=cv.filter2D(image,-1,kernel)
#显示
cv.imshow("customr_demo",dst)
#调用
customr_demo(src)
高斯模糊
高斯噪音
def gaussian_noise(image):
#获取图片尺寸
h,w,c=image.shape
for row in range(h):
for col in range(w):
# np.random.normal(概率分布的均值,对应着整个分布的中心center
#概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高
#输出的shape,默认为None,只输出一个值)
s=np.random.normal(0,20,3)
b=image[row,col,0]#蓝色
g=image[row,col,1]#绿色
r=image[row,col,2]#红色
image[row,col,0]=clanp(b+s[0])
image[row,col,1]=clanp(g+s[1])
image[row,col,2]=clanp(r+s[2])
cv.imshow("noise image",image)
高斯模糊
#cv.GaussianBlur(目标图像,(高斯内核的大小),X方向的的标准偏差,Y方向的的标准偏差)
dst= cv.GaussianBlur(src,(0,0),15,16)
cv.imshow("GaussianBlur",dst)
边缘保留滤波(EPF)
高斯双边
#高斯的双边模糊
def b1_demo(image):
#bilateralFilter:双侧滤波器
#cv.bilateralFilter(处理的图形;在过滤期间使用的每个像素邻域的直径;色彩空间的标准方差,一般尽可能大;坐标空间的标准方差(像素单位),一般尽可能小)
dst=cv.bilateralFilter(image,0,100,15)
cv.imshow("b1_demo",dst)
均值迁移
#均值滤波
def ShiftFiltering_demo(image):
#cv.pyrMeanShiftFiltering(处理的图形,空间窗的半径,色彩窗的半径)
dst=cv.pyrMeanShiftFiltering(image,10,5)
cv.imshow("ShiftFiltering_demo",dst)