私は基本的に手描きの回路図の画像からコンポーネントと接続を抽出するmatlab画像処理プロジェクトに取り組んでいます。
スケルトン画像を前処理して取得した後、ハフ変換を使用して線を検出し、コーナーと接続パスを識別できるようにしました。
コードは次のとおりです。
[H,T,R] = hough(im);
peaks = houghpeaks(H,50,'Threshold',ceil(0.3*max(H(:))));
lines = houghlines(im, T,R,peaks, 'Fillgap', 20, 'MinLength', 20);
figure; imshow(im);
title('Lines detected');
hold on;
for l=1:length(lines)
xy = [lines(l).point1; lines(l).point2];
if ((lines(l).theta == 0)||(lines(l).theta >= 355 && lines(l).theta < 5)) || (lines(l).theta < 95 && lines(l).theta > 85) % detect only approx. horizontal and vertical lines
plot(xy(:,1),xy(:,2), 'LineWidth', 2);
end
end
これは、実行時に取得した入力と出力です。
ほぼ水平または垂直で、長さが最小で、手描きの性質による不規則性があるすべての線分を検出する必要があります。
与えられたスクリーンショットでは、出力画像には検出された線がほとんど表示されておらず、一部の線が部分的に検出されています。コンポーネントを接続するために使用されるすべてのワイヤを実際に検出する必要があります
この要件を達成するために、ハフ変換関数を調整したり、他の方法を使用したりするにはどうすればよいですか?