카메라 보정 / 핀홀 카메라 모델 및 3D 위치 계산


10

보정 된 카메라가 있고 고유 매개 변수가 있습니다. 또한 실제 세계의 평면 표면에있는 점 (세계 원점)을 기준으로 외부 매개 변수가 있습니다. 이 점은 실제 좌표 [0,0,0]에서 법선 [0,0,1]의 원점으로 설정했습니다.

이 외부 매개 변수에서 다음을 사용하여 월드 평면 3D 좌표에서 카메라 위치 및 회전을 계산할 수 있습니다. http://en.wikipedia.org/wiki/Camera_resectioning

이제 [x, y]의 이미지 좌표를 추출한 두 번째 점이 있습니다. 절대 좌표계에서이 점의 3 차원 위치를 얻으려면 어떻게해야합니까?

여기서 직관은 카메라의 광학 중심 (위에서 설명한대로 3D 위치를 가짐)에서 카메라의 이미지 평면 [x, y]을 통과 한 광선을 추적해야한다는 것입니다. 내가 정의한 실제 세계 비행기를 통해

이제는 평평한 점을 알고 그 평면을 가리키면서 평면과 월드 좌표 3D 광선을 교차시킬 수 있습니다. 내가 얻지 못하는 것은 픽셀을 통해 이미지 평면을 떠날 때 3D 위치와 방향을 찾는 방법입니다. 혼란스러운 다른 좌표계를 통한 변형입니다.


이 답변을 확인하면 도움이 될 수 있습니다. 어떤 것이라도 완성 될 수 있다고 생각되면 말해주십시오. dsp.stackexchange.com/a/2737/1473
— Jav_Rock

답변:


6

외 재적 인 경우 매우 쉽습니다. 외인성을 갖는 것은 "카메라 자세"를 갖는 것과 동일하며 호모 그래피를 갖는 것과 동일합니다. 이 게시물 을 stackoverflow에서 확인하십시오 .

번역 및 회전으로 설명되는 카메라 포즈라고도하는 외부 함수가 있습니다.

Pose=[R|t]=[R11R12R13txR21R22R23tyR31R32R33tz]

이 방법으로 포즈 에서 호모 그래피 를 얻을 수 있습니다 .

H=1tz[R1xR2xtxR1yR2ytyR1zR2ztz]

그런 다음 Homography에 점을 곱하여 2D 점을 해당 3D 점으로 투영 할 수 있습니다.

p2D=[xy1] 더하다 z=1 그것들을 균질하게 만들기 위해

p3D=H∗p2D

p=p/p(z) 점을 정규화


여기서 p (z)는 무엇을 의미합니까?
— Belal Homaidan

3

두 평면 사이에서 투영 또는 후면 투영을 사용하는 두 가지 옵션이 있습니다 (호모 그래피).

P

P=K[R−RC]Xreprojected=P+x

CXV=ω[XYZ1]Tω=1

u=Xreprojected−Cv=u‖u‖L(t)=C+tv

비행기 경우 방정식 대한 .Π=[π1π2π3π4]T,π1X+π2Y+π3Z+π4=0L(t)=Πt

호모 그래피를 사용하기로 결정한 경우 이미징 된 평면과 카메라 센서 평면 사이의 투영으로 정의 된 호모 그래피 행렬 를 계산해야합니다 .3×3H

Xplane=[XY01]Tx=PXplane=H[XY1]T

x

Xplane=H−1x

H

H=R+1dTNT

dT=−RC


2

두 번째 점의 3D 위치를 알 수 없습니다. 카메라 중심에서 무한대까지 광선의 점이 될 수 있습니다.

다음을 수행 할 수 있습니다.

  • 실제 장면과 유사한 미리 정의 된 3D 공간을 만듭니다.
  • 다른 각도에서 광선의 교차점을 사용하여 다른 각도에서 더 많은 이미지 포인트를 얻으면 3D 포인트의 근사치를 얻을 수 있습니다.

잠깐만 3d 광선이 평면 표면과 교차한다는 3d 월드 포인트를 찾을 수 있습니까? 내가 3D 세계 좌표와 그 평면의 3D 세계 법선을 알고 있듯이 ..... 내가 찾고자하는 3D 점은 평면 표면과 교차하는 점입니다 !! (죄송 합니다만 설명이 충분하지 않다고 생각합니다)
— Cheetah

평면 표면이란 무엇입니까? 이미지 평면 또는 제로 월드 좌표의 평면? 후자의 경우 교차점을 계산할 수 있지만 이는 3d 장면이 3d가 아니라 2d :) (평면이기 때문에)임을 의미합니다.
— Geerten

그래, 미안, 나 한테 그런 일은 없었어 나는 당신이 말하는 것을 이해합니다. 그것은 시각적으로 나에게 의미가 없습니다. 예, 이미지 평면이 있고 실제 원점 [0,0,0]이 있고 실제 법선 [0,0,]이있는 실제 평면이 있으므로 장면이 실제로 "2d"입니다. 따라서이 실제 세계 평면에있는 모든 점은 [x, y, 0]의 형태입니다. ax + by + cz + d = 0이지만 교차점을 계산할 수 있다는 것을 알고 있지만 이것이 문제가됩니다. (다음 댓글에서 계속)
— Cheetah

실제 카메라 [x, y, z]와 실제 노멀 [nx, ny, nz]이있는 카메라 센터 / 원점에서 시작하는 광선이 있습니다. 이 시점에서 [u, v]에서 이미지 평면과 교차 한 다음 [x, y, 0]에서 실제 평면과 교차하는 광선을 발사해야합니다 (이 x, y를 얻으려고합니다). 내가 문제가있는 것은 첫 번째 비트, 이미지 평면과의 교차점입니다. 내가 어떻게하는지 볼 수 없습니까?
— 치타

당신이보고 싶을 수 있습니다 en.wikipedia.org/wiki/Line-plane_intersection
— Geerten
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.