主要内容

epipolarLine

计算立体图像的极线

描述

例子

= epipolarLine (F返回一个3矩阵,.该矩阵表示图像中计算得到的极线I2对应于在图像I1.输入F表示映射其中点的基本矩阵I1图像中的极线I2

= epipolarLine (F '该矩阵表示图像中计算得到的极线I1对应于在图像I2

例子

全部折叠

这个例子向您展示了如何计算基本矩阵。采用最小平方中值法求内线。

点matched_points1和matched_points2已经被假定匹配。

负载stereoPointPairs[flmed,inliers] = estimatementalmatrix (matchedPoints1,...matchedPoints2,“NumTrials”, 4000);

显示第一个图像中的内线。

I1 = imread(“viprectification_deskLeft.png”);图;次要情节(121);imshow (I1);标题(第一张图片中的内线和外极线);持有;情节(matchedPoints1(内围层,1),matchedPoints1(内围层,2),“去”

图中包含一个轴对象。第一个图像中带有标题Inliers和eppolar Lines的坐标轴对象包含了Image, line类型的2个对象。

计算第一张图中的极线。

epiLines = epipolarLine(flmed ',matchedPoints2(inliers,:));

计算直线与图像边界的交点。

points = lineToBorderPoints(epiLines,size(I1));

在第一张图中显示极线

线(点(:,[1,3]),点(:,(2、4)));

图中包含一个轴对象。First Image中标题为Inliers和eppolar Lines的坐标轴对象包含11个Image、line类型的对象。

在第二张图中显示内线。

I2 = imread(“viprectification_deskRight.png”);次要情节(122);imshow (I2);标题(第二幅图中的内线和外极线);持有;情节(matchedPoints2(内围层,1),matchedPoints2(内围层,2),“去”

图中包含2个轴对象。第一个图像中带有标题Inliers和eppolar Lines的坐标轴对象1包含11个Image, line类型的对象。坐标轴对象2,标题Inliers和第二图像中的eppolar Lines包含2个类型为Image, line的对象。

计算并显示第二幅图中的极线。

epiLines = epipolarLine(fLMedS,matchedPoints1(inliers,:));points = lineToBorderPoints(epiLines,size(I2));线(点(:,[1,3]),点(:,(2、4)));truesize;

图中包含2个轴对象。第一个图像中带有标题Inliers和eppolar Lines的坐标轴对象1包含11个Image, line类型的对象。第二图像中带有标题Inliers和eppolar Lines的坐标轴对象2包含11个Image, line类型的对象。

输入参数

全部折叠

基本矩阵,指定为3 × 3矩阵。F必须是双人间或单人间。如果P1代表第一个图像中的一个点对应于P2、第二幅图中的一个点2,那么:

P21) *F* (P1,1]' = 0

在计算机视觉中,基本矩阵是一个3 × 3矩阵,它将立体图像中的对应点联系起来。当两台摄像机从两个不同的位置观看一个3-D场景时,3-D点及其在2-D图像上的投影之间存在许多几何关系,这导致图像点之间存在约束。同一场景的两幅图像由极面几何联系起来。

数据类型:|

基本矩阵,指定为3 × 3矩阵。的F '基本矩阵映射图像中的点I2图像中的极线I1

数据类型:|

点的坐标,指定为-by-2矩阵是点的个数,或一个点的特征对象。矩阵包含(xy)每个点的坐标。有关受支持的点特征对象的详细信金宝app息,请参见点特征类型

数据类型:|

输出参数

全部折叠

一个-by-3矩阵,其中表示行数。矩阵的每一行必须是这样的形式,[一个BC].这些值对应于直线的定义:

一个x+By+C= 0。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2011a中引入

全部展开