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

时间:2010-10-24 19:53:16

标签: image matlab colors

如何在MATLAB中翻转彩色图像(RGB)? fliplr似乎没有丢失颜色内容,因为它只处理2D。

同样,imrotate可能无法旋转彩色图像。

4 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:20)

一个例子:

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

答案 2 :(得分:2)

imrotate旋转彩色图像 B = IMROTATE(A,ANGLE)在a中以ANGLE度旋转图像A.     逆时针方向绕其中心点。

答案 3 :(得分: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处理彩色图像以及灰度图像。