最近要做一个小项目,要完成相机的测距实现,最先考虑的是三角激光测距,但是实现起来太麻烦了,基本要搭一个简易的激光测距雷达...然后是双目测距,然而一个便宜的双目工业相机也要四五百,而且以前也没接触过双目测距...
于是就想试试单目测距的效果怎么样,通过参考网络上的各种资料,加上以前玩过三角激光测距,所以也算比较顺利的写出来个简易实现单目测距的代码,精度还算差强人意。
原理大概是这样的 :
这是三维情况下的小孔成像模型 :
我们把它简化成更为直观的二维平面模型(渣画勿喷...):
这里要说明下,这是一个典型的小孔成像模型,与单目相机的成像原理类似。
中间通过红蓝的垂线是相机的主光轴,d是被测物体至镜头的距离,f为相机镜头的焦距,w为被测物体的实际宽度(高度),w'为物体在成像平面(感光元件)上的宽度(高度)。
根据相似三角形公式可得:f / d = w' / w
由于f(相机镜头焦距)一般都是已知参数(买相机的时候总要选镜头焦距吧...),即使不清楚也可以通过计算得出,这里就不具体说了,w(实际物体宽或高)则是可以实际测得的常量。
重点说下怎么通过计算得出w'(物像宽或高)。举个栗子,假设你手上的