屋外の小道のバイナリ イメージが 2 枚あり、道路の細かい輪郭を取得する必要がありますが、ノイズの多いピクセルがまだ残っているため、道路の正確な輪郭を追跡できません。houghlines
の関数から始点と終点の間の中点を計算しMatlab
、道路の左点と右点を分離することができました。したがって、私の考えは、左右の点の線形近似を当てはめて、両側のノイズの多いピクセルを削除し、道路領域をきれいに分離できるようにすることでした。
問題:写真でわかるように、適合する直線は、散らばった (x,y) ポイント (赤) の最長軸に沿っていないため、適合していません。道路のいくつかの側面は非常にぴったりでした。polyfitnまたは関数の出力近似はpolyfit
、短い散乱領域に沿って開始されます。制約 (開始と終了) を使用した最小二乗近似のコード例をいくつか見つけましたが、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'}
どんな助けでも大歓迎です。ありがとう。