MATLAB Answers


How to remove weak edges in a binary photo?

Asked by Naim
on 11 Jul 2017
Latest activity Commented on by Naim
on 11 Jul 2017
See attached photos for reference.
I tried watershedding, it breaks apart the main body and doesn't even touch the part I want disconnected!
morphology is no good, the holes in the main body easily break in two before the edges I want disconnected come off.
imfill doesn't solve this, it fills the hole between the two trouble areas as well as the holes in the main body.
I have thousands of similar photos, so I need to come up with something robust.
I'd appreciate any help I could get!


Sign in to comment.

1 Answer

Answer by Image Analyst
on 11 Jul 2017
 Accepted Answer

It's not exactly clear where to separate the blobs. There are many, many thin parts where a separation could possibly be made. You might try filling in black islands in a certain size range and then trying watershed again. So invert the image, call bwareafilt(), then invert again.


your trick helped get rid of all the little holes, which is pretty helpful
it doesnt really help with the watershed situation however. I have a feeling the watershed algorithm is good for separating a bunch of similarly sized objects but not for separating one large object from a few smaller ones. is there a more situation specific watershed-like transform I could use?
There are ways to tweak the watershed. Try these links:
Otherwise you can come up with some ad hoc method, highly customized, but you'll have to create a very specific definition of where the separation should take place. I see generally where you want it but when you actually get down in there at the pixel level, there are lots of "paths" where the break could be made so you have to be specific if you really care where it's made super precisely.
good stuff Image Analyst, I'll check it out.

Sign in to comment.