激光测体积

laser

公式推导

线激光测体积。原理如图所示。如果没有任何障碍物,激光会打到Plane0的y0y_0y0上,而如果有了一个待测物体,测激光会打在被测物体上,形成一个偏移。将这个偏移作一条垂直于Plane0的线,则其与Plane0的交点为y1y_1y1。利用这个偏移以及β\betaβ角度,我们可以测量出物体的高度。

我参考的论文是"Calibration Method For Height Measurement Of Object Using Laser Triangulation"。但我与它的观点有一些差别。

如果仅从物理世界来观察,我们会认为物体的高度h=(y1−y0)/(tan⁡β)=Δy/(tan⁡β)h=(y_1-y_0)/(\tan \beta)=\Delta y/(\tan\beta)h=(y1y0)/(tanβ)=Δy/(tanβ)。所以认为hhhΔy\Delta yΔy是线性关系的。但是我们忘记了一点,即这是物理世界的Δy\Delta yΔy,而不是成像出来的Δy\Delta yΔy。物理世界是立体的,而成像之后都成像到了一个平面上。也就是说,图中的Plane0会在Image Plane上成像,而图中的Plane1也会在Image Plane上成像。所以事情就变成了这样:y0y_0y0在像平面上的坐标
y0′=y0(2Htan⁡α)⋅PYy_0'=\frac{y_0}{(2H\tan\alpha)}\cdot PYy0=(2Htanα)y0PY
y1′=y0+htan⁡β−htan⁡α2(H−h)tan⁡α⋅PYy_1'=\frac{y_0+h\tan\beta-h\tan\alpha}{2(H-h)\tan\alpha}\cdot PYy1=2(Hh)tanαy0+htanβhtanαPY
由于我们要查看的是y1′−y0′y_1'-y_0'y1y0hhh的关系,因此,可以写为:y1′−y0′=f(h)y_1'-y_0'=f(h)y1y0=f(h)
f(h)=y1′−y0′=y0+htan⁡β−htan⁡α2(H−h)tan⁡α⋅PY−y0(2Htan⁡α)⋅PY=(tan⁡β−tan⁡α)h+y0−2tan⁡αh+2Htan⁡α⋅PY−y0(2Htan⁡α)⋅PY \begin{align} f(h) &= y_1'-y_0' \\ &= \frac{y_0+h\tan\beta-h\tan\alpha}{2(H-h)\tan\alpha}\cdot PY - \frac{y_0}{(2H\tan\alpha)}\cdot PY\\ &= \frac{(\tan\beta-\tan\alpha)h+y_0}{-2\tan\alpha h+2H\tan\alpha}\cdot PY - \frac{y_0}{(2H\tan\alpha)}\cdot PY\\ \end{align} f(h)=y1y0=2(Hh)tanαy0+htanβhtanαPY(2Htanα)y0PY=2tanαh+2Htanα(tanβtanα)h+y0PY(2Htanα)y0PY


s=tan⁡β−tan⁡αu=y0t=−2tan⁡αv=2Htan⁡α \begin{align} s &= \tan\beta - \tan\alpha\\ u &= y_0\\ t &= -2\tan\alpha\\ v &= 2H\tan\alpha\\ \end{align} sutv=tanβtanα=y0=2tanα=2Htanα


f(h)=(sh+uth+v−uv)⋅PY=(sv−tu)h(tv)h+v2⋅PY \begin{align} f(h) &= \left( \frac{sh+u}{th+v}-\frac{u}{v}\right) \cdot PY \\ &= \frac{(sv-tu)h}{(tv)h+v^2} \cdot PY \end{align} f(h)=(th+vsh+uvu)PY=(tv)h+v2(svtu)hPY


PYf(h)=tvsv−tu+v2sv−tu⋅1h \frac{PY}{f(h)}=\frac{tv}{sv-tu}+\frac{v^2}{sv-tu}\cdot \frac{1}{h} f(h)PY=svtutv+svtuv2h1
可以看出,f(h)f(h)f(h)的倒数与hhh的倒数之间存在线性关系。

f(h)f(h)f(h)的实际含义是像素上y1′−y0′y_1'-y_0'y1y0。那么,这里就称之为Δy′\Delta y'Δy。现在我们来推导,如果已知了Δy′\Delta y'Δy,如何来求f(h)f(h)f(h)


a=tvsv−tub=v2sv−tu \begin{align} a &=& \frac{tv}{sv-tu} \\ b &=& \frac{v^2}{sv-tu} \end{align} ab==svtutvsvtuv2

则有

1h=PYbΔy′−ab=sv−tuv2⋅PYΔy′−tv=(sv−tuv2)⋅PYΔy′+1H=(tan⁡β−tan⁡α2Htan⁡α−−y02Htan⁡αH)⋅PYΔy′+1H=(tan⁡β−tan⁡α2Htan⁡α⋅PYΔy′−−y02Htan⁡αH⋅PYΔy′)+1H=(tan⁡β−tan⁡αtan⁡α12H⋅PYΔy′+1H⋅y0′Δy′)+1H=12HΔy′((tan⁡βtan⁡α−1)⋅PY+2y0′)+1H=((tan⁡β−tan⁡α)⋅PYS+y0′H)⋅1Δy′+1H \begin{align} \frac{1}{h} &= \frac{PY}{b\Delta y'}-\frac{a}{b} \\ &= \frac{sv-tu}{v^2}\cdot\frac{PY}{\Delta y'}-\frac{t}{v} \\ &= \left( \frac{s}{v}-\frac{tu}{v^2} \right)\cdot\frac{PY}{\Delta y'}+\frac{1}{H} \\ &= \left( \frac{\tan\beta-\tan\alpha}{2H\tan\alpha}-\frac{-y_0}{2H\tan\alpha H} \right)\cdot\frac{PY}{\Delta y'} + \frac{1}{H}\\ &= \left( \frac{\tan\beta-\tan\alpha}{2H\tan\alpha}\cdot\frac{PY}{\Delta y'}-\frac{-y_0}{2H\tan\alpha H} \cdot\frac{PY}{\Delta y'}\right)+\frac{1}{H}\\ &= \left( \frac{\tan\beta-\tan\alpha}{\tan\alpha}\frac{1}{2H}\cdot\frac{PY}{\Delta y'}+\frac{1}{H}\cdot\frac{y_0'}{\Delta y'}\right) + \frac{1}{H} \\ &= \frac{1}{2H\Delta y'}\left( \left(\frac{\tan\beta}{\tan\alpha}-1\right)\cdot PY+2y_0'\right)+\frac{1}{H} \\ &= \left( \frac{(\tan\beta-\tan\alpha)\cdot PY}{S}+\frac{y_0'}{H} \right)\cdot \frac{1}{\Delta y'}+\frac{1}{H} \end{align} h1=bΔyPYba=v2svtuΔyPYvt=(vsv2tu)ΔyPY+H1=(2Htanαtanβtanα2HtanαHy0)ΔyPY+H1=(2HtanαtanβtanαΔyPY2HtanαHy0ΔyPY)+H1=(tanαtanβtanα2H1ΔyPY+H1Δyy0)+H1=2HΔy1((tanαtanβ1)PY+2y0)+H1=(S(tanβtanα)PY+Hy0)Δy1+H1

其中,SSS为最低平面时,相机能拍摄到的最大长度。

【资源说明】 基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达量物体尺寸源码+详细代码注释.zip 【备注】 1、该资源内项目代码都经过试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值