How to flip my image

191 次查看(过去 30 天)
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 个评论
Jesse Schultz
Jesse Schultz 2019-8-21
编辑:Jesse Schultz 2019-8-21
flipped both vertically and horizontally
Adam
Adam 2019-8-21
Well, a flip instruction would be more like exchanging position i with row - i and j with column - j

请先登录,再进行评论。

采纳的回答

Joel Handy
Joel Handy 2019-8-21
编辑:Joel Handy 2019-8-21
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 个评论
Joel Handy
Joel Handy 2019-8-21
I that case . . .
%make 2d arrays values
imageData=imread('image.png');
[row, column] = size(imageData);
%Use nested loops to change image mirrored
for i=[1:row]
for j=[1:column]
newImage((row-i)+1, (column-j)+1) = imageData(i,j);
end
end
imshow(newImage)
You dont want to transpose rows and colums, you want to flip the the indexes within rows and columns.
Jesse Schultz
Jesse Schultz 2019-8-21
Thats exactly what I was doing wrong, thankyou!

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by