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使用socket远程连接错误处理方法
Apr 29 Python
python中map()函数的使用方法示例
Sep 29 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
python 读入多行数据的实例
Apr 19 Python
python gdal安装与简单使用
Aug 01 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
基于Python fminunc 的替代方法
Feb 29 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
Python如何把十进制数转换成ip地址
May 25 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
python 定义函数 返回值只取其中一个的实现
May 21 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使用异或实现的加密解密实例
2013/09/04 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
vuex实现简易计数器
2016/10/27 Javascript
js实现楼层导航功能
2017/02/23 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python append、extend与insert的区别
2016/10/13 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
python em算法的实现
2020/10/03 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
护理自荐信
2013/10/22 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
技校毕业生自荐信
2014/06/03 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
个人批评与自我批评
2014/10/15 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
golang内置函数len的小技巧
2021/07/25 Golang
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python