У меня есть функция, которая проецирует точку, используя модель камеры с 7 параметрами:
Vec2 project(const Rot3& R, // camera orientation
const Vec3& T, // camera pos
double f_px, // focal length
const Vec3& X) // point in world;
{
const Vec3 P = R * (X-T); // Subtract camera position and apply rotation
const Vec2 p = P.hnormalized() * f_px; // Normalize and apply focal length
return p;
}
- Rot3 - это удобное представление вращения. Предположим, что это
Матрица 3х3.
- Vec3 :: hnormalized () возвращает Vec2 (x / z, y / z)
Теперь я хочу расширить функцию, чтобы получить оценку неопределенности проецируемой точки (ковариационная матрица 3x3 - эллипсоид в мировых координатах) и вернуть ковариационную матрицу 2x2 (эллипс в пиксельных координатах).
Я думаю, что здесь применима ссылка на Геометрию множественного обзора в компьютерном зрении здесь , но я не могу понять ее математику.