2014-01-24 3 views
0

동일한 위치 및 FOV에서 촬영 한 이미지 2 개와 방향 변경 만 (요, 피치, 롤) 한 경우, 기능 일치 알고리즘을 사용하여 식별 된 일치하는 픽셀을 사용하여 이미지의 FOV를 계산하려면 어떻게해야합니까? ?일치하는 픽셀에서 FOV 계산

각 이미지에서 일치하는 픽셀 집합이 동일한 단위 벡터에 비 프로젝트 (역 모델 - 뷰 - 투영 행렬에 의해 변형 된 픽셀 위치)를 가져야한다고 가정 할 때, 나는 투시 투영 행렬에서 F에 대해 풀 수 있다고 가정하고 있습니다 거기에서 FOV를 계산합니다.

참고 : 카메라의 위치 및 각도는 알려져 있습니다.

투시 투영 행렬을 풀면 F에 대한 해를 구할 수 있습니다. 여기서 VecA/| VecA | = VecB/| VecB |이다. 벡터를 정규화 할 때 벡터가 동일해야하므로이를 해결하는 방법을 잘 모르겠습니다. VecA 및 VecB의 벡터 구성 요소는 다음과 분해 :

mv = inverse Model-View matrix for image 
width = width of image in pixels 
height = height of image in pixels 
px = pixel location of matching feature 
F = tan(FOV/2) 

Vec.X = (mv.m11 * F * px.x) + (mv.m12 * F * height/width * px.y) - mv.m13 
Vec.Y = (mv.m21 * F * px.x) + (mv.m22 * F * height/width * px.y) - mv.m23 
Vec.Z = (mv.m31 * F * px.x) + (mv.m32 * F * height/width * px.y) - mv.m33 

예 데이터 :

width = 704 
height = 480 
pxA = 0.28409090909090917, -0.16666666666666663 
pxB = 0.0, 0.0 
mvA = -0.6560590289905072, -0.0902630302223078, -0.7492924234603735, 
     -0.7547095802227721, 0.0784644550873574, 0.6513499664602825, 
     0.0,     0.9928221969028145, -0.11959968786359426 
mvB = -0.7116393973440803, -0.06257611232965804, -0.6997525264787975, 
     -0.7025449225122575, 0.06338616284802252, 0.7088108536215074, 
     0.0,     0.9960253131949559, -0.08907062071687842 

    F = 0.2679491924311227 
VecA = 0.7021003426128247, -0.7111890623383523, 0.08936947128543493 
VecB = 0.6997525264787975, -0.7088108536215074, 0.08907062071687842 
|VecA|= 1.0033552092278133 
|VecB|= 1.0 

답변

관련 문제