Matlab最小二乘近似与两个自变量的约束(x,y坐标)

时间:2013-10-16 15:32:26

标签: matlab image-processing linear-regression

我有一些室外路径的二进制图像,我需要获得精细的道路轮廓,但是,由于仍然存在嘈杂的像素,我无法追踪准确的道路轮廓。我计算了houghlinesMatlab函数的起点和终点之间的中点,并且能够分离道路的左右点。因此,我的想法是拟合左和右点的线性近似,这样我就能够去除两侧的噪声像素并干净地分离出道路区域。

Examples of good and bad line fits of left and right sides of two roads

问题:正如您在图片中看到的那样,拟合的直线不是沿着散射(x,y)点(红色)的最长轴,因此不合适。道路的某些侧面非常合适。 polyfitnpolyfit函数的输出近似值沿着较短的散射区域开始。我找到了几个带约束(开始和结束)的最小二乘逼近的代码示例,但只找到了1D自变量类型问题的例子。

这是我用来产生输出的Matlab代码。

imshow(binarizedimage320x240);        % Binary 320x240 image
rightPoints     % show rightPoint (x,y) coordinates from Hough Transform lines 

sizeRt = size(rightPoints, 1);
x = zeros(sizeRt, 1);
y = zeros(sizeRt, 1);

for k = 1:sizeRt
    x(k) = rightPoints(k,1);
    y(k) = rightPoints(k,2);
end
x               % show x values
y               % show y values


% Linear fitting
p = polyfitn(x,y,'constant x+y')    % show p
xi = 1:2:300;
yi = polyvaln(p, xi);

plot(x, y, 'ro', xi, yi, 'b-', 'LineWidth', 3);

变量:

rightPoints =
  205.0000  108.0000
  205.0000  162.5000
  205.0000  276.0000
  229.0000  123.5000
  229.0000  254.5000
  204.0000   87.5000
  215.0000  265.0000
  216.0000  121.0000
  216.0000  255.0000
x =
   205
   215
   216
   229
   205
   229
   216
   205
   204
y =
  276.0000
  265.0000
  255.0000
  254.5000
  162.5000
  123.5000
  121.0000
  108.0000
   87.5000
p = 
      ModelTerms: [2x1 double]
    Coefficients: [-152.6022 1.5730]
    ParameterVar: [3.7729e+05 8.2396]
    ParameterStd: [614.2421 2.8705]
              R2: 0.0411
      AdjustedR2: -0.0958
            RMSE: 71.6719
        VarNames: {'x+y'}

任何帮助都将受到高度赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

您似乎可能会发现Isack和Boykov的PEaRL适用于您的问题 本文提出的算法制定了一种能量最小化方法,用于在嘈杂的场景中同时拟合几个几何模型(理论上优于Hough或Ransac)。 我也相信他们有可用的代码here