Detect and remove T/Y joints in a binary image

I have a binary image and I want to detect and remove all pixels with >2 pixels connected to them (e.g. Y and T joints). The image is produced by thinning of the image and all lines have a thickness of 1 pixel. Below is a sample image. My first guess was to check connectivity for all pixels but since I have hundreds of these objects in each image, this approach would be too expensive. Thanks,

2 Kommentare

Should the result be to break the Y/T into three line segments?
Ramin Dastanpour
Ramin Dastanpour am 1 Okt. 2015
Bearbeitet: Ramin Dastanpour am 1 Okt. 2015
Yes, exactly. But I need to get the index of the pixel on the joint as well. After breaking the joint I want to reconnect the disconnected objects which are in one direction (more).

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 1 Okt. 2015

0 Stimmen

NewImage = BWimage;
NewImage( (conv2(0+BWImage,[1 1 1;1 0 1;1 1 1],'same') .* BWimage) > 2 ) = 0;

1 Kommentar

With index:
NewImage = BWImage;
idxmask = (conv2(0+BWImage,[1 1 1;1 0 1;1 1 1],'same') .* BWimage) > 2;
NewImage(idxmask) = 0;
idx = find(idxmask);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by