Using imrotate creates empty array

1 view (last 30 days)
Jamie Bossenbroek
Jamie Bossenbroek on 20 Feb 2019
Commented: Walter Roberson on 20 Feb 2019
I am attempting to use imrotate to rotate an array by a given amount of degrees, but the output is all zeros.
I = rgb2ycbcr(RGB);
I = imrotate(I, angle, 'crop');
Where RGB is nx3 uint8 RGB variable from an .avi file from Vevo Software.
  4 Comments
Walter Roberson
Walter Roberson on 20 Feb 2019
Is it possible that your original RGB is 1 x 468 x 3 ??

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 20 Feb 2019
This seems to be an issue with imrotate when passed an array in which either the first or second dimension is 1, and the angle is not an exact multiple of 90. Even an angle of eps gives a 0 result.
WIth your array being only a single row high, and with you asking to 'crop', it is not obvious what output you are hoping for?
The workaround is to invoke
iptprefs
and to turn off "Enable hardware optimization (recommended)" near the bottom, and then Apply and OK. Then
clear images.internal.useIPPLibrary
After that, rotation will not unnecessarily produce an all-zero output.
  1 Comment
Walter Roberson
Walter Roberson on 20 Feb 2019
I just filed a bug report on this.
It would not surprise me if the resolution would just be better documentation of the boundary condition failures and a pointer to turning off hardware processing. But perhaps they will be willing to check the output size and fall back to the software rotation for this case.

Sign in to comment.

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!