今天边肖给大家分享一个Python图像处理:生成二维高斯分布掩膜的例子,有很好的参考价值。希望对你有帮助。来和边肖一起看看吧。
在图像处理和图像特效中,经常会用到高斯分布的掩膜,可用于图像融合。用蒙版把两个内容不同的图像组合起来,可以创造出不同的艺术效果。
这里II代表合成图像,FF代表前景图像,BB代表背景图像,MM代表蒙版,或者直接将蒙版与图像相乘,形成渐变的贴图效果。如下图。
这里介绍高斯分布掩膜的特点,并用Python实现。
高斯分布的掩膜,简单来说就是从中心向外扩散的亮度分布图,如下图:
的亮度范围是从1到0,从中心到边缘逐渐降低。中心的最高亮度值为1,边缘的最低亮度值为0。图像上任意一点的亮度值为:
其中I,ji,j表示图像上任意点的坐标,左上角为坐标原点,dd表示图像上任意点到图像中心的距离,RR表示图像的半径。假设图像的高度是HH,宽度是WW
IMAGE_WIDTH=512
IMAGE_HEIGHT=392
中心x=图像宽度/2
center_y=IMAGE_HEIGHT/2
r=NP . sqrt(center _ x * * 2 center _ y * * 2)
Gauss_map=np.zeros((图像高度,图像宽度))
#由for循环实现
对于范围内的I(IMAGE _ HEIGHT):
对于范围内的j(IMAGE _ WIDTH):
dis=NP . sqrt((I-center _ y)* * 2(j-center _ x)* * 2)
高斯_映射[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)
高斯地图=NP . exp(-0.5 *高斯地图/R)
#显示并保存生成的图像
图表()
plt.imshow(高斯_地图,plt.cm .格雷)
plt.imsave('out_2.jpg ',Gauss_map,cmap=plt.cm.gray)
plt.show()
以上Python图像处理:生成二维高斯分布掩膜的例子是边肖分享的所有内容。希望给大家一个参考,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。