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 1.6中正确使用 Signal
Jun 22 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python统计字符的个数代码实例
Feb 07 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
Python创建文件夹与文件的快捷方法
Dec 08 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 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数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
JavaScript Array扩展实现代码
2009/10/14 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
深入理解Python中的super()方法
2017/11/20 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
python面向对象 反射原理解析
2019/08/12 Python
python应用文件读取与登录注册功能
2019/09/23 Python
QML使用Python的函数过程解析
2019/09/26 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
采购经理岗位职责
2014/02/16 职场文书
环保公益策划方案
2014/08/15 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
中标通知书范本
2015/04/17 职场文书
社区宣传标语口号
2015/12/26 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
ant design charts 获取后端接口数据展示
2022/05/25 Javascript