问题说明:最近一直在做特征点匹配,利用初始匹配求出部分正确点,然后利用这些点求出两个图象之间的基础矩阵,然后再利用求得的基础矩阵对图1中的每个特征求出其在图2中的对应外极线,从而利用外极张进行精确特征点匹配.问题出现在:
对应每一个特征点的外极线已经全部求出,并将结果存放在一个3*N矩阵中(N表示有N条对极线,3表示3个参数a,b,c即ax+by+c=0)
现在我想把所用点的对极线在第二副图像中画出来,要知道如果想画一条线则必须给出两个已知点,我是利用如下方式求得两个点的:
x1=10000;  y1=cvRound((-x1*a-c)/b);(cvRound()表示把()中的换成整数)
x2=-10000; y2=cvRound((-x2*a-c)/b);cvLine(srcImage2,cvPoint(x1,y1),cvPoint(x2,y2),CV_RGB(0,0,255),1,0);
可是这样得到的结果是有一部分线是画不出来的
我想原因可能是因为用上面的方法求得的两个点很有可能越界(即不在第二个平面内),按理说应该不会这样吧?
如果真是这样的话请问大家如何才能画出所有的直线呢?(只知道直线的方程)

解决方案 »

  1.   

    不好意思,附件里的图像用的是BMP格式,但是如果不用这种格式会丢颜色,我试了一下图像中的点就没法看到了。但是这样好像又大了些,不知道大家能不能看到。图像中的那个方形的大红点是我特意标注的,即没有对极线穿过的那个。而且我数了一个,对极线的确是少了一条。
      

  2.   

    cvLine画的是线段,不是直线,所以需要指定边界上的点来划线