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 tempfile模块学习笔记(临时文件)
May 25 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
python 调用HBase的简单实例
Dec 18 Python
Python做智能家居温湿度报警系统
Sep 25 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
python识别验证码图片实例详解
Feb 17 Python
Python datetime 如何处理时区信息
Sep 02 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
python神经网络编程之手写数字识别
May 08 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
PHP 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
PHP时间类完整代码实例
2021/02/26 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
python3.5基于TCP实现文件传输
2020/03/20 Python
详解python3中的真值测试
2018/08/13 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
python生成requirements.txt的两种方法
2019/09/18 Python
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
文秘专业自荐信
2013/10/14 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
开天辟地观后感
2015/06/09 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技