私は基本的に手描きの回路図の画像からコンポーネントと接続を抽出するmatlab画像処理プロジェクトに取り組んでいます。どのように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
これは実行時私が得た入力と出力される。
を私はすべての線分を検出する必要があり、ほぼ水平であることまたは垂直で、長さが最小であり、手描きの性質によるいくつかの不規則性を伴う。
出力画像に検出された行がほとんどなく、一部の行が部分的に検出されています。コンポーネントを接続するために使用されるすべてのワイヤを実際に検出する必要があります
この要件を満たすには、どのようにハフ変換関数をチューニングすることができますか?