How to detect edges in binary image?

I have obtained the image below after applying thresholding. The white areas inside the boundaries represent the defective part. I only want these defective parts on the image, like the ones inside the blue boxes. The approach in my mind is to use any edge detection algorithm and then subtract that image from the original one so that only defective parts remain on the image. I have used many edge detection algorithms, but I failed to obtain the desired result. How to extract boundaries or edges from the given image. Or is there any better way to solve this problem?

 Accepted Answer

Surely that is not your original image? The image you posted looks like an edge detection image. To get big clusters of white pixels, I'd first try an opening with imopen() to get rid of the thin grid lines. Then I'd try imclose() to try to merge the concentrated areas into more of solid blobs. Then I'd use bwareafilt() to try to extract only blobs of a known size.

2 Comments

Thanks! This is really helpful.
You're welcome. Thanks for accepting the answer. You're not, by chance, doing damage assessment (like after an earthquake) are you? If so, check out papers on that:
For example, papers there show how to identify damaged buildings from aerial/satellit photos.

Sign in to comment.

More Answers (0)

Products

Release

R2019a

Community Treasure Hunt

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

Start Hunting!