2010-10-24 26 views
20

Come si capovolge un'immagine a colori (RGB) in MATLAB? Il fliplr non sembra funzionare senza perdere il contenuto del colore, in quanto si occupa solo di 2D.capovolgere e ruotare un'immagine a colori in MATLAB

Allo stesso modo, imrotate non può ruotare le immagini a colori.

+1

Non ho problemi a ruotare le immagini a colori con 'imrotate' (R2013a). –

+0

'fliplr (img)' è equivalente a 'flip (img, 2)'. E si occupa non solo di array 2D. Per gli array multidimensionali, 'fliplr' opera sui piani formati dalla prima e dalla seconda dimensione. – Temak

risposta

21

La funzione flipdim funzionerà per matrici ND, mentre le funzioni flipud e fliplr funzionano solo per le matrici 2-D:

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 

NOTA: Nelle versioni più recenti di MATLAB (R2013b e versioni più recenti), è ora consigliata la funzione flip anziché flipdim.

+0

Per favore, sostituisci 'flipdim()' di 'flip()', poiché il primo non è raccomandato a causa di vari motivi. –

20

Un esempio:

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

+0

Mi piace anche questo modo in questo modo. – Jonas

+0

sì :) Inoltre, altri hanno già mostrato come usare 'flipdim' e la sua nuova sostituzione' flip'. – Amro

+0

@Amro Nuovo thread qui per lanciare 'imagesc' +' axes' in un approccio integrato http://stackoverflow.com/q/39923300/54964 - - Non sono sicuro che il tuo approccio possa mantenere gli "assi". –

2

imrotate ruota immagini a colori B = IMROTATE (A, ANGOLO) ruota immagine A di angolo gradi in senso antiorario attorno al punto centrale.

0

So che è tardi, ma dal momento che flipdim è ora deprezzato, altre risposte non sono più valide. È possibile utilizzare flip, o farlo in altro modo 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) 

Come già sottolineato, offerte imrotate con immagini a colori e con scala di grigi.

Problemi correlati