web-dev-qa-db-ja.com

MATLABでカラーイメージを反転および回転する

MATLABでカラーイメージ(RGB)を反転するにはどうすればよいですか? fliplrは、2Dのみを扱うため、色の内容を失うことなく機能するようには見えません。

同様に、imrotateはカラー画像を回転させない場合があります。

21
Ursa Major

関数 flipdim はND行列に対して機能しますが、関数 flipud および fliplr = 2次元行列でのみ機能します:

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 の代わりに。

23
gnovice

例:

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

20
Amro

imrotateはカラーイメージを回転しますB = IMROTATE(A、ANGLE)は、イメージAをその中心点を中心に反時計回りにANG度回転させます。

2
Chethan

私はそれが遅れていることを知っていますが、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はカラー画像とグレースケールを扱います。

0
Staszek