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使用cookielib库示例分享
Mar 03 Python
python中的reduce内建函数使用方法指南
Aug 31 Python
python多进程操作实例
Nov 21 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
简单谈谈python基本数据类型
Sep 26 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python selenium firefox使用详解
Feb 26 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
python cv2截取不规则区域图片实例
Dec 21 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
python3处理word文档实例分析
Dec 01 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
php-app开发接口加密详解
2018/04/18 PHP
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
Bootstrap表单布局
2016/07/19 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
VueJS全面解析
2016/11/10 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
你所在的项目是如何确定版本号的
2015/12/28 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
机械设计制造专业个人求职信
2013/09/25 职场文书
学校创先争优活动总结
2014/08/28 职场文书
通知的写法
2015/04/23 职场文书
同事去世追悼词
2015/06/23 职场文书