답변:
참고 : 크기가 조정 된 이미지에서 사용하는 좌표에 따라 다릅니다. 나는 당신이 0과 같은 시스템을 사용하고 있다고 가정하고 ( C
와는 달리 Matlab
) 0은 0으로 변환됩니다. 또한 좌표 사이에 치우침이 없다고 가정합니다. 비뚤어지면 곱해야합니다.
짧은 대답 : 인 를 사용한다고 가정하면 을 곱해야합니다 0.5.
자세한 답변 월드 좌표 의 점 를 카메라 좌표 은 다음과 같습니다.
여기서 , 좌표가 균일하기 때문에.
요컨대 이것은 기록 될 수
두 행렬의 곱 위에서 언급 한, 그리고 상기 I '인 행렬 열 . (제품은 스칼라 제품입니다).
이미지 크기 조정은 다음과 같이 생각할 수 있습니다.
그러므로
행렬 형식으로 다시 변환하면 다음이 가능합니다.
어느 것이
자세한 내용은 Forsyth , 3 장-기하 카메라 보정을 참조하십시오 .
Andrey는 자신의 솔루션에서 0이 0으로 변환되었다고 가정합니다. 픽셀 좌표를 사용하는 경우 이미지 크기를 조정할 때 사실이 아닐 수 있습니다. 실제로해야 할 유일한 가정은 이미지 변환을 3x3 행렬로 나타낼 수 있다는 것입니다 (Andrey가 설명했듯이). 카메라 매트릭스를 업데이트하려면 이미지 변환을 나타내는 매트릭스를 미리 곱하면됩니다.
[new_camera_matrix] = [image_transform]*[old_camera_matrix]
예를 들어, 이미지의 해상도를 인수 만큼 변경해야하며 0 인덱스 픽셀 좌표를 사용한다고 가정하십시오. 좌표는 관계에 의해 변환됩니다
이것은 행렬로 나타낼 수 있습니다
최종 카메라 매트릭스는