2013-10-06 1 views
0

두 개의 서로 다른 좌표 공간 (A와 B)에 3D 쌍점 배열이 있습니다.3D 데이터에서 비 아핀 변환 행렬을 계산합니다.

주어진 점이 동일 평면 상에 있지 않습니다. 포인트를 A에서 B로 변환 할 수있는 비 아핀 변환 행렬을 계산하려면 어떻게해야합니까?

저는 2D에서 (호모 그래피를 사용하여)이 작업을 수행했지만 3D로 작동시키는 방법을 찾을 수 없습니다. 가능한 경우 빠른 코드 예제가 많이 감사하겠습니다. :)

답변

2

this post에 설명 된 접근법은 3 차원으로 일반화됩니다. 두 좌표계에서 5 점의 좌표를 알고 있다면이를 사용하여 4x4 사영 변환 행렬을 계산할 수 있습니다. 기하학적 관련성이없는 축척 계수를 제외하고는 고유합니다.

것은 내가 sage 용으로 작성 variousposts에서 2D에 필요한 코드의 변화를 포함했으며, the description와 함께 언급 된 자바 스크립트 예제도 있습니다. 이 중 어떤 것도 3D 케이스에 적용 할 수 있지만 프로그래밍 언어를 변경하려는 경우 수식을 직접 구현하는 것이 좋습니다. 즉 adjoint가 여러 행렬의 역행렬에 대한 대안으로 사용될 수 있습니다 위치. 여기

차원으로 일반화 일부 세부 사항이다 :

  1. 왼쪽과 오른쪽에 다섯 번째 지점 네 점의 동차 좌표와, 선형 방정식의 4 × 4 시스템을 사용한다.
  2. 4 개의 솔루션 변수를 사용하여 변환 행렬을 얻기 위해이 네 개의 열을 스케일합니다.
  3. (이전)
  4. 균질의 처음 세 개의 좌표가 네번째로 벡터 dehomogenized 좌표를 구하는 좌표 좌표 분할
  5. (전과) (전 등) (전과).
+0

감사합니다. 2D로하는 방법을 알고 있지만 3D로 일반화하는 방법, 특히 1, 2, 7 단계를 구체적으로 모르겠습니다. – John

+0

감사합니다. 귀하의 게시물에서 당신은 해결 매트릭스를 사용하여 언급. 좀 더 설명해 주시겠습니까? – John

+0

1 단계에서 RHS 벡터에 LHS 행렬의 역수를 곱하여 수행 할 수있는 선형 방정식을 풀어야합니다. 4 단계에서 반대 동작이 필요합니다. 이 두 경우 모두 inverse 대신 adjoint를 사용할 수 있으며 최종 결과는 기하학적 결과가없는 스칼라 배수 만 차이가납니다. – MvG

관련 문제