2017-04-27 12 views
3

크기가 3000 * 3000 픽셀 인 이미지가 있습니다. 나는 먼저 나의 흥미있는 지역의 중심을 위치 (1000,2000)에서 찾는다. R1 = 10 픽셀, R2 = 20 픽셀의 고리 내에서 데이터를 추출하고 고리 내의 데이터 모드를 찾고 싶습니다. 어떤 파이썬 루틴이 그것을 구현하거나 똑똑하고 간결한 방법으로 구현할 수 있습니까? 나는 photutils.aperture_photometry이 고리의 합계를 얻을 수 있지만 각 픽셀의 개별 데이터 포인트는 얻을 수 없다는 것을 알고 있습니다.반지름 R1과 R2가있는 고리 내의 이미지에서 데이터 점 추출

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 
.... 

답변

0

아무런 대답이 없습니다 ...... 놀랐습니다. 나는 그것을하기 위해 매우 간단한 두 개의 루프 기능을 가지고있다.

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) 

더 나은 구현은 무엇입니까?