Python 图像处理: 生成二维高斯分布蒙版的实例


Posted in Python onJuly 04, 2019

在图像处理以及图像特效中,经常会用到一种成高斯分布的蒙版,蒙版可以用来做图像融合,将不同内容的两张图像结合蒙版,可以营造不同的艺术效果。

Python 图像处理: 生成二维高斯分布蒙版的实例

这里II 表示合成后的图像,FF 表示前景图,BB 表示背景图,MM 表示蒙版,或者直接用 蒙版与图像相乘, 形成一种渐变映射的效果。如下所示。

Python 图像处理: 生成二维高斯分布蒙版的实例

这里介绍一下高斯分布蒙版的特性,并且用Python实现。

高斯分布的蒙版,简单来说,就是一个从中心扩散的亮度分布图,如下所示:

Python 图像处理: 生成二维高斯分布蒙版的实例

亮度的范围从 1 到 0, 从中心到边缘逐渐减弱,中心的亮度值最高为1,边缘的亮度值最低为 0. 图像上任何一点的亮度值为:

Python 图像处理: 生成二维高斯分布蒙版的实例

其中 i,ji,j 表示图像上任何一点的坐标,以左上角为坐标原点,dd 表示 图像上任何一点 到图像中心点的距离,RR 表示图像的半径。假设图像的高为 HH 宽为 WW

Python 图像处理: 生成二维高斯分布蒙版的实例

IMAGE_WIDTH = 512
IMAGE_HEIGHT = 392

center_x = IMAGE_WIDTH/2
center_y = IMAGE_HEIGHT/2

R = np.sqrt(center_x**2 + center_y**2)

Gauss_map = np.zeros((IMAGE_HEIGHT, IMAGE_WIDTH))

# 利用 for 循环 实现
for i in range(IMAGE_HEIGHT):
  for j in range(IMAGE_WIDTH):
    dis = np.sqrt((i-center_y)**2+(j-center_x)**2)
    Gauss_map[i, j] = np.exp(-0.5*dis/R)

# 直接利用矩阵运算实现

mask_x = np.matlib.repmat(center_x, IMAGE_HEIGHT, IMAGE_WIDTH)
mask_y = np.matlib.repmat(center_y, IMAGE_HEIGHT, IMAGE_WIDTH)

x1 = np.arange(IMAGE_WIDTH)
x_map = np.matlib.repmat(x1, IMAGE_HEIGHT, 1)

y1 = np.arange(IMAGE_HEIGHT)
y_map = np.matlib.repmat(y1, IMAGE_WIDTH, 1)
y_map = np.transpose(y_map)

Gauss_map = np.sqrt((x_map-mask_x)**2+(y_map-mask_y)**2)

Gauss_map = np.exp(-0.5*Gauss_map/R)

# 显示和保存生成的图像
plt.figure()
plt.imshow(Gauss_map, plt.cm.gray)
plt.imsave('out_2.jpg', Gauss_map, cmap=plt.cm.gray)
plt.show()

以上这篇Python 图像处理: 生成二维高斯分布蒙版的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python简单实现基数排序算法
May 16 Python
python实现将内容分行输出
Nov 05 Python
Python中set与frozenset方法和区别详解
May 23 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
python中有关时间日期格式转换问题
Dec 25 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 #Python
libreoffice python 操作word及excel文档的方法
Jul 04 #Python
Python实现12306火车票抢票系统
Jul 04 #Python
如何利用Pyecharts可视化微信好友
Jul 04 #Python
python 获取等间隔的数组实例
Jul 04 #Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 #Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 #Python
You might like
php4的session功能评述(三)
2006/10/09 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
Javascript 赋值机制详解
2014/11/23 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
node实现的爬虫功能示例
2018/05/04 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
python计算无向图节点度的实例代码
2019/11/22 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
Python偏函数实现原理及应用
2020/11/20 Python
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
物业管理员岗位职责范文
2013/11/25 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
实习科室评语
2015/01/04 职场文书
男人帮观后感
2015/06/18 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL