Python 图像处理: 生成二维高斯分布蒙版的实例

作者:Matrix_11 时间:2023-01-31 16:29:06 

在图像处理以及图像特效中,经常会用到一种成高斯分布的蒙版,蒙版可以用来做图像融合,将不同内容的两张图像结合蒙版,可以营造不同的艺术效果。

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()

来源:https://blog.csdn.net/matrix_space/article/details/57942262

标签:Python,二维,高斯,分布,蒙版
0
投稿

猜你喜欢

  • django的分页器Paginator 从django中导入类

    2022-02-07 04:24:29
  • Python监听剪切板实现方法代码实例

    2023-11-10 13:48:32
  • 利用Python的Django框架生成PDF文件的教程

    2023-07-15 14:26:04
  • 100行Python代码实现自动抢火车票(附源码)

    2022-12-16 12:14:09
  • 在Python中使用第三方模块的教程

    2022-09-06 12:20:27
  • 解读Python中的frame是什么

    2023-09-26 08:25:50
  • python实现字符串和日期相互转换的方法

    2022-09-02 04:05:55
  • python config文件的读写操作示例

    2022-04-05 07:42:11
  • 详解如何在Go项目中输出版本信息

    2024-04-26 17:17:20
  • ASP获取ACCESS数据库表名及结构的代码

    2011-04-15 10:50:00
  • 一文搞懂Go语言操作Redis的方法

    2024-04-25 13:20:25
  • MySQL如何查看正在运行的SQL详解

    2024-01-22 22:48:48
  • python字典序问题实例

    2023-07-31 05:46:58
  • vue.js在标签属性中插入变量参数的方法

    2024-05-28 15:58:09
  • Python实现批量压缩图片

    2021-04-20 09:58:44
  • asp中判断是否是手机浏览器以及手机类型

    2014-12-06 09:33:05
  • 使用 Python 实现简单的 switch/case 语句的方法

    2021-02-02 09:10:16
  • asp+XMLHTTP的国际域名查询系统(whois)源代码

    2008-02-16 09:23:00
  • 客户体验

    2008-12-11 13:58:00
  • Python异步编程之协程任务的调度操作实例分析

    2023-02-23 17:03:46
  • asp之家 网络编程 m.aspxhome.com