私は、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');