gpt4 book ai didi

python 基于opencv实现高斯平滑

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python 基于opencv实现高斯平滑由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

1.计算高斯矩阵

python 基于opencv实现高斯平滑

2.计算高斯矩阵的和

python 基于opencv实现高斯平滑

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

python 基于opencv实现高斯平滑

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

def getGaussKernel(sigma, H, W):  r, c = np.mgrid[0:H:1, 0:W:1]  r -= (H - 1) / 2  c -= (W - 1) / 2  gaussMatrix = 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_xyif __name__ == "__main__":  image = cv2.imread("../images/timg.jpg", 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 基于opencv实现高斯平滑的详细内容,更多关于python 高斯平滑的资料请关注我其它相关文章! 。

原文链接:https://www.cnblogs.com/supershuai/p/13462266.html 。

最后此篇关于python 基于opencv实现高斯平滑的文章就讲到这里了,如果你想了解更多关于python 基于opencv实现高斯平滑的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com