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操作sqlite的CRUD实例分析
May 08 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python实现的简单dns查询功能示例
May 24 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
python实现彩色图转换成灰度图
Jan 15 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
python中for in的用法详解
Apr 17 Python
简单了解如何封装自己的Python包
Jul 08 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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伪静态之APACHE篇
2014/06/02 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
详解Python字符串对象的实现
2015/12/24 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
pycharm安装和首次使用教程
2018/08/27 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
语文教育专业应届生求职信
2013/11/23 职场文书
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
超市中秋节促销方案
2014/03/21 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
室内设计专业自荐信
2014/05/31 职场文书
同学聚会策划方案
2014/06/06 职场文书
初中毕业生自我评价
2015/03/02 职场文书
联谊会开场白
2015/06/01 职场文书
简短清晨问候语
2015/11/10 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
Vue监视数据的原理详解
2022/02/24 Vue.js
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers