Ich benutze OpenCV-Funktion cvFitLine und es gibt mir Ergebnisse, die ich sehr zweifelhaft finde. Grundsätzlich kann man sehen, dass ich Koordinaten von Punkten ziemlich genau entlang einer Linie mit 2 Ausreißern eingabe. Ich verwende den Huber-Abstand, um die Ausreißer zu ignorieren. Die resultierende angepasste Linie ist jedoch eine diagonale Linie, die die Ausreißer sehr zu berücksichtigen scheint. Mache ich etwas falsch? bekommt jemand ähnliche Ergebnisse?opencv cvfitline gibt zweifelhafte Ergebnisse
(bearbeiten) Das Ergebnis sollte offensichtlich eine gerade Linie analog zu {vx, vy, x0y0} = {0,1,531,0} sein, aber openCV gibt mir {0,85, -0,53, 453,144}, die nicht entfernt vertikal ist.
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);
Sollte die Linie immer noch in der Nähe von 530-531 liegen, anstatt, was ich bekomme, die auf den 2 Ausreißern [11] und [12] viel schwerer zu wiegen scheint? – Denis