“MicroMV 距离解算”的版本间的差异
(创建页面,内容为“=='''基本原理'''== *本算法依靠近大远小的透视原理,使用物体在画面中的像素宽度结合三角函数计算出物体到摄像头距离。(…”) |
502748957@qq.com(讨论 | 贡献) |
||
(未显示2个用户的8个中间版本) | |||
第1行: | 第1行: | ||
=='''基本原理'''== | =='''基本原理'''== | ||
*本算法依靠近大远小的透视原理,使用物体在画面中的像素宽度结合三角函数计算出物体到摄像头距离。(镜头畸变会影响计算精度) | *本算法依靠近大远小的透视原理,使用物体在画面中的像素宽度结合三角函数计算出物体到摄像头距离。(镜头畸变会影响计算精度) | ||
− | [[File:microMVdistanceCaculate1.png|| | + | [[File:microMVdistanceCaculate1.png||300px|center]] |
=='''关键参数'''== | =='''关键参数'''== | ||
第13行: | 第13行: | ||
:摄像头分辨率宽度F | :摄像头分辨率宽度F | ||
− | [[File:microMVdistanceCaculate2.png|| | + | [[File:microMVdistanceCaculate2.png||300px|center]] |
+ | =='''基础距离算法'''== | ||
+ | 已知ACEF,首先求出物体占视野角度B | ||
+ | 根据:𝐵/𝐴 = 𝐸/𝐹 得到:B=(𝐴∗𝐸)/𝐹 | ||
+ | 然后求出距离D | ||
+ | |||
+ | 根据:tan〖𝐵/2〗 = (𝐶/2)/𝐷 得到:D = 𝐶/(2 tan〖(𝐴∗𝐸)/2𝐹〗 ) | ||
+ | |||
+ | [[File:microMVdistanceCaculate3.png||100px|center]] | ||
+ | |||
+ | =='''综合校准算法'''== | ||
+ | 已知物体在摄像头画面中只会变小(被部分遮挡)不会变大,所以在计算阶段分别根据物体的宽度和高度计算出两个距离值。当物体像素宽高比与真实宽高比近似时,两个距离值同样可靠;当物体像素宽高比明显大于真实宽高比时,宽度计算得出的距离值更加可靠;当物体像素宽高比明显小于真实宽高比时,高度计算得出的距离值更加可靠 | ||
+ | |||
+ | [[File:microMVdistanceCaculate4.png||600px|center]] | ||
<source lang="py"> | <source lang="py"> | ||
</source> | </source> | ||
− | [[ | + | [[MicroMV 简介|返回MicroMV目录页面]] |
2018年12月7日 (五) 03:41的最新版本
基本原理
- 本算法依靠近大远小的透视原理,使用物体在画面中的像素宽度结合三角函数计算出物体到摄像头距离。(镜头畸变会影响计算精度)
关键参数
(其中A、C、F是已知常量)
- 摄像头视野范围A度
- 物体占视野B度
- 物体真实宽度C毫米
- 物体距离摄像头D毫米
- 物体占画面像素宽度E
- 摄像头分辨率宽度F
基础距离算法
已知ACEF,首先求出物体占视野角度B
根据:𝐵/𝐴 = 𝐸/𝐹 得到:B=(𝐴∗𝐸)/𝐹
然后求出距离D
根据:tan〖𝐵/2〗 = (𝐶/2)/𝐷 得到:D = 𝐶/(2 tan〖(𝐴∗𝐸)/2𝐹〗 )
综合校准算法
已知物体在摄像头画面中只会变小(被部分遮挡)不会变大,所以在计算阶段分别根据物体的宽度和高度计算出两个距离值。当物体像素宽高比与真实宽高比近似时,两个距离值同样可靠;当物体像素宽高比明显大于真实宽高比时,宽度计算得出的距离值更加可靠;当物体像素宽高比明显小于真实宽高比时,高度计算得出的距离值更加可靠