0

체스 보드없이 단일 이미지에서 카메라를 보정하려고합니다. 이를 위해 Tsai의 방법을 사용하여 카메라를 보정하는 다음 응용 프로그램 (http://w3.impa.br/~zang/qtcalib/index.html)을 사용했습니다.단일 보정 카메라를 사용하여 2D 이미지에서 세계 좌표 가져 오기

응용 프로그램은 intristic, rotation 및 translation 행렬을 반환합니다.

그 후, 2 차원 이미지에서 월드 좌표를 계산하고 싶습니다. 따라서 내 프로그램에 2 차원 좌표 (x, y)와 행렬 (intristic, rotation, translation)을 넘겨 주어 3D 좌표 (X, Y, Z)를 얻고 싶습니다.

일부 관련 스레드 (Get 3D coordinates from 2D image pixel if extrinsic and intrinsic parameters are known)의 지침을 따랐지만 예상대로 결과가 아닙니다. 게다가 내 원점 (0, 0, 0)이 어디인지 전혀 알지 못합니다.

내가 뭘 잘못하고 있니?

답변

2

사영 변환은

X = K * T * X

여기서

K : 극한
T : 외부 (사용자의 회전 및 평행 이동). X를 카메라 좌표계로 변환합니다.
X : 따라서 3D 무한 개의 가능한 포인트가 있으며, 3 차원 공간에 라인에 필적 3D에 2D 화소 투사

좌표 : 3D 픽셀이 이미지
X 좌표. 일반적인 3D 좌표를 얻으려면 깊이 값을 선택해야합니다. *
X '=의 INV (K) × : 카메라의 중심에, [; 0 0 0]

  • 카메라 좌표계 :

    당신은 조정 결과 3D의 당신의 출처를 결정할 수 있습니다

  • 내 체스 또는 영 그리드 좌표 시스템, [0 0 0] 모서리 중 하나 보통 :
    X '=의 반전 (T) * INV (K) * X

그러나 이미 언급했듯이 X '는 선과 더 비슷합니다. 적절한 3D 좌표를 얻으려면 크기를 조절해야합니다.

어파 인 변환이 무엇을 하는지를 아는 것이 때로는 어렵습니다. 당신이 원하는대로 할 수없는 경우, 빠른 엔지니어링 접근법은 그 역으로 시도 할 수 있습니다 :)

그게 도움이되지 않는다면, 당신은 당신의 매트릭스를 전달할 수 있습니다.