2D 카메라를 사용한 3D 위치 추정


9

나는 카메라 (아이폰)를 가지고 있으며, 그 속성을 잘 알고있는 이미지에 3D 제어 객체가 있습니다. (내 컨트롤 개체). 움직이는 보조 객체도 있습니다. 궁극적 인 목표는 주어진 시간 동안 움직이는 물체의 3D 궤도를 설정하는 것입니다. (추적)

물어보고 싶습니다. 알 수 있습니까?

  • 제어 물체까지의 전화 거리

  • 각 후속 프레임에서 객체를 찾을 수있는 보조 객체입니다. 내 목표는 위에서 지적한대로 3D 궤적을 추정하는 것입니다.

보너스 질문, 우리는 제어 객체까지의 전화 거리를 설정할 수 있도록 시스템을 만들 수 있습니다 (선호하지는 않지만).


이 분야의 문헌에 익숙하십니까? 그렇지 않다면 몇 가지 논문을 추천 할 수는 있지만 경고가 있습니다.
— Emre

@emre 포인터를 제공 할 수 있다면 좋을 것입니다. 수학은 문제가되지 않습니다. 우리는 수학을 좋아합니다.
— Ktuncer


@emre 나는 리뷰지를 훑어 보았다. 이것은 추적을위한 것이지, 나는 쉽게 문제를 추적 할 수있다. 객체가 어느 픽셀인지 알려줄 수 있습니다. 문제는 객체가 3D 공간에있는 것입니다. 이것이 가능한가? 기본적으로 3D 공간에는 참조 프레임으로 사용할 수있는 속성을 알고 있지만 바로 다른 객체가 있습니다.
— Ktuncer

죄송합니다. 잘못된 용지입니다. 미지의 환경에 대한 비전 기반 3D 궤적 추적 [PDF]를 적용 할 수 있습니까? 그들은 스테레오 카메라를 사용합니다. 그게 당신에게 가능성이 있습니까?
— Emre

답변:


15

물체에 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×유=(V)엑스유=[0−V삼V2V삼0−V1−V2V10]유

교차 생산에 주목하는 것도 유용합니다 V×V=0.

이제 투영 행렬을 해결해 봅시다 피이전 방정식에서. 왼쪽의 투영 방정식에엑스교차 곱 행렬 :

(엑스)엑스엑스=(엑스)엑스피엑스=0

아하! 결과는 제로 벡터 여야합니다. 이제 방정식을 열면 다음과 같은 결과가 나타납니다.

[0−wyw0−x−yx0][P1,1P1,2P1,3P1,4P2,1P2,2P2,3P2,4P3,1P3,2P3,3P3,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,4W와이−피1,1엑스와이+피2,2와이엑스−피1,2와이와이+피2,삼지엑스−피1,삼지와이]=0

약간의 리팩토링으로 프로젝션 매트릭스를 얻을 수 있습니다 피 매트릭스 외부 :

[0000−Xw−Yw−Zw−WwXyYyZyWyXwYwZwWw0000−Xx−Yx−Zx−Wx−Xy−Yy−Zy−WyXxYxZxWx0000][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

등등.


카메라의 3D 위치를 계산하는 방법이 OpenCV solvePnp와 동일하다고 말하는 것이 맞습니까? docs.opencv.org/2.4/modules/calib3d/doc/… (페이지에서 solvePnP를 ​​검색하십시오. URL을 #으로 붙여 넣을 수 없습니다)
— gregoiregentil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.