其他分享
首页 > 其他分享> > 自选一张图片,利用高斯滤波进行滤波,调整滤波器方差参数,观察输出变化

自选一张图片,利用高斯滤波进行滤波,调整滤波器方差参数,观察输出变化

作者:互联网

自选一张图片,利用高斯滤波进行滤波,调整滤波器方差参数,观察输出变化

自选一张图片,利用高斯滤波进行滤波,调整滤波器方差参数,观察输出变化,并解释原因。

 import cv2
 img = cv2.imread('image/dogsp1.jpeg')

#滤波核大小为5*5,sigmaX和sigmaY为0,通过ksize.width和ksize.height计算得到
 res0=cv2.GaussianBlur(img, (5,5), 0, 0)
 #改变滤波核的大小

res1=cv2.GaussianBlur(img, (3,3), 0, 0)

#改变sigmaX的大小
 res2=cv2.GaussianBlur(img, (5,5), 10, 0)

#改变sigmaY的大小
 res3=cv2.GaussianBlur(img, (5,5), 0, 10)
 cv2.imshow('ori', img)
 cv2.imshow('res0', res0)
 cv2.imshow('res1', res1)
 cv2.imshow('res2', res2)
 cv2.imshow('res3', res3)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

(1)在核大小固定的情况下,sigma值越大,权值分布越平缓。因此,邻域各个点的值对输出值的影响越大,最终结果造成图像越模糊。

(2)在核大小固定的情况下,sigma值越小,权值分布越突起。因此,邻域各个点的值对输出值的影响越小,图像变化也越小。假如中心点权值为1,其他点权值为0,那么最终结果是图像没有任何变化。

(3)sigma固定时,核越大图像越模糊。

(4)sigma固定时,核越小图像变化越小。

自选一张图片,分别添加椒盐噪声和高斯噪声。

import numpy as np
 import random
 import cv2
 # 添加椒盐噪声
 # prob:噪声比例
 def sp_noise(image,prob):
   '''
   添加椒盐噪声
   prob:噪声比例
   '''
   output = np.zeros(image.shape,np.uint8)
   thres = 1 - prob
   for i in range(image.shape[0]):
     for j in range(image.shape[1]):
       rdn = random.random()
       if rdn < prob:
         output[i][j] = 0
       elif rdn > thres:
         output[i][j] = 255
       else:
         output[i][j] = image[i][j]
   return output

 # 添加高斯噪声 
 # mean : 均值 
 # var : 方差
 def gasuss_noise(image, mean=0, var=0.001):
   image = np.array(image/255, dtype=float)
   noise = np.random.normal(mean, var ** 0.5, image.shape)
   out = image + noise
   if out.min() < 0:
     low_clip = -1.
   else:
     low_clip = 0.
   out = np.clip(out, low_clip, 1.0)
   out = np.uint8(out*255)
   return out

 img=cv2.imread('image/view.jpg')
 sp=sp_noise(img,0.02)
 gas=gasuss_noise(img)
 cv2.imshow('sp',sp)
 cv2.imshow('gas', gas)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

标签:滤波器,img,cv2,image,imshow,滤波,自选,np,out
来源: https://blog.csdn.net/Hhuangtu/article/details/120365385