代码之家  ›  专栏  ›  技术社区  ›  NeStack

python:顺序按亮度匹配文件像素,忽略人工制品

  •  1
  • NeStack  · 技术社区  · 8 年前

    我有4000个适合的图像从斯皮策,每一个包含同一个恒星在一段时间内。每个图像是32像素×32像素×64的时间帧的测光立方体。我需要查看所有的单帧,并按亮度排列像素。与Python不难相处,但有时我在帧中有短寿命的事件/伪像,比星光最亮的像素更亮(见下文)。这些伪迹只持续一两个时间帧。

    我怎样才能轻易地纠正这些手工艺品?有没有一个astropy/pyfits包可以做到这一点?或者是斯皮策的坏像素标记(我知道开普勒图像有坏像素标记)?

    可选项:使用矢量形式的代码会很方便,避免循环,这样我就节省了计算时间。


    比较两个框架,在左边一个都是好的,在右边的一个你看到在右上角的一个赝品,比任何一个星星像素都亮。注:文物未达到饱和程度。 enter image description here

    1 回复  |  直到 8 年前
        1
  •  1
  •   NeStack    7 年前

    按照“谷歌搜索”的建议,我找到了一个非常好的功能——daostarfinder,它可以满足我的需求。它扫描图像以寻找光源,并且可以设置检测阈值,例如,对象的“圆度”、“锐度”或亮度必须分别介于[-0.05,0.05]、[0.6,0.8]或>5*标准偏差之间。我必须说,我有这样的印象:圆度和锐度测量并不一致,有时同一物体的值在一帧到另一帧之间变化很大。但是daostarfinder也给了你一个物体通量密度的粗略估计,我可以用它来分类源和过滤出相关的源。这里有一个链接 example script 以及对 documentation 道星探。在这里,示例脚本显式地:

    >>> from astropy.stats import sigma_clipped_stats
    >>> from photutils import datasets
    >>> from photutils import DAOStarFinder
    
    >>> hdu = datasets.load_star_image()    
    >>> data = hdu.data[0:400, 0:400]    
    >>> mean, median, std = sigma_clipped_stats(data, sigma=3.0, iters=5)
    >>> daofind = DAOStarFinder(fwhm=3.0, threshold=5.*std)    
    >>> sources = daofind(data - median)    
    
    >>> print(sources)
    
    推荐文章