Нарисуйте эпиполярную линию из известной фундаментальной матрицы - PullRequest
0 голосов
/ 08 октября 2019

Мне уже удалось нарисовать эпиполярную линию от изображения 1 к изображению 2. Теперь моя цель - нарисовать эпиполярную линию от изображения 2 к изображению 1 с использованием той же фундаментальной матрицы.

Итак, я 'Мы пытались использовать ту же логику, но эпиполярная линия не соответствует точке нажатия.

Эпиполярная линия от изображения 1 до изображения 2: работает

Point m1(x, y);

Data* D = (Data*)p;
circle(D->I1, m1, 2, Scalar(0, 255, 0), 2);
imshow("I1", D->I1);

Vec3d m1p(m1.x, m1.y, 1);
// Epipolar line equation 
Vec3d l = D->F*m1p;

// 1 - compute two points on the epipolar line and draw it
Point m2a(0,-l(2)/l(1)),m2b(D->I2.width(),-(l(0)*D->I2.width()+l(2))/l(1));
line(D->I2,m2a,m2b,Scalar(0,255,0),1);

imshow("I2", D->I2);

Эпиполярная линия от изображения 2 к изображению 1: не работает

Point m2(x, y);

Data* D = (Data*)p;
circle(D->I2, m2, 2, Scalar(0, 255, 0), 2);
imshow("I2", D->I2);

Vec3d m2p(m2.x, m2.y, 1);
// Epipolar line equation 
Vec3d l = D->F*m1p;

// 1 - compute two points on the epipolar line and draw it
Point m2a(0,-l(2)/l(1)),m2b(D->I2.width(),-(l(0)*D->I2.width()+l(2))/l(1));
line(D->I1,m2a,m2b,Scalar(0,255,0),1);

imshow("I1", D->I1);

Вот как выглядит вывод

Что такоеЯ неправильно понял?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...