在半径为R1和R2的环形区域内从图像中提取数据点

3
我有一张尺寸为3000 * 3000像素的图片。我首先找到我感兴趣区域的中心,比如在位置(1000,2000)。我想提取半径为10像素和20像素之间的环形区域内的数据,并找出该区域内数据的众数。是否有任何Python程序可以实现这一操作,或者有没有更加智能简洁的方法来实现它?我知道photutils.aperture_photometry可以获取环形区域的总和,但不能获取每个像素点的单独数据。
import numpy as np
data = np.random.uniform(0,10,size=(3000,3000))
center = (1000,2000)    #### in pixel space
R1 = 10   #### pixels
R2 = 20   #### pixels
....
1个回答

1

没有任何答案......惊讶。我有一个非常直接的两个循环函数来完成这个任务。

imin = center[0] - R2
imax = center[0] + R2 + 1
jmin = center[1] - R2
jmax = center[1] + R2 + 1
target = []
for i in np.arange(imin, imax):
    for j in np.arange(jmin, jmax):
        ij = np.array([i,j])
        dist = np.linalg.norm(ij - np.array(center))
        if dist > R1 and dist <= R2:
            target.append([i,j,data[i][j]])
target = np.array(target)

任何更好的实现方式?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接