基于opencv2利用卷积算子实现高斯模糊

    我们都知道,卷积是一种好玩的东西,通过卷积可以实现很多功能,例如photoshop中的各种滤镜也可以通过对一副图像进行卷积获得。而目前大火的机器学习中的CNN算法也是利用卷积来实现的,至于CNN的算法以后再讲,今天主要是介绍卷积的原理以及利用它来实现高斯模糊。

    我们先来看下卷积是将两个矩阵相乘在求和,而具体原理可在这篇文章中看。而图像中高斯模糊则是根据二维的正态分布(高斯分布)来产生高斯模糊卷积子。

    一维的正态分布:,其中我们的u取0。

    二维的正态分布

        

    利用这个二维高斯模糊公式,我们可以产生N*N的卷积核,然后利用这个核与图片中的每个像素进行卷积便是高斯模糊。

    这个过程可以通过以下几张图来理解,假如我产生一个3*3的卷积核,取1,因此我们就可以产生以下的矩阵:

                                         

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
边缘检测是计算机视觉中一个重要的任务,它可以用于图像分割、物体检测、运动跟踪等应用中。OpenCV是一个开源的计算机视觉库,其中包含了多种边缘检测算法,其中最常用的是Canny算法。 Canny算法是一种基于梯度的边缘检测算法,它具有较高的准确性和较低的误检率。它的主要步骤包括: 1. 高斯滤波:使用高斯滤波器对图像进行平滑处理,以去除噪声。 2. 计算梯度:使用Sobel算子计算图像的水平和垂直梯度,以确定边缘的方向和强度。 3. 非极大值抑制:在梯度方向上对每个像素进行比较,保留局部最大值,并将其他像素抑制。 4. 双阈值处理:将像素分为强边缘、弱边缘和非边缘三类,其中强边缘表示边缘的确存在,弱边缘表示可能存在边缘,但需要进一步验证,非边缘则表示不是边缘。可以根据设定的高低阈值将像素分为三类。 5. 边缘连接:将弱边缘与强边缘进行连接,形成完整的边缘。 OpenCV中提供了cv2.Canny()函数来实现Canny算法,具体代码如下: ``` import cv2 import numpy as np img = cv2.imread('image.jpg',0) edges = cv2.Canny(img,100,200) cv2.imshow('Original',img) cv2.imshow('Edges',edges) cv2.waitKey(0) cv2.destroyAllWindows() ``` 其中,第一个参数是输入图像,第二个参数和第三个参数是高低阈值,可以根据需要进行调整。运行结果如下图所示: ![canny](https://img-blog.csdn.net/20180323132009151?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNhbmhpbGx5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值