C++ opencv fitLine做什么?
根据答案,C++ opencv fitLine做什么?,c++,opencv,least-squares,C++,Opencv,Least Squares,根据答案,cv::fitLine将distType设置为cv\u DIST\u L2是一种标准的最小二乘法。然而,从这个角度来看,它似乎使用了一个不同的公式: origin = (mean(x), mean(y)); // this is as in standard ls angle = 0.5 * atan2( 2 * cov(x, y), (var(x) - var(y))); 谁能给我解释一下最后一个公式吗 编辑:这实际上是一个总体最小二乘法。阅读更多信息。你试过阅读吗?当然,也有人
cv::fitLine
将distType
设置为cv\u DIST\u L2
是一种标准的最小二乘法。然而,从这个角度来看,它似乎使用了一个不同的公式:
origin = (mean(x), mean(y)); // this is as in standard ls
angle = 0.5 * atan2( 2 * cov(x, y), (var(x) - var(y)));
谁能给我解释一下最后一个公式吗
编辑:这实际上是一个总体最小二乘法。阅读更多信息。你试过阅读吗?当然,也有人说第一种方法使用简单最小二乘法。公式应该是什么样的?也许它是用协方差的一些性质来变换的?atan2用于获得由x和y分量形成的角度。当使用线表示法y=a+b*x时,常用公式(参见这里的示例:mathworld.wolfram.com/LeastSquaresFitting.html)是b=cov(x,y)/var(x),因此在原点方向表示法中它变成了角度=atan2(cov(x,y),var(x))。我看不出这是第一个公式的转换,但如果是这样的话,我很乐意看到一个解释。