经过一些测试,大致了解了linemod的参数与cpu的测试情况
Image | Version | angle_step | angle_range | feature | T | low | high | image channel | NEIGHBOR_THRESHOLD | match_score | construct_time | match_time |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1744*1344 | Debug | 1 | 0-360 | 128 | 4,8 | 5 | 10 | 3 | 3 | 98 | 1 | 0.2 |
1744*1344 | Debug | 1 | 0-360 | 128 | 4,8 | 30 | 60 | 3 | 3 | 98 | 0.98 | 0.1 |
1744*1344 | Debug | 1 | 0-360 | 128 | 4,8 | 30 | 60 | 1 | 3 | 98 | 0.85 | 0.05 |
1744*1344 | Debug | 1 | 0-360 | 128 | 4,8 | 30 | 60 | 1 | 5 | 98 | 0.85 | 0.05 |
1744*1344 | Debug | 1 | 0-360 | 128 | 2,4 | 30 | 60 | 1 | 5 | 98 | 0.66 | 0.18 |
1744*1344 | Release | 1 | 0-360 | 128 | 4,8 | 30 | 60 | 1 | 5 | 97 | 0.15 | 0.004 |
1744*1344 | Release | 0.5 | 0-360 | 128 | 4,8 | 30 | 60 | 1 | 5 | 97 | 0.15 | 0.007 |
总结:测试电脑使用i7处理器,8G内存
1、使用低阈值【5,10】,会使得梯度金字塔计算特征时增加候选点,所以构建方向图像时间会相应增加。
2、使用单通道图像计算,对比处理3通道彩色图像会降低计算梯度金字塔的时间,其实一般计算绿色通道就可以了,我是这么认为不一定对。
3、NEIGHBOR_THRESHOLD设置为5和3对最终的时间没有影响,其实应该3会增加一些时间才对,但测试结果没有大的影响。
4、梯度金字塔扩散范围变小【4,8】->【2,4】,可以有效的降低构建方向图像的时间,具体是降低扩散部分的时间,后面有详细的构建方向图像时间信息。
5、实在没招了,把Debug改成Release,哇时间飞起。
6、缩减角度采样间隔,计算时间自然会增加,但是可以忽略。
下面给出2层金字塔构建方向图像的具体时间。
T | first pyramid | spread time | ResponseMaps time | linearize time | second pyramid | spread time | ResponseMaps time | linearize time | SUM |
---|---|---|---|---|---|---|---|---|---|
4,8 | 0.104851 | 0.149564 | 0.29467 | 0.0777669 | 0.0241452 | 0.149243 | 0.0726022 | 0.018401 | 0.891905 |
2,4 | 0.10535 | 0.0373981 | 0.294543 | 0.0777134 | 0.0238947 | 0.0375326 | 0.0726691 | 0.0179583 | 0.66777 |
可以得到上面的结论4,可以通过多线程实现构建方向图像分批处理,降低运算时间。