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代码
Mar 13 Python
python文件写入实例分析
Apr 08 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
简单易懂的python环境安装教程
Jul 13 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python之拟合的实现
Jul 19 Python
使用python实现kNN分类算法
Oct 16 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
解决Django no such table: django_session的问题
Apr 07 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 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 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
详解vue高级特性
2020/06/09 Javascript
详解node.js 事件循环
2020/07/22 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
python实现无证书加密解密实例
2014/10/27 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
python编程实现希尔排序
2017/04/13 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
详解Python流程控制语句
2020/10/28 Python
python爬取招聘要求等信息实例
2020/11/20 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
Java程序员常见面试题
2015/07/16 面试题
校园安全教育广播稿
2014/02/17 职场文书
小学生学习感言
2014/03/10 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
电台编导求职信
2014/05/06 职场文书
土地租赁协议书
2015/01/29 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技