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 相关文章推荐
python通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
django序列化serializers过程解析
Dec 14 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
TensorFlow tensor的拼接实例
Jan 19 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 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
mysql 全文搜索 技巧
2007/04/27 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
JSON 数据格式详解
2017/09/13 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
深入理解Node module模块
2018/03/26 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
python2与python3的print及字符串格式化小结
2018/11/30 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Python连接字符串过程详解
2020/01/06 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
.NET面试10题
2014/02/24 面试题
新闻编辑求职信
2014/04/09 职场文书
大学生求职计划书
2014/04/30 职场文书
团干部培训方案
2014/06/03 职场文书
2015年技术员工作总结
2015/04/10 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python