Commit Graph
19 Commits
Author SHA1 Message Date
Pierre Chatelier 93d490213f Merge pull request #23690 from chacha21:rotatedRectangleIntersection_precision
better accuracy for _rotatedRectangleIntersection() (proposal for #23546) #23690

_rotatedRectangleIntersection() can be (statically) customized to use double instead of float for better accuracy
this is a proposal for experimentation around #23546

for better accuracy, _rotatedRectangleIntersection() could use double. It will still return cv::Point2f list for backward compatibility, but the inner computations are controlled by a typedef

- [X] I agree to contribute to the project under Apache 2 License.
- [X] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [X] The PR is proposed to the proper branch
- [X] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2023-05-30 17:46:39 +03:00
Pierre Chatelier ef6f421f89 Merge pull request #21677 from chacha21:rectangle_intersection
* better accuracy of _rotatedRectangleIntersection

instead of just migrating to double-precision (which would work), some computations are scaled by a factor that depends on the length of the smallest vectors.
There is a better accuracy even with floats, so this is certainly better for very sensitive cases

* Update intersection.cpp

use L2SQR norm to tune the numeric scale

* Update intersection.cpp

adapt samePointEps with L2 norm

* Update intersection.cpp

move comment

* Update intersection.cpp

fix wrong numericalScalingFactor usage

* added tests

* fixed warnings returned by buildbot

* modifications suggested by reviewer

renaming numericalScaleFctor to normalizationScale
refactor some computations
more "const"

* modifications as suggested by reviewer
2022-03-16 17:46:11 +03:00
Tiago De GaspariandVadim Pisarevsky 3cf4375387 Merge pull request #19842 from gasparitiago:3.4
Update rotatedRectangleIntersection function to calculate near to origin

* Change type used in points function from RotatedRect

In the function that sets the points of a RotatedRect, the types

should be double in order to keep the precision when dealing with
RotatedRects that are defined far from the origin.

This commit solves the problem in some assertions from
rotatedRectangleIntersection when dealing with rectangles far from
origin.

* added proper type casts

* Update rotatedRectangleIntersection function to calculate near to origin

This commit changes the rotatedRectangleIntersection function in order
to calculate the intersection of two rectangles considering that they
are shifted near the coordinates origin (0, 0).

This commit solves the problem in some assertions from
rotatedRectangleIntersection when dealing with rectangles far from
origin.

* Revert type changes in types.cpp and adequate code to c++98

* Revert unnecessary casts on types.cpp

Co-authored-by: Vadim Pisarevsky <vadim.pisarevsky@gmail.com>
2021-06-12 23:28:54 +03:00
Alexander Alekhin 17faee5d81 imgproc: add rotatedRectangleIntersection empty input handling 2020-12-20 02:06:50 +00:00
Hamdi Sahloul 5d54def264 Add semicolons after CV_INSTRUMENT macros 2018-09-14 06:45:31 +09:00
Alexander Alekhin f89defad5d imgproc: fix rotatedRectangleIntersection() 2018-08-16 15:27:24 +03:00
Dmitry Kurtaev 07dc6d2b45 Return a convex hull from rotatedRectangleIntersection 2018-05-18 14:20:17 +03:00
Pavel Vlasov 30a6cee2fe Instrumentation for OpenCV API regions and IPP functions; 2016-08-19 18:10:03 +03:00
Alexander Alekhin 9300af90cd imgproc/intersection: fix loop index 2014-01-31 14:42:38 +04:00
Ilya Lavrenov 35d9ce0c0c fixed warnings 2013-10-08 12:46:43 +04:00
Nghia Ho cc15898353 Merged with HEAD and removed C interface to rotatedRectangleIntersection 2013-09-04 20:45:10 +10:00
Nghia Ho 79965c9ee9 Replaced isfinite() with cvIsInf and cvIsNan 2013-08-13 21:26:21 +10:00
Nghia Ho 95ee02ba8e Added extra comment to test buildbot 2013-08-08 01:33:21 +10:00
Nghia 18e7aa5d19 Update intersection.cpp
Added #ifdef _WIN32 for finite number testing
2013-08-07 14:57:12 +10:00
Nghia Ho 00f63fa8f7 Finished test code, added image to the doc 2013-07-31 23:08:02 +10:00
Nghia Ho cb16f733b9 Added C interface 2013-07-28 15:31:58 +10:00
Nghia Ho a40f217a38 changed from isnormal to isfinite, the prev ignored zero 2013-07-28 01:06:55 +10:00
Nghia Ho a0576d7b2a Fixed ret 2013-07-28 00:46:44 +10:00
Nghia Ho e2f00ce846 New intersection function for rotated rectangles 2013-07-28 00:12:24 +10:00