Matrix Operations Horizontal and Vertical Shifts

33 views (last 30 days)
I need to shift photo1.jpg 240 pixels horizontally and 100 pixels vertically using the spy () function. How can I do this if the matrix isn't square? So far I have this code
% Read the image
img1 = imread('photo1.jpg');
% Convert it to double
img1Double = im2double(img1);
% Convert from RGB to grayscale
img1Gray = rgb2gray(img1);
figure
imshowpair(img1, img1Gray, 'montage')
img2 = imread('photo2.jpg');
% Convert it to double
img2Double = im2double(img2);
% Convert from RGB to grayscale
img2Gray = rgb2gray(img2);
figure
imshowpair(img2, img2Gray, 'montage')
  2 Comments
Setsuna Yuuki.
Setsuna Yuuki. on 15 Nov 2020
Did you try using "imresize" to make a square image?
im = imread('image.jpg');
im = imresize(im,[drow dcolumn])
Viridiana Varela
Viridiana Varela on 15 Nov 2020
Yes and I think it worked, but how do I display the image using the spy function?

Sign in to comment.

Answers (1)

Matt J
Matt J on 15 Nov 2020
Edited: Matt J on 15 Nov 2020
The spy() function does not care if its input is square, but it doesn't have any relevance to shifting images. I don't know why you think it belongs here. However, shifting an image is readily accomplished using imtranslate(),
% Read the image
img1 = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/414283/photo1.jpg');
% Convert it to double
imshowpair(img1, imtranslate(img1,[240,100]), 'montage')

Categories

Find more on Convert Image Type 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!