我已经成功地使用astropy.modeling
在我的图像上建立了二维高斯模型,它产生的参数对图像的拟合似乎是合理的。然而,我需要在数千幅图像上运行2D高斯,因为我们对模型的平均x和y以及对图像的x和y标准差感兴趣。模型输出如下所示:
m2
<Gaussian2D(amplitude=0.0009846091239480168, x_mean=30.826676737477573, y_mean=31.004045976953222, x_stddev=2.5046722491074536, y_stddev=3.163048479350727, theta=-0.0070295894129793896)>
我也可以告诉你:
type(m2)
<class 'astropy.modeling.functional_models.Gaussian2D'>
Name: Gaussian2D
Inputs: (u'x', u'y')
Outputs: (u'z',)
Fittable parameters: ('amplitude', 'x_mean', 'y_mean', 'x_stddev', 'y_stddev', 'theta')
我需要的是一种提取模型参数的方法,即:
x_mean
y_mean
x_stddev
y_stddev
我对这个表单输出不太熟悉,所以我真的很纠结于如何提取参数。
发布于 2016-07-28 11:33:08
模型具有您可以访问的属性:
from astropy.modeling import models
g2d = models.Gaussian2D(1,2,3,4,5)
g2d.amplitude.value # 1.0
g2d.x_mean.value # 2.0
g2d.y_mean.value # 3.0
g2d.x_stddev.value # 4.0
g2d.y_stddev.value # 5.0
您需要在安装模型之后提取这些值,但是您可以以相同的方式访问它们:.<name>.value
。
您也可以一次提取它们,但是需要跟踪哪个参数处于哪个位置:
g2d.parameters # array([ 1., 2., 3., 4., 5., 0.])
# Amplitude
g2d.parameters[0] # 1.0
# x-mean
g2d.parameters[1] # 2.0
# ...
发布于 2020-06-02 14:57:41
另一种方法是使用estimate_line_parameters。这方面的文档不太清楚(我认为是这样)。如果问题是得到高斯线的起始参数,那是一个很好的起点。
要以这种方式处理它:
from specutils.spectra import Spectrum2D
from specutils.fitting import estimate_line_parameters
..。
e1 = estimate_line_parameters(spectrum, models.Gaussian2D())
a = e1.amplitude.value
b = e1.x_mean.value
c = e1.y_mean.value
d = x_stddev.value
e = y_stddev.value
estimate_line_parameters给出了小数位的结果,因此,如果您试图估计起始值,您可能希望使用圆形(value_name,n),其中n是您认为合适的dec位置数。
注意到,a,b,c等作为值返回,不保留单元。所以你也需要:
from astropy import units as u
然后(例如)A= e1.amplitude.value*u.( flux_units )其中flux_units是Jy或类似和/或缩放的版本。
当然,所有这些都假设你的背景已经被很好的减去……
https://stackoverflow.com/questions/38634782
复制相似问题