私は OpenCV の関数 cvFitLine を使用していますが、非常に疑わしい結果が得られています。基本的に、2 つの外れ値を持つ線に沿って点の座標を入力していることがわかります。外れ値を無視するためにフーバー距離測定を使用しています。ただし、結果の適合線は、外れ値を非常に考慮に入れているように見える対角線です。私は何か間違ったことをしていますか?誰かが同様の結果を得ていますか?
(編集) 結果は明らかに {vx,vy,x0y0} = {0,1,531,0} に似た直線になるはずですが、openCV では {0.85, -0.53, 453,144} が得られますが、これは垂直ではありません。
CvPoint * points=(CvPoint*)malloc( 13 * sizeof(points[0]));
points[0].x = 531;points[0].y = 0;
points[1].x = 531;points[1].y = 20;
points[2].x = 530;points[2].y = 40;
points[3].x = 531;points[3].y = 60;
points[4].x = 530;points[4].y = 80;
points[5].x = 531;points[5].y = 100;
points[6].x = 531;points[6].y = 120;
points[7].x = 531;points[7].y = 140;
points[8].x = 531;points[8].y = 160;
points[9].x = 531;points[9].y = 180;
points[10].x = 531;points[10].y = 200;
points[11].x = 273;points[11].y = 260;
points[12].x = 141;points[12].y = 280;
float testPar[4];// to store the results
CvMat point_mat = cvMat( 1, 13, CV_32SC2, points );
cvFitLine(&point_mat,CV_DIST_HUBER ,0,0.01,0.01,testPar);