I am working, using OpenCV/C++ framework, on a program that basically count elliptical objects that can overlap.
After threshold the image and finding contours of all the objects
My next step involves excluding object that are not made of overlapping ellipses (I will segment the remaining ones later).
I end-up with objects such as these ones:
In this example image, all the objects in the right are negative whilst the ones in the left are valid.
My current filter excludes object mainly on the ground of their isoperimetric quotient. However, as I have objects featuring different sizes and noise, I am not always satisfied with this approach.
Ideally, I would like to have an additional metric to increase the efficiency of my current filter.
Since I have to repeat this analysis on many contours, it should not be to costly.
I have thought about approaches such as:
But I am convinced that I missed something obvious that is more efficient and less messy. Do you have any suggestions, Thank you :),
EDIT: As Regis rightly suggested, any shape could in fact be made of a sufficient number of circles. Therefore, in order to make my problem solvable, I will add the following assumptions:
One possibility would be to try:
The graph you are expecting to see for curvature is a series of constant values (or slowly varying if the shape is an ellipse instead of a circle), with sudden discontinuities where it changes from one circle to another.
If your image is noisy, you may wish to lowpass filter the curvature values first.
Shapes made out of circles/ellipses will mostly have significant curvature all around the perimeter, while shapes made out of straight edges will have parts of low curvature.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With