How to connect broken lines, but no enlarge line width?

47 ビュー (過去 30 日間)
xie
xie 2025 年 1 月 25 日 7:33
回答済み: Image Analyst 2025 年 1 月 25 日 16:14
I need to fill rectangle(run fill holes), but the broken lines in rectangle stop me to do this. due to the high density rectangles in figure, so I want to connect broken lines, but no enlarge line width. Could you help me?
I have tryed to do dilate/erode/open/close mask operations, but they all can't meet my request.
Before After

採用された回答

埃博拉酱
埃博拉酱 2025 年 1 月 25 日 11:34
function Image=FixBroken(Image,GapSize)
try
Image=imread(Image);
catch ME
if ME.identifier~="MATLAB:imagesci:imread:badImageSourceDatatype"
ME.rethrow;
end
end
Image=imbinarize(rgb2gray(Image));
Image=imclose(Image, strel('line', GapSize, 0)) | imclose(Image, strel('line', GapSize, 90));

その他の回答 (1 件)

Image Analyst
Image Analyst 2025 年 1 月 25 日 16:14
Try this to completely fill the rectangle as you asked (untested - post before image separately if you want me to test it):
after = bwconvhull(before, 'union');

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by