22 Stimmen

Spiegeln und Drehen eines Farbbildes in MATLAB

Wie kann ich ein Farbbild (RGB) in MATLAB spiegeln? Die fliplr scheint nicht zu funktionieren, ohne dass die Farbinhalte verloren gehen, da es sich nur um 2D handelt.

Außerdem ist die imrotate dürfen Farbbilder nicht gedreht werden.

1 Stimmen

Ich habe keine Probleme beim Drehen von Farbbildern mit imrotate (R2013a).

0 Stimmen

fliplr(img) ist gleichbedeutend mit flip(img, 2) . Und es geht nicht nur um 2D-Arrays. Für mehrdimensionale Arrays, fliplr auf den von der ersten und zweiten Dimension gebildeten Ebenen arbeitet.

24voto

gnovice Punkte 124264

Die Funktion flipdim funktioniert für N-D-Matrizen, während die Funktionen flipud y fliplr funktioniert nur für 2-D-Matrizen:

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

HINWEIS: In neueren Versionen von MATLAB (R2013b und neuer) ist die Funktion flip wird nun empfohlen anstelle von flipdim .

22voto

Amro Punkte 122495

Ein Beispiel:

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

2voto

Chethan Punkte 213

imrotate Dreht Farbbilder B = IMROTATE(A,ANGLE) dreht das Bild A um ANGLE Grad in a gegen den Uhrzeigersinn um seinen Mittelpunkt.

0voto

Staszek Punkte 829

Ich weiß, es ist spät, aber da flipdim jetzt abgeschrieben ist, sind andere Antworten nicht mehr gültig. Sie könnten verwenden flip oder tun Sie es auf andere, intelligente Weise:

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)

Wie bereits erwähnt, kann imrotate sowohl mit Farb- als auch mit Graustufenbildern umgehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X