• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python 基于opencv实现高斯平滑

python 搞代码 4年前 (2022-01-07) 38次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了python 基于opencv实现高斯平滑,帮助大家更好的理解和使用python处理图片,感兴趣的朋友可以了解下

假设一个列数为W,行数为H的高斯卷计算子gaussKernel,其中W,H均为奇数,描点位置在((H-1)/2 ,(W-1)/2),构建高斯卷积核的步骤如下

1.计算高斯矩阵

2.计算高斯矩阵的和

3.高斯矩阵除以其本身的和,也就是归一化

下面利用Python来实现构建高斯卷积算子

 def getGaussKernel(sigma, H, W): r, c = np.mgrid[0:H:1, 0:W:1] r -= (H - 1) / 2 c -= (W - 1) / 2 gaus<div style="color:transparent">来源gaodai.ma#com搞##代!^码@网</div>sMatrix = np.exp(-0.5 * (np.power(r) + np.power(c)) / math.pow(sigma, 2)) # 计算高斯矩阵的和 sunGM = np.sum(gaussMatrix) # 归一化 gaussKernel = gaussMatrix / sunGM return gaussKernel

高斯卷积核可以分离成一维水平方向上的高斯核和一维垂直方向上的高斯核,在OpenCV中给出了构建一维垂直方向上的高斯卷积核的函数:
Mat getGaussianKernel(int ksize, double sigma, in ktype = CV/_64F)

参数 释意
ksize 一维垂直方向上的高斯核行数,正奇数
sigma 标准差
ktype 返回值的数据类型为CV_32F或CV_64F,默认是CV_64F

下面通过Python代码来具体的实现图像的高斯平滑,我们首先会对图像水平方向进行卷积,然后再对垂直方向进行卷积,其中sigma代表高斯卷积核的标准差

 def gaussBlur(image,sigma,H,W,_boundary = 'fill', _fillvalue = 0): #水平方向上的高斯卷积核 gaussKenrnel_x = cv2.getGaussianKernel(sigma,W,cv2.CV_64F) #进行转置 gaussKenrnel_x = np.transpose(gaussKenrnel_x) #图像矩阵与水平高斯核卷积 gaussBlur_x = signal.convolve2d(image,gaussKenrnel_x,mode='same',boundary=_boundary,fillvalue=_fillvalue) #构建垂直方向上的卷积核 gaussKenrnel_y = cv2.getGaussianKernel(sigma,H,cv2.CV_64F) #图像与垂直方向上的高斯核卷积核 gaussBlur_xy = signal.convolve2d(gaussBlur_x,gaussKenrnel_y,mode='same',boundary= _boundary,fillvalue=_fillvalue) return gaussBlur_xy if __name__ == "__main__": image = cv2.imread("../images/timg.jpg-600", cv2.IMREAD_GRAYSCALE) cv2.imshow("image",image) #高斯平滑 blurImage = gaussBlur(image, 5, 400, 400, 'symm') #对bIurImage进行灰度级显示 blurImage = np.round(blurImage) blurImage = blurImage.astype(np.uint8) cv2.imshow("GaussBlur", blurImage) cv2.waitKey(0) cv2.destroyAllWindows()

运行截图:

以上就是python 基于opencv实现高斯平滑的详细内容,更多关于python 高斯平滑的资料请关注gaodaima搞代码网其它相关文章!

以上就是python 基于opencv实现高斯平滑的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python 基于opencv实现高斯平滑

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址