from scipy import signal # 通过定义guassBlur来实现图像的高斯平滑,首先进行水平方向高斯卷积,然后进行垂直方向高斯卷积 def gaussBlur(image,sigma,H,W,_boundary='full',_fillvalue=0): # 构建水平方向上的高斯卷积核 gaussKernel_x = cv2.getGaussianKernel(sigma,W,cv2.CV_64F) print(gaussKernel_x) # 转置 gaussKernel_x = np.transpose(gaussKernel_x) print(gaussKernel_x) # 图像矩阵与水平高斯核卷积 gaussBlur_x = signal.convolve2d(image,gaussKernel_x,mode='same',boundary=_boundary, fillvalue=_fillvalue) # 构建垂直方向上的高斯卷积核 gaussBlur_y = cv2.getGaussianKernel(sigma,H,cv2.CV_64F) # 与垂直方向上的高斯核卷积核 gaussBlur_xy = signal.convolve2d(gaussBlur_x,gaussBlur_y,mode='same',boundary=_boundary, fillvalue=_fillvalue) return gaussBlur_xy image = cv2.imread('../Img/26.jpg') cv2.imshow('image',image) # 高斯平滑 blurImage = gaussBlur(image,5,51,51,'symm') # 对blurImage进行灰度级显示 blurImage = np.round(blurImage) blurImage = blurImage.astype(np.uint8) cv2.imshow('guassblur',blurImage) cv2.waitKey(0) cv2.destroyAllWindows()
时间: 2024-01-14 13:05:01 浏览: 106
python signal测试的使用 python信号处理函数的使用测试 from scipy import signal
这段代码是实现图像的高斯平滑操作,使用了SciPy库中的signal模块中的convolve2d函数实现卷积运算,从而实现图像的模糊效果。
具体实现步骤如下:
1. 定义一个名为gaussBlur的函数,输入参数包括原始图像、高斯核的标准差sigma、高斯核的宽度H和高度W,以及卷积边界boundary和填充值fillvalue。
2. 在函数中,通过cv2.getGaussianKernel函数生成水平方向上的高斯卷积核gaussKernel_x,并使用np.transpose函数进行转置,得到垂直方向上的高斯卷积核gaussBlur_y。
3. 使用signal.convolve2d函数对原始图像和水平方向上的高斯核进行卷积运算,得到水平方向上的高斯平滑结果gaussBlur_x。
4. 再次使用signal.convolve2d函数对水平方向上的高斯平滑结果和垂直方向上的高斯卷积核进行卷积运算,得到最终的高斯平滑结果gaussBlur_xy。
5. 最后,将gaussBlur_xy进行灰度级显示,并显示在屏幕上。
需要注意的是,由于卷积运算会导致图像边缘信息的丢失,因此在卷积时需要选择合适的边界处理方式和填充值。此外,高斯卷积核的大小和标准差也需要根据具体情况进行选择。
阅读全文