2016-07-21 4 views
0

opencv 카메라 보정 좌표 변환에 대해 혼란스러워합니다. 내 카메라를 보정하는 예시적인 코드를 사용하고, 이런 결과를 얻었다 : I 카메라의 시점 좌표계 곱 카메라 행렬을 사용할 때카메라 좌표 대 픽셀 좌표 opencv

enter image description here

는 P 말을 = [50, 50, 135] 출력 결과가 너무 커서 픽셀 좌표가 불가능합니다. 여기서 뭐가 잘못 됐니? 내가 뭐 놓친 거 없니 ?

이미지는 1920 X 1080이 체스 판의 구성 파일 정보입니다 :

enter image description here

+0

이미지 안에 있지 않을 지점을 투사 할 수 있습니다. 매우 큰 X와 Z (또는 Y와 Z) 사이의 비율을 선택하십시오. 그것은 내가 Z에서 카메라로부터 1.5m 떨어진 지점을 투사하고 싶지만 X와 Y 방향으로는 50m 떨어져 있습니다 ... – Catree

+0

@Catree @Catree "당신이 비율을 선택하는 것을 이해하지 못합니다. X와 Z 사이 (또는 Y와 Z)는 매우 큽니다. " – Johnnylin

+0

이 게시물은 매우 잘 프로세스를 설명합니다 http://stackoverflow.com/questions/12299870/computing-xy-coordinate-3d-from-image-point? rq = 1 – damianodamiano

답변

2
당신은 원근 투영 모델 documentation 다른 방정식은 또한 다음과 같은 사진에 도시 OpenCV의에서 찾을 수

(덕분에 link). 정규화 된 카메라 프레임에서의 좌표는 카메라 프레임 Fc에 점 P=(X,Y,Z) 가정

Camera model

이다

x' = X/Z 
y' = Y/Z 

AND (왜곡이 없다고 가정), 화상 평면에의 투영 :

u = fx * x' + cx 
v = fy * y' + cy 

fxfy으로 초점 거리는 p ixel 및 cx, cy 이미지의 주 포인트 좌표입니다.

귀하의 경우 Z는 카메라에서 1.35 떨어져 있지만 다른 2 개의 좌표는 Z 좌표와 너무 먼 거리입니다.

수학적으로 문제가 없지만 카메라에서 점 P가 보이지 않는 것입니다.

+1

이는 지점이 시야 범위 밖에 있음을 의미합니다. – Johnnylin

+0

정확하게, 필요한 이론적 시야를 계산할 수 있으며 177 ° ('2 * atan (50/1.35)')와 같은 것을 얻을 수 있습니다. – Catree