문제

정확한 위치를 알고있는 3D 공간에 3 점이 있습니다. 그들이 다음이라고 가정합니다. (x0,y0,z0), (x1,y1,z1) 그리고 (x2,y2,z2).

또한이 3 점을보고있는 카메라가 있으며 카메라 뷰 평면 에서이 세 점의 2D 위치를 알고 있습니다. 예를 들어 (x0,y0,z0) 될거야 (x0',y0'), 그리고 (x1,y1,z1) 될거야 (x1',y1') 그리고 (x2,y2,z2) 될거야 (x2',y2') 카메라의 관점에서.

카메라 뷰 평면에서 이러한 3D 포인트를 2D 포인트로 투사하는 투영 행렬을 찾는 가장 쉬운 방법은 무엇입니까? 우리는 카메라 위치에 대해 아무것도 모릅니다.

도움이 되었습니까?

해결책

이것은 당신에게 3 개의 변수로 세 가지 방정식의 두 세트를 제공합니다.

a*x0+b*y0+c*z0 = x0'
a*x1+b*y1+c*z1 = x1'
a*x2+b*y2+c*z2 = x2'

d*x0+e*y0+f*z0 = y0'
d*x1+e*y1+f*z1 = y1'
d*x2+e*y2+f*z2 = y2'

동시 방정식을 해결하는 방법을 사용하면 상황에서 가장 쉬운 방정식이 가장 쉽습니다 ( "손으로"해결하기 어렵지 않습니다). 그런 다음 변환 매트릭스는 ((a, b, c) (d, e, f))입니다.

...

실제로, 그것은 지나치게 단순화되며 카메라가 3D 좌표계의 원점을 가리키며 관점이 없다고 가정합니다.

관점에서 변환 매트릭스는 더 잘 작동합니다.

               ( a, b, c, d )   ( xt )
( x, y, z, 1 ) ( e, f, g, h ) = ( yt )
               ( i, j, k, l )   ( zt )

( xv, yv ) = ( xc+s*xt/zt, yc+s*yt/zt ) if md < zt;

그러나 4x3 매트릭스는 우리가 가져야하므로 12 도의 자유보다 구속력이 있습니다.

a*a+b*b+c*c = e*e+f*f+g*g = i*i+j*j+k*k = 1
a*a+e*e+i*i = b*b+f*f+j*j = c*c+g*g+k*k = 1

따라서 카메라 위치 및 각도의 6 가지 변수를 커버하기 위해 8 개의 방정식을 얻을 수있는 4 점, "중 ).

따라서 4 점이 있고 디스플레이의 중심과 관련하여 2D 뷰 포인트를 변환하면 13 개의 변수에서 14 개의 동시 방정식을 얻고 해결할 수 있습니다.

불행히도, 6 개의 방정식은 선형 방정식이 아닙니다. 다행히도, 해당 방정식의 모든 변수는 -1과 1 사이의 값으로 제한되므로 방정식을 해결하는 것이 여전히 가능할 것입니다.

다른 팁

카메라에는 (적어도) 자유도 -3은 위치 3 개, 오리엔테이션은 3 개, FOV의 경우 1입니다. 내가 틀렸다면 누군가가 나를 교정 할 것이라고 확신하지만, 전체 솔루션에 3 점이 충분하지 않은 것 같습니다.

이 문제에 대한 일반화 된 솔루션의 경우 그래픽 GEMS II에서 '상관 관계보기'를 찾아보십시오.

당신이 찾고있는 것은 포즈 추정 알고리즘이라고합니다. OpenCV의 POSIT 구현을 살펴보십시오. http://opencv.willowgarage.com/documentation/c/calib3d_camera_calibration_and_3d_reconstruction.html#posit

4 점 이상이 필요하며 같은 비행기에 놓지 않을 수 있습니다.

이 구현을위한 튜토리얼은 다음과 같습니다.http://opencv.willowgarage.com/wiki/posit

그래도주의하십시오 : 자습서에서는 제곱 뷰포트가 사용되므로 모든 뷰 코디네이트는 -1, -1 ~ 1,1 범위입니다. 이로 인해 카메라 좌표 시스템에 있어야한다고 가정합니다 (Aspect-Ratio 보정 전). 그렇지 않으므로 예를 들어 4 : 3 종횡비로 뷰포트를 사용하는 경우 입력 좌표는 -1.3333, -1 ~ 1.333,1 범위에 있어야합니다.

그건 그렇고, 당신의 요점이 있다면 ~ 해야 하다 같은 평면에 누워 있으면 OpenCV의 카메라 센트레이션 알고리즘을 볼 수 있지만 설정에 더 많은 관련이 있으며 입력으로 더 많은 포인트가 필요합니다. 그러나 카메라의 왜곡 정보와 고유 한 매개 변수도 생성합니다.

결정적인 솔루션을 찾을 수있는 정보가 충분하지 않다고 생각합니다. 카메라 위치를 알지 못하고 뷰 평면을 모르면이 문제를 해결할 수있는 무한한 수의 행렬이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top