0

我想在两个圆圈之间裁剪一个 FITS 图像区域。例如,我想在 R1 和 R2 的半径圆之间裁剪 FITS 图像中的一个区域。我该怎么做?

4

1 回答 1

2

您可能会在区域包 中找到您要查找的内容: https ://astropy-regions.readthedocs.io/en/latest/

它可以创建具有像素或天空坐标的区域,将它们组合起来,并创建像素蒙版:

In [1]: from regions import CirclePixelRegion, PixCoord                                                  

In [2]: c1 = CirclePixelRegion(center=PixCoord(6, 6), radius=3)                                          

In [3]: c2 = CirclePixelRegion(center=PixCoord(9, 9), radius=3)                                          

In [4]: (c1 & c2).to_mask().data                                                                         
Out[4]: 
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

In [5]: (c1 | c2).to_mask().data                                                                         
Out[5]: 
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 1, 1, 1, 0],
       [0, 0, 0, 0, 1, 1, 1, 1, 1, 0],
       [0, 0, 0, 0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0, 0, 0, 0],
       [0, 1, 1, 1, 1, 1, 0, 0, 0, 0],
       [0, 1, 1, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
于 2020-07-01T14:08:52.977 回答