2017-03-19 4 views
1

이해를 돕기 위해 불일치 맵을 계산하는 Python (및 Numpy)으로 스테레오 알고리즘을 구현하려고합니다. 이미지 데이터로, 나는 Middlebury *의 쓰쿠바 이미지 데이터 세트를 사용했습니다. 편의상, 대응 픽셀을 찾으려면 유사성 측정 값으로 normalised cross correlation (NCC) **을 선택하십시오. 나는 스캔 라인 계약을 맺을 것이다. 여기 내 구현 NCC 다음 left_patchright_patch는 원본 이미지에서 일부 3 × 3 패치입니다Python을 사용하여 정규화 된 상호 상관을 사용하는 불일치 맵

 left_mu = np.mean(left_patch) 
    right_mu = np.mean(right_patch) 
    left_sigma = np.sqrt(np.mean((left_patch - left_mu)**2)) 
    right_sigma = np.sqrt(np.mean((right_patch - right_mu)**2)) 
     patch = left_patch * right_patch 
      mu = left_mu * right_mu 

      num = np.mean(patch) - mu 
     denom = left_sigma * right_sigma 
      ncc = num/denom 

. 이것은 -1과 1 사이의 정수를 출력합니다.이 정수는 두 픽셀 간의 유사성을 나타냅니다. 이제 가장 적합한 픽셀을 찾는 것이 좋습니다. 이제 두 픽셀 간의 불일치가 새로운 이미지, 즉 불일치 맵에 저장됩니다. 스캔 라인 계약을 전제로 한 번만 이미지 행을 검색하면됩니다. 행의 각 픽셀에 대해 NCC 값을 최대화하는 값의 인덱스를 가져 와서 불일치 값으로 저장하려고합니다. 지금 내 문제는 내 결과가 다소 이상합니다. 내 불일치 값은 384x288 픽셀 인 이미지의 경우 약 180-200 픽셀입니다. Here 결과 이미지.

내 생각에 실수를 볼 수 있습니까?

(*)

(**) vision.middlebury.edu/stereo/data/scenes2001/data/anigif/orig/tsukuba_o_a.gif 입체 깊이 추정을 위해 두 단계의 상관 방법. - N. Einecke와 J. Eggert

+0

결과는 꽤 이상하게 보입니다 : P – kmario23

답변

0

분자를 올바르게 계산하지 않은 것처럼 보입니다. 그것은이어야한다 :

num = np.mean((left_patch - left_mu) * (right_patch - right_mu)) 
+0

표현식은 동일합니다. 표현식에 기대를 걸릴 수 있고 기대의 선형성으로 인해 np.mean (left_patch * right_patch) - left_mu * right_mu로 평가됩니다. 실험적으로 확인할 수도 있습니다. 숫자 안정성으로 인해 약간의 차이가있을 수 있지만이 문제는 발생할 수 없습니다. – Kochoba