首篇CSDN博客
转战CSDN的首篇博客,主要原因是有道云笔记在ubuntu系统下,太难受了!
ceres介绍
一、用途:
曲线拟合、计算机视觉中的三维模型构建,优化转换参数。
二、构成模块:
文件数据读取与存储
构建残差方程计算模型
main{
构建problem问题;
构建solver计算拟合参数;
}
示例代码
以官网示例代码simple_bundle_adjuster为例;
测试数据:problem-16-22106-pre.txt;
代码实现目的:
相机传感器在16个位置对空间中的22106个路标点成像,由于存在重复观测,共观测到路标点83718个像素坐标。
数据记录下83718个像素坐标所对应的相机位姿序号、路标点序号。
一、文件数据读取与存储
读取文件第一行数据:
int num_cameras_=16;
int num_points_=22106;
int num_observations_=83718;
读取文件数据并开辟存储空间:
开辟的三块空间的起始地址:point_index_、camera_index_、observations_
开辟需要优化的量的存储空间:parameters_
空间大小为9x16+3x22106,即位参数个数num_parameters_
template <typename T>
void FscanfOrDie(FILE* fptr, const char* format, T* value) {
int num_scanned = fscanf(fptr, format, value);
if (num_scanned != 1) {
LOG(FATAL) << "Invalid UW data file.";
}
}
bool LoadFile(const char* filename) {
FILE* fptr = fopen(filename, "r");
if (fptr == NULL) {
return false;
};
FscanfOrDie(fptr, "