вычисление эпиполярных линий оси y в opencv - PullRequest
0 голосов
/ 12 ноября 2018

Сначала я вычислил основную матрицу по углам шахматной доски в img0 и img1, чтобы получить углы 0 и углы 1 соответственно.фрагменты данных угловой точки, как показано:

corners0:
[378.0293, 123.79789;
 404.8851, 124.32008;
 431.43372, 124.44131;
 458.28931, 124.70634;
 485.49335, 125.07674;
...]
corners1:
[287.50562, 122.48959;
 314.01279, 123.03538;
 340.43622, 123.47685;
 366.92194, 123.5791;
 393.43604, 123.53239;
...]

, так что это довольно очевидно на основе точек, которые я только что выполнил простой горизонтальный перевод, так как точки y относительно похожи.Впоследствии я вычислил основную матрицу:

Mat F = cv::findFundamentalMat(corners0,corners1,FM_RANSAC,1.,0.99);

F = [4.304332920916907e-08, -3.525831723354524e-05, 0.01127630706513125;
 3.518688699690061e-05, 3.44468377568347e-07, -0.01492149343327942;
 -0.01119198157309886, 0.01158485642332163, 1]

Однако, когда я проверяю каждую связь точка-точка, используя p0 * F * p1 = 0, у меня были небольшие значения 1.24,1.25, которые я предположил, чтобы быть небольшими ошибкамииз-за оценки RANSAC.

Затем я вычислил соответствующие эпилины, используя функцию opencv

cv::computeCorrespondEpilines(corners0,1,F,epilines0);

, и это дало мне:

epilines0:
[0.97505057, -0.22198293, -252.88275;
 0.99584365, -0.09107928, -301.36301;
 0.99904442, 0.043706499, -345.24161;
 0.98404872, 0.17789906, -382.89642;
...]

, которые являются коэффициентом ax +на + с = 0 соответственно.Так как эпиполярные линии, которые я получу, были бы прямыми горизонтальными линиями, так как я сделал горизонтальный перевод изображения, градиент является относительно удовлетворительным.Тем не менее, y-перехват, который я получу, взяв, например, -252.88275 / -0.22198293, будет огромным числом, выходящим из кадра моего изображения.Изображение, которое я использовал для захвата обоих изображений, имеет размер 640x480.Я где-то сделал ошибку?Я не лучший в проективной геометрии.Спасибо!

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