为高斯拟合找到2D数组的正确x和y宽度

时间:2018-08-17 17:32:53

标签: python python-3.x numpy gaussian data-fitting

我想将我的2D numpy数组(图像)数据拟合为高斯。我已经阅读了许多使用CREATE { TEMPORARY | TEMP } FUNCTION function_name ([named_parameter[, ...]]) [RETURNS data_type] { [LANGUAGE language AS """body"""] | [AS (function_definition)] }; 的示例,并且尝试过,但拟合度从来都不是很好的-这可能是因为我的背景不为零,有时也有其他峰。我认为,简单地生成具有正确峰值参数的高斯可能会更容易。我已经有了我想要的峰的子像素质心坐标scipy.optimizex,并且可以很容易地用y得到峰的振幅,尽管我想我必须对这些坐标进行四舍五入。我现在遇到的是x和y宽度。我的高斯函数如下:

data[y][x]

因此,我基本上只是对import numpy as np def gaussian_func(xy, x0, y0, width_x, width_y, amp): #x0 and y0 are the centroid coordinates x = xy[0] y = xy[1] offset = np.min(data) #should this be a median value of the background instead? a = 1/(2*width_x**2) c = 1/(2*width_y**2) exp_term = a*(x-x0)**2 + c*(y-y0)**2 return (offset + amp * np.exp(-exp_term)).ravel() x, y = np.arange(0, np.shape(data)[1], 1), np.arange(0, np.shape(data)[0], 1) xx, yy = np.meshgrid(x, y) gaussian = gaussian_func((xx, yy), x0, y0, width_x, width_y, amp) gaussian = np.reshape(gaussian, np.shape(data)) width_x的插入内容感到困惑。我知道这些术语应该可以与x和y中的标准偏差互换,但是当我尝试仅使用width_y时,结果却很糟糕。宽度是否对应于峰的实际物理宽度?如果是这样,我如何找到那些?谢谢!

0 个答案:

没有答案