web-dev-qa-db-fra.com

retourner et faire pivoter une image couleur dans MATLAB

Comment retourner une image couleur (RGB) dans MATLAB? Le fliplr ne semble pas fonctionner sans perdre le contenu de la couleur, car il ne traite que de la 2D.

De même, il est possible que imrotate ne fasse pas pivoter les images couleur.

21
Ursa Major

La fonction flipdim fonctionnera pour les matrices N-D, tandis que les fonctions flipud et fliplr ne fonctionnent que pour les matrices 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

REMARQUE: Dans les versions plus récentes de MATLAB (version R2013b et plus récente), la fonction flip est désormais recommandée au lieu de flipdim .

22
gnovice

Un exemple:

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 fait pivoter les images couleur B = IMROTATE (A, ANGLE) fait pivoter l’image A de ANGLE degrés en a dans le sens antihoraire autour de son point central.

2
Chethan

Je sais que c'est tard, mais depuis que flipdim est maintenant amorti, les autres réponses ne sont plus valables. Vous pouvez utiliser flip , ou le faire de manière intelligente:

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)

Comme déjà indiqué, imrotate traite à la fois des images couleur et des niveaux de gris.

0
Staszek