python+opencv-03 高斯模糊

  • 高斯与高斯模糊
  • 程序代码
  • 代码分析

高斯与高斯模糊

在这个世界上数学界被分为两类:其他数学家与高斯。他是“数学王子”,是站在数学高峰上的神。我们对他了解最多的是他7岁那一年,在解决1+2+3+……+100时,创造性的发现1+100=101, 2+99=101 , …… , 相当于50个101相加,于是“高斯算法”应运而生,梯形公式就此出现。在他18岁时,他发现了质数分布定理和有序数列搜索算法中的一个经典算法——最小二乘法。从质数分布定理出发,他创造了一套数据处理方法,根据这个新方法,一个具有概率性质的测量结果被得出,将这个结果画成曲线,自然界中一个广泛存在的分布谜团被跃然纸上——高斯分布图,也被叫做正态分布图。从这以后,人们发现不管是人群中身高排布,收入排布,班级的成绩排布,生物种群的年龄排布,都和这条曲线有着或明或暗的联系。
我们可以从百度图片库中找到很多正态分布的图片。

而高斯模糊就是将输入图像的矩阵与服从正态分布的核函数做卷积。从正态分布图可以看出,正态分布图像呈现中间图,两边凹的特点,核函数的数值也是这样的。
接下来我们简单来介绍一下核函数的推导。以3行3列的核函数为例。首先我们定义中心点的坐标为(0,0),我们可以推导出其他点的坐标。

下一步,我们可以求各点坐标距离原点的距离——用平方差来表示。

将上面的值代入高斯分布的表达式里,就求出了对应的正态分布的值:

最后一步,将上面的数据归一化,就可以得到高斯模糊的核函数了。

程序代码

我们继续使用,上一节使用过的从百度图片库下载的悟空的图片在进行验证:

在pycharm中编辑如下代码:

import cv2 as cvimage = cv.imread("pig.jpg")
cv.namedWindow("image show", cv.WINDOW_AUTOSIZE)
cv.namedWindow("gaussian image show", cv.WINDOW_AUTOSIZE)# 高斯模糊
gaussian = cv.GaussianBlur(image, (5, 5), 0)cv.imshow("image show", image)
cv.imshow("gaussian image show", gaussian)
cv.waitKey(0)
cv.destroyAllWindows()

运行程序,可以得到高斯模糊之后的图片:

可以发现,高斯模糊对噪声有一定的抑制效果。

【注】高斯模糊在图像处理中有着很高的应用率。在使用Photoshop修图时,我们可以使用高斯模糊来磨皮,或者当细节过多时可以使背景或者人像虚化,从而最北一种朦胧的美感。

代码分析

高斯模糊在OpenCV中的代码为:

GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

我们可以发现它里面定义了六个参数,其中后三个有着默认值。

@参数src input image;图像可以有任意数量的独立处理的通道,但深度应为CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
@参数 dst输出与src大小和类型相同的图像。
@参数ksize高斯核大小。ksize宽度以及ksize高度可以不同,但它们都必须是正数和奇数。或者,它们可以是零,然后根据sigma计算。
@参数sigmaX高斯核在X方向的标准偏差。
@参数sigmaY高斯核Y方向标准偏差;如果sigmaY为零,则设置为等于sigmaX;如果两个sigma都为零,则从K尺寸宽度以及K尺寸高度,分别(有关详细信息,请参见“getGaussianKernel”);为了完全控制结果,而不考虑将来可能对所有这些语义进行修改,建议指定所有ksize、sigmaX和sigmaY。
@参数borderType,请参见像素外推方法

