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简单实现获取当前时间
Aug 27 Python
python使用Tesseract库识别验证
Mar 21 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
python cumsum函数的具体使用
Jul 29 Python
python 实现屏幕录制示例
Dec 23 Python
python如何判断IP地址合法性
Apr 05 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
Python实现Kerberos用户的增删改查操作
Dec 14 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
Python matplotlib绘制雷达图
Apr 13 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连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
python生成器的使用方法
2013/11/21 Python
Python解决八皇后问题示例
2018/04/22 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
俄语专业毕业生推荐信
2013/10/28 职场文书
最热门的自我评价
2013/12/30 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
八项规定对照检查材料
2014/08/31 职场文书
2015新年寄语大全
2014/12/08 职场文书
2015年少先队活动总结
2015/03/25 职场文书
七一活动主持词
2015/06/29 职场文书
Python 匹配文本并在其上一行追加文本
2022/05/11 Python
nginx设置资源请求目录的方式详解
2022/05/30 Servers