How to shear an imagesc image

Hi,
I have an image, created using imagesc function from a data matrix, like so:
imagesc (myarray, [-50 0]);
which I am then trying to shear by an angle a using the following code:
a = tand(10);
T = maketform('affine', [1 0 0; a 1 0; 0 0 1] );
B = imtransform(A,T,'cubic','FillValues',orange);
orange = [255 127 0]';
figure
imshow(B)
But I keep on failing, as I guess I'm not defining A (my original image created using imagesc) correctly.
Could anyone please explain how to define it correctly so it works as an input for the imtransform function?
Thank you.

2 Comments

What error you are getting? You must specify you error along with full code.
Well, if I define A as A= imagesc (myarray, [-50 0]); and the try to to run B, i get:
Error using imtransform>check_A (line 479)
A must be a nonsparse numeric array.
Error in imtransform>parse_inputs (line 373)
args.A = check_A(varargin{1});
Error in imtransform (line 266)
args = parse_inputs(varargin{:});
So I know the problem probably lies in how I define the A

Sign in to comment.

Answers (1)

Hey Linda,
Using functions 'imtransform' and 'maketform' is not recommended because of compatibilty considerations. You can use 'imwarp' and 'affine2d' instead. Here's a code snippet addressing the changes
a = tand(10);
T = affine2d( [1 0 0; a 1 0; 0 0 1] );
B = imwarp(img,T,'cubic','FillValues',0);
Could you share more information regarding your usecase and why you need 'imagesc' function? Also the complete code, wherein you're defining 'A'.

Asked:

on 21 Oct 2021

Answered:

on 26 Oct 2021

Community Treasure Hunt

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

Start Hunting!