Я нашел пару областей, относящихся к заполнению пробелов в бинарных изображениях в Matlab, однако я все еще борется. Я написал следующий код, но я не могу заставить его работать. Вот мое двоичное изображение:Заполнение пробелов в двоичном изображении
.
Однако то, что я пытаюсь достичь следующих
.
Кто-нибудь знает, как это сделать? Я пытался использовать imfill
, но я знаю, что мне нужно определить границы также с помощью функции bwlabel
, но я не знаю, как это сделать. Любая помощь будет принята с благодарностью.
%%Blade_Image_Processing
clc;
clear;
%%Video file information
obj = VideoReader('T9_720p;60p_60mm_f4.MOV');
% Sampling rate - Frames per second
fps = get(obj, 'FrameRate');
dt = 1/fps;
% ----- find image info -----
file_info = get(obj);
image_width = file_info.Width;
image_height = file_info.Height;
% Desired image size
x_range = 1:image_height;
y_range = 1:image_width;
szx = length(x_range);
szy = length(y_range);
%%Get grayscale image
grayscaleimg1 = rgb2gray(read(obj,36));
grayscaleimg = imadjust(grayscaleimg1);
diff_im = medfilt2(grayscaleimg, [3 3]);
t1=60;
t2=170;
range=(diff_im > t1 & diff_im <= t2);
diff_im (range)=255;
diff_im (~range)=0;
% Remove all those pixels less than 300px
diff_im = bwareaopen(diff_im,2000);
%imshow(diff_im)
%imhist(grayscaleimg)
%Fill gaps in binary image
BW2 = imfill(diff_im,'holes');