如何在Python中以给定的形状裁剪FITS图像?

2024-04-25 05:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在两个圆之间裁剪一个适合的图像区域。例如,我想在拟合图像中裁剪出半径为R1和R2的圆之间的区域。我该怎么做呢


Tags: 图像区域半径r2r1
1条回答
网友
1楼 · 发布于 2024-04-25 05:25:18

您可能会在区域包中找到您想要的内容: 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]])

相关问题 更多 >