私はイメージ処理でプロジェクトをやっています。 プロジェクトでRANSACを使用しています。私が直面している課題は、アルゴリズムが必要に応じて最適なフィットを実行しないことですが、 任意の2つのランダムな点を使用し、下の画像に示すようにそれらを結合する線を描画します。RANSACを使ったラインフィッティング
RANSACがVectoriseの手描き画像に私のアルゴリズムで
結果、私はまた、形態学的演算子を使用してグレイスケール、画像のしきい値(画像二値化)、 とスケルトンをしました。
私は自分のプロジェクトにMATLABを使用しています。
次は私があなたの問題は、あなたが、距離および/または現在1000それはすべての選択かもしれないですしきい値を数えている方法であるかもしれないと考え、これまで
% Line fitting using RANSAC
[x, y] =size(skeleton_image);
point =[];
count =1;
% figure; imshow(~data); hold on
for n =1:x
for m =1:y
if skeleton_image(n,m)==1
point(count,1)=m;
point(count,2)=n;
count= count+1;
end
end
end
data = point';
number = size(data,2); % Total number of points
X = 1:number;
iter=100; num=2; thresh = 1000;count_inlines=103; best_count=0; best_line=[];
for i=1:iter
% Randomly select 2 points
ind = randi(number,num); % randperm(number,num);
rnd_points= data(:,ind);
% Fitting line
Gradient = (rnd_points(2,2)-rnd_points(2,1))/(rnd_points(1,2)-rnd_points(1,1));
Constant = rnd_points(2,1)-Gradient*rnd_points(1,1);
Line = Gradient*X+Constant; [j,k]=size(Line);
% How many pixels are in the line?
for i=1:number
Distance = sqrt((Line(:,i)-data(1,i)).^2)+(Line(:,i)-data(2,i)).^2);
if Distance<=thresh
inlines = data(:,i);
count_inlines=countinlines+1;
best_line=Line;
end
あなたのコードは本当に問題を特定するのに役立ちます。現在のところ、問題は少し広いです。 –
私はコードの画像をOCRに投げた(編集中のレビューを編集中)。あなたは '終わり 'を欠いている – Steve