代码改变世界

sift实现的双目测距

2011-11-13 21:30  libing64  阅读(4766)  评论(3编辑  收藏  举报

最近一直在做双目测距的工作,今天终于获得一定的成果~拿出来与大家分享~

一、源码下载:http://download.csdn.net/detail/renshengrumenglibing/3791149

 二、硬件:

三、匹配效果:


四、基本算法 参见学习opencv中关于双目测距的算法

最关键的Z = fx*T/(x2 - x1)


五、基本参数:

摄像头间距:T = 187mm
由于在实际测量过程中,发现摄像机的焦距并非固定不变的,在标定

的时候会发现,随着距离的变大,测量的焦距逐渐变大,于是采用测量多



组的的数据拟合 出摄像头的焦距公式
求取焦距与实际距离的拟合公式:fx = g(distance)
实际距离 像差 反推的焦距 
413 398 879
519 321 890.9
618 279 922
727 245 952.5
835 217 969.0
930 200 994.65
1075 179 1029
1211 187 1068.5
1345 152 1093
1496 142 1136


焦距拟合公式(matlab计算)
fx*T = k*dis +b
k  = 44.97
b = 14454.17732 
T为两个摄像头间的距离,为定值187mm。
知道焦距的拟合公式以后,再测出两张照片的匹配点的像差,可以测出


距离
由方程组:
fx * T = k*dis +b
Z = fx*T/(x2 - x1)
x2 - x1 为两张照片的匹配点的像差
Z该匹配点的实际距离。




得出距离测量公式Z = b/(x2 -x1 - k)


六、实际测量值比较:

重现拍摄几组图片,求取实际距离
下面给出求解结果以及误差分析:单位mm
实际距离 测量距离 误差
1472 1460 -12
1059 1054 -5
921 920.48 -0.52
804 798.4 -5.6
644 642.3 -1.7
516 510.69 -5.31
源码下载网址:
http://download.csdn.net/detail/renshengrumenglibing/3791149