7

나는 flags PARAM은 디폴트 값 SOLVEPNP_ITERATIVE을 사용하는 경우, 그것은하는 우선합니다 (DLT 알고리즘을 사용하여, cvFindExtrinsicCameraParams2를 부르고 OpenCV의에서 기능 solvePnP()의 소스 코드를 읽고 있어요 우리는 3D 점의 평면이 아닌 세트가있는 경우)를 사용하여 6DOF 카메라 포즈를 초기화하고 SECOND는 CvLevMarq solver을 사용하여 재 투영 오류를 최소화합니다.DLT (Direct Linear Transformation)가 최적의 카메라 외장을 제공하지 않는 이유는 무엇입니까?

내 질문은 : DLT는 문제를 선형 최소 제곱 문제로 비난하고 SVD 분해로 해결합니다. 최적의 솔루션 인 것 같습니다. 왜 Lev-Marq 반복 방법을 사용합니까?

또는 DLT 알고리즘의 문제점/제한 사항은 무엇입니까? 왜 닫힌 형식의 솔루션은 LOCAL의 비용 함수에 해당합니까?

+0

반복적으로 수행되는 외인 추정에 비선형 정교화의 추가 단계를 추가하는 것이 일반적이라고 생각합니다. 여기를 참고하십시오 : http://www.epixea.com/research/multi-view-coding-thesisse9.html – Dan

+0

@dan thx 링크를 위해서, 저는 CvLevMarq 솔버가 opencv에서했던 것과 마찬가지로 일반적이라는 것을 알고 있습니다. 제 말은, DLT는 비용 함수의 ** 폐쇄 형 최소화 ** 인 것 같습니다. 왜 여전히 열등 (지역 최소)입니까? – zhangxaochen

답변

4

문제에 대한 해결책을 찾으려면 먼저이 문제를 수학적으로 표현하고 기존 수학 도구를 사용하여 방정식에 대한 솔루션을 찾아야합니다. 그러나 흥미로운 문제는 일반적으로 다양한 수학적 방법으로 표현 될 수 있으며 각각의 방법은 약간 다른 해결책으로 이어질 수 있습니다. 그런 다음 여러 방법을 분석하여 가장 안정적이고 정확한/효율적인/기타 솔루션을 제공하는 방법을 파악하는 작업이 필요합니다.

PnP 문제의 경우 3D 점과 투영 이미지 평면 사이의 연관성을 고려하여 카메라 포즈를 찾고 싶습니다.

이 문제를 수학적으로 표현하는 첫 번째 방법은이를 선형 최소 제곱 문제로 변환하는 것입니다. 이 접근법은 DLT 접근법으로 알려져 있으며 선형 최소 제곱은 단일 값 분해를 사용하여 견고하게 찾을 수있는 닫힌 형태의 솔루션이므로 흥미 롭습니다. 그러나이 방법은 카메라 포즈 P가 실제 6 개 (3D 회전의 경우 3 개, 3D 번역의 경우 3 개) 인 경우 자유도가 12 개라고 가정합니다. 이 접근법의 결과로 6DOF 카메라 포즈를 얻으려면 근사값이 필요합니다 (DLT의 선형 비용 함수로는 포함되지 않음). 이는 부정확 한 해를 가져옵니다.

PnP 문제를 수학적으로 표현하는 두 번째 방법은 비용 함수로 기하학적 오차를 사용하고 기하학적 오차를 최소화하는 카메라 포즈를 찾는 것입니다. 기하학적 오차가 비선형이기 때문에,이 접근법은 Levenberg Marquardt 알고리즘과 같은 반복 솔버를 사용하여 솔루션을 추정합니다. 이러한 알고리즘은 카메라 자세의 6 자유도를 고려하여 정확한 솔루션을 제공합니다. 그러나 반복적 인 접근법이므로 솔루션의 초기 추정치를 제공해야합니다. 실제로는 DLT 방식을 사용하여 실제로 구할 수 있습니다.

이제 DLT 알고리즘이 최적의 카메라 외장을 제공하지만 DLT 알고리즘으로 해결 된 선형 비용 함수의 관점에서만 최적입니다. 수년에 걸쳐 과학자들은 더 복잡한 비용 함수를 발견하여보다 정확한 솔루션을 제공 할뿐만 아니라 해결하기도 더 어렵습니다.

+0

Thx first ~ DLT가 열등한 이유는 12DOF 행렬이 정확하게 변형 된 행렬이 아니기 때문입니다. 그러나 실제로''svd (H) = UWV^T'' 연산과'result = VU^T' 연산은 9DOF가 아니라 3DOF로 정확한 회전 행렬 (det = + 1을 갖는 직교 행렬)을 제공합니다. 그것? – zhangxaochen

+1

예, 12DOF 카메라 포즈에서 6DOF 카메라 포즈를 추출하는 방법이 있습니다 (예 : SVD 사용). 그러나이 변환은 DLT 알고리즘의 선형 최소 제곱 문제에 포함되지 않으므로 직선 최소 제곱 비용 함수의 의미에서 더 이상 최적이 아닌 6DOF 카메라 포즈로 끝납니다. 최소 제곱 문제에 6DOF 포즈 추정을 포함 시키려면 비선형 함수가 필요하며 비선형 함수를 최소화하기 위해 알고있는 최선의 방법은 반복 솔버 (예 : Levenberg-Marquardt 알고리즘)를 사용하는 것입니다. – AldurDisciple