python+opencv-03 高斯模糊相关推荐

  1. Python OpenCV 图片高斯模糊

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. Python OpenCV 基础知识铺垫 函数原型介绍 高斯模糊(Gaussian Blur) 橡皮擦的小节 基础知识铺垫 ...

  2. python裁剪图片边缘模糊_Python OpenCV 图片高斯模糊

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. 基础知识铺垫 看到一种说法,解释高斯模糊的比较简单,高斯模糊是带加权的均值模糊. 大概解释如下: 高斯模糊实质上就是一种均 ...

  3. Python+OpenCV图像处理实验

    目录 1.灰度化功能 2.反转功能 3.通道分离功能 4.噪音.滤波功能 5.高斯双边滤波功能 6.均值偏移滤波功能 7.图像二值化功能 8.Canny边缘检测功能 9.直线检测功能 10.圆形检测功 ...

  4. Python+OpenCV实现自动扫雷,挑战扫雷世界记录!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自知乎Artrix https://zhuanlan.zh ...

  5. Python+OpenCV实现自动扫雷,创造属于自己的世界记录!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自知乎Artrix https://zhuanlan.zh ...

  6. 使用Python+OpenCV+dlib为人脸生成口罩

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

  7. Python OpenCV实现鼠标画框

    Python OpenCV实现鼠标画框 使用Python+OpenCV实现鼠标画框的代码: # -*-coding: utf-8 -*- """@Project: Int ...

  8. [python opencv 计算机视觉零基础到实战] 十、图片效果毛玻璃

    一.学习目标 了解高斯模糊的使用方法 了解毛玻璃的图片效果添加 了解如何自己做一个噪声图片 上一篇:[python opencv 计算机视觉零基础到实战] 九.模糊 如有错误欢迎指出~ 二.了解模糊与 ...

  9. Python+OpenCV:Optical Flow(光流)

    Python+OpenCV:Optical Flow(光流) 理论 Optical flow is the pattern of apparent motion of image objects be ...

  10. Python+OpenCV:尺度不变特征变换 (SIFT, Scale-Invariant Feature Transform)

    Python+OpenCV:尺度不变特征变换 (SIFT, Scale-Invariant Feature Transform) 理论 A corner in a small image within ...

最新文章

  1. cvtvolor()关于HSV输出问题
  2. VTK:图片之ImageCityBlockDistance
  3. 数字电子技术课程设计之基于触发器的三位二进制同步减法计数器无效态000/110
  4. iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
  5. @程序员,如何在编程面试中脱颖而出?
  6. 深度学习框架 各种模型下载集合 -- models list
  7. RS485模块的介绍及引脚连线说明
  8. 博弈论模型——Part 2 Part 3
  9. 网络编程(三):网络中的端口号
  10. Google AI 博客:Hum to Search 项目,使用机器学习来识别随口哼唱的旋律
  11. 【Unity3D游戏教程】记忆翻牌游戏
  12. #10064 「一本通 3.1 例 1」黑暗城堡(spfa+乘法原理)
  13. java并发机制_Java并发机制的底层实现原理.PDF
  14. 联想小新22H2版跳过联网方法最新方法
  15. C语言字符串 string强转为int
  16. 2020 DASCTFBJD 部分题解
  17. 磊科nw332 linux驱动下载,磊科Netcore NW332驱动
  18. 微震生命探测仪价格很美丽,辐射强度出乎预料
  19. 【linux驱动分析】之dm9000驱动分析
  20. linux zip压缩包大小,Linux中巧用zip命令压缩和解压缩文件

热门文章

  1. 前端皮肤功能实现(基于Less)
  2. java/php/net/python电影影评网站设计
  3. kingcms 5.0 漏洞
  4. Linux 音频驱动(五) ALSA音频驱动之PCM逻辑设备
  5. python共享文件协同编辑_那些可多人协作编辑的在线文档工具
  6. 电脑文件定时备份到U盘
  7. 牛客网SQL实战二刷 | Day10
  8. 使用NFC tool工具将加密门禁卡写入小米手环步骤详解
  9. 《江南百景图》为什么火了?和主创团队聊完之后,我跪了
  10. 使用左氧氟沙星4注意