DSM的代码结构比较好,在可视化部分体现得比较明显
涉及到qt的部分,都写在QtVisualizer中。
使用一个虚类,传到算法模块中,在算法模块中调用:
IVisualizer* outputWrapper; this->outputWrapper->publishKeyframe(kf, KeyframeType::TEMPORAL);
在显示点云的时候,使用方差和视差角进行了过滤。
方差部分:
const float varThreshold = 10.f;
const float parThreshold = 0.f;
const int varValue = int((varThreshold + 10.f) * (100.f / 20.f) + 0.5f);
const int parValue = int(parThreshold * (100.f / 90.f) + 0.5f);
ui.varSlider->setValue(varValue);
ui.parSlider->setValue(parValue);
显示的时候,为了方便显示,把这个值归一到0-100。而实际则是如下:
pow(10.f, varThreshold), 大概意思是varThreshold = 10的时候,这个阈值是最大值,然后根据具体情况调小。