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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
Python标准库内置函数complex介绍
Nov 25 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python CSV模块使用实例
Apr 09 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
Django自带的用户验证系统实现
Dec 18 Python
Pytorch DataLoader shuffle验证方式
Jun 02 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 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采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php封装的page分页类完整实例
2016/10/18 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
js实现数组转换成json
2015/06/26 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
python抓取京东商城手机列表url实例代码
2013/12/18 Python
对于Python中线程问题的简单讲解
2015/04/03 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
Android interview questions
2016/12/25 面试题
教师节促销活动方案
2014/02/14 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
住宅质量保证书
2014/04/29 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
学校百日安全活动总结
2015/05/07 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