Флип и поворот цветного изображения в MATLAB
Как перевернуть цветное изображение (RGB) в MATLAB?
fliplr
, похоже, не работает без потери содержимого цвета, поскольку он касается только 2D.
Кроме того, imrotate
может не поворачивать цветные изображения.
Ответы
Ответ 1
Функция flipdim
будет работать для ND-матриц, тогда как функции flipud
и fliplr
работают только для двухмерных матриц:
img = imread('peppers.png'); %# Load a sample image
imgMirror = flipdim(img,2); %# Flips the columns, making a mirror image
imgUpsideDown = flipdim(img,1); %# Flips the rows, making an upside-down image
ПРИМЕЧАНИЕ.. В более поздних версиях MATLAB (R2013b и новее) функция flip
теперь рекомендуется вместо flipdim
.
Ответ 2
Пример:
I = imread('onion.png');
I2 = I(:,end:-1:1,:); %# horizontal flip
I3 = I(end:-1:1,:,:); %# vertical flip
I4 = I(end:-1:1,end:-1:1,:); %# horizontal+vertical flip
subplot(2,2,1), imshow(I)
subplot(2,2,2), imshow(I2)
subplot(2,2,3), imshow(I3)
subplot(2,2,4), imshow(I4)
![alt text]()
Ответ 3
imrotate
вращает цветные изображения
B = IMROTATE (A, ANGLE) вращает изображение A на градусы ANGLE в против часовой стрелки вокруг его центральной точки.
Ответ 4
Я знаю, что поздно, но поскольку flipdim теперь обесценивается, другие ответы больше не действительны. Вы можете использовать flip или сделать это другим, умным способом:
I = imread('onion.png');
% flip left-right, or up-down:
Iflipud = flip(I, 1)
Ifliplr = flip(I, 2)
% or:
Iflipud = I(size(I,1):-1:1,:,:);
Ifliplr = I(:,size(I,1):-1:1,:);
% flip both left-right, and up-down, stupid way:
Iflipboth = I(size(I,1):-1:1,size(I,1):-1:1,:);
% flip both left-right, and up-down, smart way:):
Iflipboth = imrotate(I, 180)
Как уже указывалось, imrotate имеет дело с цветными изображениями, а также с оттенками серого.