python直方图拟合曲线_在直方图python中拟合非标准化高斯
我有一個暗圖像(原始格式),并繪制圖像的圖像和分布 . 正如您所看到的那樣,在16處有一個高峰,請忽略它 . 我想通過這個直方圖擬合高斯曲線 . 我已經使用這種方法來適應:Un-normalized Gaussian curve on histogram . 然而;我的高斯擬合永遠不會接近它應該是什么 . 將圖像轉換為正確的圖形格式或者出現其他問題時,我做錯了嗎?
這是我用來生成此數據的當前代碼:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def fitGaussian(x,a,mean,sigma):
return (a*np.exp(-((x-mean)**2/(2*sigma))))
fname = 'filepath.raw'
im = np.fromfile(fname,np.int16)
im.resize([3056,4064])
plt.figure()
plt.set_cmap(viridis)
plt.imshow(im, interpolation='none', vmin=16, vmax=np.percentile(im.ravel(),99))
plt.colorbar()
print 'Saving: ' + fname[:-4] + '.pdf'
plt.savefig(fname[:-4]+'.pdf')
plt.figure()
data = plt.hist(im.ravel(), bins=4096, range=(0,4095))
x = [0.5 * (data[1][i] + data[1][i+1]) for i in xrange(len(data[1])-1)]
y = data[0]
popt, pcov = curve_fit(fitGaussian, x, y, [500000,80,10])
x_fit = py.linspace(x[0], x[-1], 1000)
y_fit = fitGaussian(x_fit, *popt)
plt.plot(x_fit, y_fit, lw=4, color="r")
plt.xlim(0,300)
plt.ylim(0,1e6)
plt.show()
EDIT: (對Reblochon Masque的回應)
如果我在16處移除垃圾箱,我仍然可以獲得相同的適合度:
總結
以上是生活随笔為你收集整理的python直方图拟合曲线_在直方图python中拟合非标准化高斯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中三个基本框架_javaweb框
- 下一篇: python括号匹配问题_支持通配符的括