opencv中y轴的极线计算

时间:2018-11-12 10:32:19

标签: image opencv

我首先从img0和img1中的棋盘角计算了基本矩阵,分别给了我corners0和corners1。拐角点数据片段,如下所示:

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估计,我认为这是小的误差。

i然后使用opencv函数计算相应的Epilines

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 + by + c = 0的系数。由于我进行图像的水平平移后,我得到的对极线将一直是水平的直线,因此渐变相对令人满意。但是,通过截取-252.88275 / -0.22198293可以得到的y截距将是一个庞大的数字,超出了我的图像框架。我用来捕获两个图像的图像均为640x480。我在某处犯错了吗?我不是最擅长投影几何。谢谢!

0 个答案:

没有答案