Fitting Lines in Two and Three Dimensions

A final topic of interest in this chapter is that of general line fitting. This can arise for many reasons and in a many contexts. We have chosen to discuss it here because one especially frequent context in which line fitting arises is that of analyzing points in three dimensions (although the function described here can also fit lines in two dimensions). Line-fitting algorithms generally use statistically robust techniques [Inui03, Meer91, Rousseeuw87]. The OpenCV line-fitting algorithm cvFitLine() can be used whenever line fitting is needed.

void cvFitLine(
  const CvArr* points,
  int          dist_type,
  double       param,
  double       reps,
  double       aeps,
  float*       line
);

The array points can be an N-by-2 or N-by-3 matrix of floating-point values (accommodating points in two or three dimensions), or it can be a sequence of cvPointXXX structures. [226] The argument dist_type indicates the distance metric that is to be minimized across all of the points (see Table 12-3).

Table 12-3. Metrics used for computing dist_type values

Value of dist_type

Metric

CV_DIST_L2

image with no caption

CV_DIST_L1

image with no caption

CV_DIST_L12

image with no caption

CV_DIST_FAIR

CV_DIST_WELSCH

CV_DIST_HUBER

Get Learning OpenCV now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.