이미지의 각 열에 대해 질량 중심을 찾으려고합니다. 나는 현재 scipy.ndimage.measurements.center_of_mass
모듈과 간단한 반복을 사용한다. 현재 코드는 다음과 같습니다.축을 따라 이미지의 중심 찾기
def get_y_vec(img):
out = []
for col in img.T:
out.append(np.around(measurements.center_of_mass(col)[0], 1))
out = np.array(out)
return out
이 방법은 효과가 있지만 꽤 느립니다. 동일한 결과물을 달성하기위한보다 효과적인 대안이 있습니까?
편집 : 더 빨리 배를이지만, 내 이미지가 상당히 큰
get_com = lambda m: np.round(np.sum(np.arange(m.shape[0])*m)/np.sum(m), 1)
def get_y_vec(img):
out = np.apply_along_axis(get_com, 0, img)
return out
와 내가 같은 느낌 :
난 그냥 질량 중심은 매우 간단 수학과 같은 기록 될 수 있다는 것을 깨달았 np.apply_along_axis
또는 반복을 사용하는 대신 완전히 벡터화 된 솔루션을 제안 할 수 있습니다.
두 번 계산할 필요가 없습니다 -'com'을 사용하지 않는 것 같다. – kazemakase
@kazemakase 미안하지만, 코드에서 실제로 두 번 계산하지 않습니다. 나는 지금 질문을 편집 할 것이다. – ymoiseev
너무 나쁘지 만, 이것은 쉬운 최적화 였을 것입니다. 입력 'img'는 어떤 모양입니까 (일반적인 모양과 값 범위)? – kazemakase