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设置windows桌面壁纸的实现代码
Jan 28 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
python测试mysql写入性能完整实例
Jan 18 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
anaconda如何查看并管理python环境
Jul 05 Python
对django layer弹窗组件的使用详解
Aug 31 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
Python开发五子棋小游戏
Apr 28 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执行批量mysql语句的解决方法
2013/05/02 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python中set常用操作汇总
2016/06/30 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python实现整数的二进制循环移位
2019/03/08 Python
Django中的cookie和session
2019/08/27 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
售后主管岗位职责
2013/12/08 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
解除劳动合同协议书
2014/04/14 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
Vue的生命周期一起来看看
2022/02/24 Vue.js