给定一些标记点的坐标,希望生成其在图像中的高斯分布图。
首先,上公式:
(不造怎么上公式。。嗯稍后学习学习再补充)
import numpy as np
import matplotlib.pyplot as plt
def gaussmapcreate():
"""load data to get:
img, pnum, points"""
gaussmap = np.zeros(shape=([img.shape[0], img.shape[1]]))
if pnum==0:
return gaussmap
h = img.shape[0]
w = img.shape[1]
Y, X = np.mgrid[0:h:1, 0:w:1]
for p in xrange(pnum):
x = points[p,0]
y = points[p,1]
v = [[0.2*m, 0], [0, 0.2*m]]
dx = v[0][0]
DX = np.square(dx)
dy = v[1][1]
DY = np.square(dy)
part1 = 1/(2*np.pi* dx * dy)
p1 = -1.0/2
px = (X-x)**2/DX
py = (Y-y)**2/DY
Z = part1 * np.exp(p1 * (px + py))
gaussmap += Z
plt.imshow(gaussmap)
plt.colorbar()
plt.show()
return gaussmap
以上是根据公式直接计算。
然而scipy库中有函数直接得到高斯密度分布。
from scipy import stats
Z0 = stats.norm.pdf(X, loc=x, scale=scale0)
Z0 *= stats.norm.pdf(Y, loc=y, scale=scale0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)