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爬取读者并制作成PDF
Mar 10 Python
python实现简单温度转换的方法
Mar 13 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
Python3处理HTTP请求的实例
May 10 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
flask中的wtforms使用方法
Jul 21 Python
python 处理string到hex脚本的方法
Oct 26 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
Python面向对象程序设计示例小结
Jan 30 Python
基于pandas中expand的作用详解
Dec 17 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
Python数据分析之绘图和可视化详解
Jun 02 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获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
PHP文件操作实例总结
2016/09/27 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
javascript数组详解
2014/10/22 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Python代码的打包与发布详解
2014/07/30 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
为什么要用EJB
2014/04/17 面试题
优秀护士获奖感言
2014/02/20 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
医院消毒隔离制度
2015/08/05 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB