How to "size-normalize" objects in a binary image? (e.g. make sizes of all non-zero objects to be the same)

2 views (last 30 days)
Dear Community,
I have a binary image (attached in .jpg and .fig) with circles, pixel values inside circles =1 and outside =0. These circles look very similar, although they differ in size a little bit. For instance, the difference between two random circles in diameter can be about approx. 10 pixels. Is there a way to make all these circles to become of EXACTLY the same size? Size itself is not important btw, it can range from biggest possible (before circles start to overlap) to 1 pixel. Also a more general answer on how to make objects (not only circles) in a binary image equally sized will satisfy my needs.
I will appreciate any sugestions.
Thank you,
Vasilii
  5 Comments
Vasya Mika
Vasya Mika on 22 Apr 2020
If I'd ask something like: "How can I count all stars in universe in MATLAB?" and get an answer "You cannot", would it be worth staying?..
Regarding your approach: is there a way to centroid every object without cropping these objects from the image first?

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 4 Apr 2020
Not if x and y can be anything (floating point) since you will have quantization error.
If you want to specify that the center or upper left corner is exactly on an integer coordinate, you can.
Just see the FAQ.
  3 Comments
Image Analyst
Image Analyst on 22 Apr 2020
If you want, you can use regionprops() to identfy the centroids of the existing circles. Then round them to the nearest integer. Next create a new, blank image and paste onto it a small template of the desired circle shape. I'm attaching a copy and paste demo.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!