在MATLAB中翻转和旋转彩色图像

22

我该如何在MATLAB中翻转彩色图像(RGB)?fliplr 似乎不能保留颜色内容,因为它只处理二维图像。

此外,imrotate 可能无法旋转彩色图像。


1
我使用imrotate(R2013a)旋转彩色图像没有任何问题。 - Cape Code
fliplr(img) 相当于 flip(img, 2)。它不仅适用于二维数组。对于多维数组,fliplr 操作的是由第一和第二维形成的平面。 - Temak
4个回答

24

函数flipdim适用于N维矩阵,而函数flipudfliplr仅适用于2D矩阵:

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


请使用flip()替换flipdim(),因为由于各种原因,前者不被推荐使用。 - Léo Léopold Hertz 준영

22
一个例子:
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


我也更喜欢这种方式。 - Jonas
是的 :) 此外,其他人已经展示了如何使用 flipdim 及其新替代品 flip - Amro
@Amro,这里有一个新的线程,讨论如何在集成方法中翻转imagescaxes。http://stackoverflow.com/q/39923300/54964 - - 我不确定你的方法是否能够保持axes - Léo Léopold Hertz 준영

2

imrotate函数旋转彩色图像。 B = IMROTATE(A,ANGLE)将图像A逆时针旋转ANGLE度,围绕其中心点。


0

我知道现在已经很晚了,但是由于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 处理彩色图像以及灰度图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接