This repository was archived by the owner on Jul 10, 2025. It is now read-only.
Added rotate_method in Affine #1394
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR try to add rotate_method="ellipse" in the Affine transform.
close #1316
related issues #1388, #1373
Abount the implementation
As for the affine transform, we need to consider not only the rotation but also the effect of other parameters, such as the shear that also introduces additional space between the object and the bounding boxes.
Ex.
Fortunately, a generalization looks to be straightforward.
The ellipse rotation assumes the object's shape is an ellipse and applies the rotation to the ellipse instead of the bbox, then reconstructs the rotated bbox from the rotated ellipse.
I think the same idea can be applied to the generic affine transform:
I have not analyzed as the original author of the ellipse rotation did, but I expect this generalized version to work.
See the example below.
Example
Black bbox is a result of a generalized ellipse rotation. It looks much better than the gray box (largest_box).