python 基于opencv实现高斯平滑


Posted in Python onDecember 18, 2020

假设一个列数为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_xy
if __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 高斯平滑的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
对python中raw_input()和input()的用法详解
Apr 22 Python
python实现Windows电脑定时关机
Jun 20 Python
Python3中关于cookie的创建与保存
Oct 21 Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 Python
django 通过URL访问上传的文件方法
Jul 28 Python
将python安装信息加入注册表的示例
Nov 20 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
这样写python注释让代码更加的优雅
Jun 02 Python
python爬取代理ip的示例
Dec 18 #Python
用Python 执行cmd命令
Dec 18 #Python
Django用内置方法实现简单搜索功能的方法
Dec 18 #Python
Django解决frame拒绝问题的方法
Dec 18 #Python
Django自带的用户验证系统实现
Dec 18 #Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 #Python
python 爬虫爬取京东ps4售卖情况
Dec 18 #Python
You might like
坏狼的PHP学习教程之第1天
2008/06/15 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
python实现爬虫下载漫画示例
2014/02/16 Python
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python实现的简单算术游戏实例
2015/05/26 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
高二生物教学反思
2014/01/27 职场文书
医学专业自荐信
2014/06/14 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server