如何检测光谱中的发射线?
Posted
技术标签:
【中文标题】如何检测光谱中的发射线?【英文标题】:how to detect emission lines in an optical spectra? 【发布时间】:2013-10-21 17:34:45 【问题描述】:是否有任何方便的模块来检测光谱中的发射线,就像我们从 sdss 获得的一样?
您可以在下面的光谱中看到许多发射线,例如 Ha,OI。事实上,光谱是一个两列数据集,波长和通量。它是许多散点的组合。附近两点之间的典型间隔为 1.5 埃。我需要找到所有的高斯凸点及其线中心。
所以,首先我需要找到凸起,然后我需要安装它们以获得它们的中心。
谢谢。
【问题讨论】:
***.com/questions/3260/… 看起来是同一个问题。我已经做了很多此类工作,最好的方法通常取决于您的数据。通常,答案将涉及平滑、查找局部最大值和曲线拟合(如果您需要宽度)的某种组合。 你看过python图像库吗? 我不知道发射线的检测需要什么。如果您概述了这些步骤,可以给出更具体的建议,但 numpy/scipy 应该会让您朝着正确的方向前进。 我已经更新了我的帖子。首先找到一个局部最大值,然后用高斯轮廓拟合它。这种方法太容易让人相信了。还有什么我想念的吗? 【参考方案1】:我的回答来得有点晚,但现在我发现自己处于同样的境地。
我认为最符合我们需求的工具是Specutils
,这是一个用于光谱学的Astropy
包。具体来说,您可能需要使用该包中的 find_lines_threshold
或 find_lines_derivative
方法:https://specutils.readthedocs.io/en/stable/fitting.html#line-finding
根据文档,提供一维光谱和阈值(从噪声中滤除实际谱线),该方法将返回发射和吸收谱线表,识别每条谱线的中心波长。
希望对你有帮助!
【讨论】:
谢谢。你用过 Specutils 吗?看来我们需要指定一个噪声区域(SpectralRegion),但不同的线条可能有不同的背景。 据我了解,噪声估计为一个区域的标准差。如果您计算包含实际强发射/吸收线的区域的噪声,您将高估背景噪声。因此,我对定义代表整个频谱的噪声阈值的建议是从尽可能多的没有强线的区域计算标准偏差。例如。对于星系,4 个相当平坦的范围(Dobos et. al 2012) 是:4200-4300、4600-4800、5400-5500 和 5600-5800 A。 @JTM 除了astropy,你还有什么建议吗?我使用矿物光谱,天文学可以识别发射区,但不能识别吸收区。我一直在尝试从开发人员那里获得帮助,但没有运气...... @AngelaR。我不知道任何专门用于处理矿物光谱的软件。实际上来自specutils
的相同功能也应该检测吸收线。实际上,与星系光谱不同,恒星光谱充满了吸收线。您可以找到一个示例,其光谱显示吸收线 here。以上是关于如何检测光谱中的发射线?的主要内容,如果未能解决你的问题,请参考以下文章