물체에 6 개의 알려진 점 (알려진 3D 좌표)이 있으면 X,Y 과 Z) 객체 좌표계와 관련된 카메라의 위치를 계산할 수 있습니다.
먼저 몇 가지 기본 사항.
균질 좌표는 유클리드 좌표의 벡터 표현입니다 (X,Y,Z) 스케일 팩터를 추가 한 ω 균질 좌표가 X=ω[XYZ1]T. 자신의 계산에서 유지하려고ω=1 가능한 한 자주 (동일한 좌표를 마지막 요소로 나누어서 "정규화"한다는 것을 의미합니다. X←Xω). 또한 2D 포인트에 대해 동종 프리젠 테이션을 사용할 수 있습니다.x=ω[XY1] (그것을 기억하십시오 ω,X,Y 과 Z2D 또는 3D 포인트인지에 따라 각 포인트마다 다릅니다. 균일 한 좌표 표현으로 수학이 더 쉬워집니다.
카메라 매트릭스 3×4 3D 세계에서 이미지 센서로의 투영 매트릭스 :
x=PX
어디 x 이미지 센서의 포인트 (픽셀 단위) X 투영 된 3D 점입니다 (단위는 밀리미터라고합니다).
두 개의 3- 벡터 사이의 교차 곱은 다음과 같이 행렬-벡터 곱셈으로 정의 될 수 있습니다.
v × u =( V)엑스u =⎡⎣⎢0V삼−V2−V삼0V1V2−V10⎤⎦⎥유
교차 생산에 주목하는 것도 유용합니다 v × v = 0.
이제 투영 행렬을 해결해 봅시다 피이전 방정식에서. 왼쪽의 투영 방정식에엑스교차 곱 행렬 :
( x)엑스x =( x)엑스피X = 0
아하! 결과는 제로 벡터 여야합니다. 이제 방정식을 열면 다음과 같은 결과가 나타납니다.
⎡⎣⎢0w−y−w0xy−x0⎤⎦⎥⎡⎣⎢P1,1P2,1P3,1P1,2P2,2P3,2P1,3P2,3P3,3P1,4P2,4P3,4⎤⎦⎥X=⎡⎣⎢P3,4Wy−P2,1Xw−P2,2Yw−P2,4Ww+P3,1Xy−P2,3Zw+P3,2Yy+P3,3ZyP1,4Ww+P1,1Xw−P3,4Wx+P1,2Yw−P3,1Xx+P1,3Zw−P3,2Yx−P3,3ZxP2,4Wx+P2,1Xx−P1,4Wy−P1,1Xy+P2,2Yx−P1,2Yy+P2,3Zx−P1,3Zy⎤⎦⎥=0
약간의 리팩토링으로 프로젝션 매트릭스를 얻을 수 있습니다 피 매트릭스 외부 :
⎡⎣⎢⎢⎢0Xw−Xy0Yw−Yy0Zw−Zy0Ww−Wy−Xw0Xx−Yw0Yx−Zw0Zx−Ww0WxXy−Xx0Yy−Yx0Zy−Zx0Wy−Wx0⎤⎦⎥⎥⎥⎡⎣⎢⎢P1P2P3⎤⎦⎥⎥=0
어디 Pn 의 전치 n카메라 매트릭스의 : 행 P. 이전 (큰) 행렬 방정식의 마지막 행은 처음 두 행의 선형 조합이므로 추가 정보를 얻지 않고 생략 할 수 있습니다.
우리는 힘든 일을 할 수 있도록 노력합니다. 이전의 행렬 방정식은 알려진 각 3D-> 2D 대응에 대해 형성되어야합니다 (적어도 6 개 이상이어야 함).
이제 각 점 대응에 대해 위의 행렬의 처음 두 행을 계산하고 2×12 서로의 매트릭스와 새로운 매트릭스를 얻을 A 어떤
A⎡⎣⎢P1P2P3⎤⎦⎥=0
우리는 12 개의 미지수와 (적어도) 12 개의 방정식을 가지므로 이것을 해결할 수 있습니다. 유일한 문제는 우리가 사소한 대답을하고 싶지 않다는 것입니다.
⎡⎣⎢P1P2P3⎤⎦⎥=0
다행히도 단일 값 분해 (SVD)를 사용하여
∥⎡⎣⎢P1P2P3⎤⎦⎥∥=1
방정식을 풀기 위해 행렬의 SVD를 계산하십시오. A가장 작은 고유 값에 해당하는 특이 벡터를 선택합니다. 이 벡터는 행렬 A의 널 벡터이며 카메라 행렬에 대한 솔루션입니다.P. 그냥 언 스택[P1P2P3]T 그리고 형태 P.
이제 물체까지의 거리를 알고 싶었습니다. P 다음과 같이 정의됩니다.
P=K[R−RC]
어디 C오브젝트 원점을 기준으로 한 카메라 위치입니다. 에서 해결할 수 있습니다P 계산하여 Pnull 벡터
(Hartley, Zisserman-컴퓨터 비전의 다중 뷰 형상)
마지막으로 두 프레임에 대한 카메라 위치를 계산할 때 다음 두 방정식을 풀어 미지의 객체 위치 (또는 객체의 일부 점 위치)를 계산할 수 있습니다. X:
x1=P1Xx2=P2X
카메라 행렬을 해결하는 방법과 거의 같은 방식으로 진행됩니다.
(x1)xP1X=0(x2)xP2X=0
등등.