Truncation of ellipse major and minor axis lengths
Opened this issue · 0 comments
tobbelobb commented
In an earlier issue, I've said that I solved an issue by adding + 1.0
to these lines:
// semimajor axis
a = sqrt(F3 / A2) + 1.0;
// semiminor axis
b = sqrt(F3 / C2) + 1.0;
Now I've removed the + 1.0
s again, and solved the issue in a better way.
The semi-major and semi-minor axis lengths were truncated, which caused the accuracy issue I had. This is solved by changing the type of the axes
member within the mEllipse
class from cv::Size
to cv::Size2d
.
Here:
https://github.com/CihanTopal/ED_Lib/blob/master/EDCircles.h#L54
Also, the constructor and all calls to it must be adjusted to take doubles.
All other parts of the code use doubles for major/minor axis lengths, so no further changes are required.
This fix improves accuracy of the ellipse detector by half, or maybe a quarter of, a pixel on average.