c++ - 在 C++ 中优化两个向量之间的距离
问题描述
我有两个带坐标的向量,存储为 OpenCV 的浮点数:
a)dstpoints是一个带有 OpenCV 点的向量 - std::vector<cv::Point2f>
(在我的示例中我有 162 个点,它们没有改变),
b)ppts也std::vector<cv::Point2f>
和 dstpoints 的大小相同:
std::vector<cv::Point2f> ppts = project_keypoints(params, input);
但是ppts依赖于另外两个向量:
-输入是 2*162=324 长并且没有改变,
-参数是 189 长,应该改变它的值以获得变量suma的最小值,如下所示:
double suma = 0.0;
for (int i=0; i<dstpoints_size; i++)
{
suma += pow(dstpoints[i].x - ppts[i].x, 2);
suma += pow(dstpoints[i].y - ppts[i].y, 2);
}
我正在寻找参数向量,它将给我最小的suma变量值。最小二乘算法似乎是解决它的好选择:
https
://en.wikipedia.org/wiki/Least_squares 我尝试了 dlib 版本:
http
://dlib.net/dlib/optimization/optimization_least_squares_abstract.h.html#solve_least_squares
但恐怕这对我的情况不利。
我认为,我在 dlib 版本中的问题是,对于每个不同的参数向量,我得到不同的ppts向量,不仅是单个值,而且我不知道dlib 中的solve_least_squares函数是否可以匹配我的示例。
我正在寻找可以帮助解决问题的 C++ 解决方案(可能带有优化器)。
解决方案
推荐阅读
- javascript - 'node modules' 不是内部或外部命令、可运行程序或批处理文件
- terraform - dashboard_body 内的模板文件
- webpack - webpack sideEffects list 在服务器上不起作用,但在我的本地机器上没问题
- reactjs - 如何将 React 应用部署到个人页面的 Github 页面
- python - 无法解压不可迭代的 CustomerPurchaseOrderDetail 对象
- wso2 - 如何启动仪表板微积分器 wso2 ei 7.0
- javascript - 将数据从 Java 解析为 javascript
- angular - 无法在 Angular Material 对话框/模式中渲染另一个组件
- ktor - 带有 ktor 的静态目录 - 不在“mysite.com/static/...”下
- java - @requestpart 的示例和描述