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 表达式和语句及for、while循环练习实例
Jul 07 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
在Python中使用Neo4j的方法
Mar 14 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python多线程同步实例教程
Aug 11 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
python根据字典的键来删除元素的方法
Aug 16 Python
python 决策树算法的实现
Oct 09 Python
C站最全Python标准库总结,你想要的都在这里
Jul 03 Python
基于Python实现一个春节倒计时脚本
Jan 22 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
PHP的自定义模板引擎
2017/03/24 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
XmlUtils JS操作XML工具类
2009/10/01 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
微信小程序实现购物页面左右联动
2019/02/15 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
django中使用事务及接入支付宝支付功能
2019/09/15 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
Python super()函数使用及多重继承
2020/05/06 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
员工培训邀请函
2014/01/11 职场文书
大型公益活动策划方案
2014/08/20 职场文书
环境建议书
2015/02/04 职场文书
长征观后感
2015/06/09 职场文书
红高粱观后感
2015/06/10 职场文书
运动会通讯稿600字
2015/07/20 职场文书
关于军训的感想
2015/08/07 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL