>source

나는 호모 그래피 행렬의 반전을 얻습니다.

self.inv_homography = np.linalg.inv(self.homography)

내 trasnform 기능

def doTransform(x, y, homography):
  p = np.ndarray(shape=(3, 1), dtype=float, order='F')
  p[0, 0] = x
  p[1, 0] = y
  p[2, 0] = 1
  res = np.dot(homography, p)
  return res

하지만 세 번째 행은 첫 번째 행과 동일하지 않습니다. 약간의 픽셀 슬립이 있습니다.

ref coords :(768, 512, 1024, 768)
ref to wa coords:  569.5178327464915 185.9395922739289 790.8947327112375 448.7356913249636
wa to ref coords:  767.149391928569 510.19931575332294 1022.283053230326 764.3653307505839  

이 전표를 어떻게 수정합니까?

  • 답변 # 1

    z 좌표를 하드 코딩 한 것이 문제 일 수 있다고 생각합니다. z 좌표가 정확히 1로 변환되지 않으면 오류가 발생합니다. 이 코드는 예상 출력을 반환합니다.

    import numpy as np
    def transform(x, y, z, homography):
        p = np.array([x,y,z]).reshape(3,1)
        
        return np.dot(homography, p)
        
    hom = np.array([1.2,3.1, 4.0, 2.4, 5.4, 3.2, 1.1, 3.0, 1.2]).reshape(3,3)
    x, y, z = 2.3, 1.7, 1
    inv_hom = np.linalg.inv(hom)
    x_wa = transform(x, y, z, hom)[0, 0]
    y_wa = transform(x, y, z, hom)[1, 0]
    z_wa = transform(x, y, z, hom)[2, 0]
    print(transform(x_wa, y_wa, z_wa, inv_hom))
    >>[[2.3]
       [1.7]
       [1. ]]
    
    

  • 이전 android - androidxfragmentappFragment에서 getParentFragmentManager ()에 액세스 할 수없는 이유
  • 다음 if statement - C 명령 줄 인수 플래그를 깔끔하게 처리하는 방법은 무엇입니까?