Using imrotate creates empty array

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

Could you confirm that RBG is 2 dimensional, not 3 dimensional ? If it is 2 dimensional, is it intended to be grayscale, or are you reading in a pseudocolor image and failing to apply the colormap to it?
Note: be careful, as color arrays are usually RGB rather than RBG.
RGB is a three dimensional color image:
Screen Shot 2019-02-20 at 4.14.00 PM.png
Is it possible that your original RGB is 1 x 468 x 3 ??

Sign in to comment.

Answers (1)

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

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 Interactions, Camera Views, and Lighting in Help Center and File Exchange

Asked:

on 20 Feb 2019

Commented:

on 20 Feb 2019

Community Treasure Hunt

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

Start Hunting!