Connect disjoint edges in binary image

后端 未结 2 872
醉酒成梦
醉酒成梦 2021-01-20 02:53

I performed some operations on an image of a cube and I obtained a binary image of the edges of the cube which are disconnected at some places.The image I obtained is shown

2条回答
  •  -上瘾入骨i
    2021-01-20 03:20

    I used the above code to write the following one.I haven't tested it on many images and it may not be as efficient as the one above but it executes faster comparatively.So I thought I would post it as a solution.

    I = imread('image.jpg');  % your original image
    I=im2bw(I);
    figure,imshow(I)
    I= I(5:end-4,5:end-4);
    im1 = bwmorph(I,'thin',Inf);
    [x,y] = find(bwmorph(im1,'endpoints'));
    for iter = 1:numel(x)-1
    im1=linept(im1, x(iter), y(iter), x(iter+1), y(iter+1));
    end
    im2=imfill(im1,'holes');
    figure,imshow(im2);
    BW = edge(im2);
    figure,imshow(BW);
    se = strel('diamond', 1);
    im3 = imdilate(BW,se);
    figure,imshow(im3);
    

    The final result is this: cube

    I got the "linept" function from here:http://in.mathworks.com/matlabcentral/fileexchange/4177-connect-two-pixels

提交回复
热议问题