MATLAB Answers

How to flip my image

633 views (last 30 days)
I have an image that I must flip using a nested for loop to flip the image vertically and horizontally, I have written a code that I think works but there is something wrong with it that it isn't. What have I done wrong?
%make 2d arrays values
imageData=imread('image.png');
[row, column] =size(imageData)
newImage=[]
%Use nested loops to change image mirrored
for i=[row:-1:1];
for j=[column:-1:1];
transposedMatrix(column, row) = imageData(i,j);
transposedMatrix
end
end
imshow(transposedMatrix)
  5 Comments
Adam
Adam on 21 Aug 2019
Well, a flip instruction would be more like exchanging position i with row - i and j with column - j

Sign in to comment.

Accepted Answer

Joel Handy
Joel Handy on 21 Aug 2019
Edited: Joel Handy on 21 Aug 2019
The are a few problems with your code. First, if you want the image, you dont want to transpose. That will flip and rotate, As adam has pointed out, column and row, you arent actuall transposing anyway. A better and correct way to transpose is to use permute.
imageData=imread('image.png');
newImage = permute(imageData, [2 1 3]);
imshow(newImage);
To actually flip, you should be able to use the flip function
imageData=imread('image.png');
newImage = flip(imageData,1);
newImage = flip(newImage,2);
imshow(newImage);
  3 Comments
Jesse Schultz
Jesse Schultz on 21 Aug 2019
Thats exactly what I was doing wrong, thankyou!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!