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序列化与反序列化用法实例
May 26 Python
python简单文本处理的方法
Jul 10 Python
Python+django实现简单的文件上传
Aug 17 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
分享vim python缩进等一些配置
Jul 02 Python
Flask模拟实现CSRF攻击的方法
Jul 24 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
python日志logging模块使用方法分析
May 23 Python
Python实现FTP文件传输的实例
Jul 07 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
利用Python如何实时检测自身内存占用
May 09 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
python 并发下载器实现方法示例
2019/11/22 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
如何自己动手写SQL执行引擎
2021/06/02 MySQL
react 项目中引入图片的几种方式
2021/06/02 Javascript
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS