2012-01-11 4 views
0

마녀에 안드로이드 용 AR 응용 프로그램을 만들려고합니다. 사용자가 카메라를 사각형 마커로 가리키고 3d 모델이 마커 상단에 나타나야합니다.OpenCV resolvePnP 카메라 및 왜곡 행렬이 없음

내가 마커의 회전과 번역을 얻기 위해 OpenCV의를 사용하고

하지만 ..

난에서 (내가 카메라 행렬과 왜곡 매트릭스 마녀를 제공해야 마녀 resolvePnP을 사용하려면 다음이 행렬을 얻으려면 내 이해)는 각 카메라 유형에 따라 다릅니다. 안타깝게도 앱이 대부분의 Android 기기에서 지원되어야하고 사용자에게 카메라 보정 절차 (openCV에서 제공하는 기능)를 실행하도록 요청할 수 없기 때문에 이것은 큰 결점입니다.

그래서 질문 : 카메라 매트릭스와 왜곡 매트릭스를 제거하는 방법이 있습니까? 또는 기기와 관련하여 마커 3D 위치를 계산하는 다른 방법이 있습니까?

QCAR과 Unity AR을 시도했지만 (OpenCV를 사용하여 3D 모델이 서버 형태로 다운로드되고 끊임없이 변경되기 때문에) OpenCV를 사용해야했습니다.

도움이 될 것입니다.

감사합니다.

답변

1

나쁜 소식이 있습니다. 대답은 결정적이고 취소 불능이며 큰 NO NO입니다.

카메라에 대해 잘 모르는 경우 이미지에 대해 알 수 없습니다. 카메라는 카메라 매트와 왜곡 매트라는 두 가지 매트릭스로 설명됩니다.

하지만 .. 나쁜 소식과 함께 좋은 소식이 있습니다. 어쩌면 뭔가 할 수 있습니다.

많은 AR 응용에서 왜곡 행렬을 무시할 수 있습니다. 작은 왜곡은 신경 쓰지 않아도됩니다. 당신은 당신이 나쁜에 좋은 변화라고하겠습니다 이제

w/(2*tan(camera.fovX())), 0, w/2, 0, 
0, h/(2*tan(camera.fovY())), h/2, 0, 
0, 0, 1, 0 

, :

그리고 당신은보기의 카메라의 필드를 알고있는 경우 카메라 행렬을 쉽게 구성 할 수있다 : 카메라 행렬을 사용하면 카메라의 FOV를해야하고, 그것을 위해 당신은 조정할 필요가 있습니다. 좋은 소식은 안드로이드에서 getHorizontalAperture() 및 getVerticalAperture() 등을 사용할 수 있다는 것입니다. 조리개 == fov.

마지막으로, 정말 나쁜 소식입니다. 많은 휴대 전화에서 반환 값은 정확하지 않습니다. 제조 업체들이 신경 쓰지 않았기 때문입니다. 그리고 가짜 각도를 반환합니다 : 10도, 180도 등

행운을 빈다!

관련 문제