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实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
详解在Python中处理异常的教程
May 24 Python
Python使用爬虫猜密码
Feb 19 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
Python爬虫使用代理IP的实现
Oct 27 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
在python image 中实现安装中文字体
May 16 Python
Python 实现一个计时器
Jul 28 Python
Python读写压缩文件的方法
Jul 30 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 Python
pandas进行数据输入和输出的方法详解
Mar 23 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上传文件参考配置大文件上传
2015/12/16 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python保存文件方法小结
2018/07/27 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
用pycharm开发django项目示例代码
2018/10/24 Python
django框架创建应用操作示例
2019/09/26 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
公立医院改革实施方案
2014/03/14 职场文书
推荐信怎么写
2014/05/09 职场文书
美食节策划方案
2014/05/26 职场文书
采购员工作总结范文
2015/08/12 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
七年级作文之游记
2019/12/11 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python