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 相关文章推荐
Django中对数据查询结果进行排序的方法
Jul 17 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
用pickle存储Python的原生对象方法
Apr 28 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
Python pymongo模块常用操作分析
Sep 01 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
用Python 执行cmd命令
Dec 18 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中10个不常见却非常有用的函数
2010/03/21 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
微信支付的开发流程详解
2016/09/13 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
HTML上传控件取消选择
2013/03/06 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
require.js的用法详解
2015/10/20 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
基python实现多线程网页爬虫
2015/09/06 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python实现进程同步和通信的方法
2018/01/02 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
数学教师个人工作总结
2015/02/06 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
TS 类型收窄教程示例详解
2022/09/23 Javascript