2010-10-24 63 views
20

Làm cách nào để lật hình ảnh màu (RGB) trong MATLAB? Các fliplr dường như không hoạt động mà không làm mất nội dung màu, vì nó chỉ đề cập đến 2D.lật và xoay hình ảnh màu trong MATLAB

Đồng thời, imrotate không được xoay hình ảnh màu.

+1

Tôi không gặp sự cố khi xoay hình ảnh màu với 'imrotate' (R2013a). –

+0

'fliplr (img)' tương đương với 'lật (img, 2)'. Và nó không chỉ đối phó với các mảng 2D. Đối với các mảng đa chiều, 'fliplr' hoạt động trên các mặt phẳng được hình thành bởi các chiều thứ nhất và thứ hai. – Temak

Trả lời

21

Chức năng flipdim sẽ làm việc cho ma trận ND, trong khi chức năng flipudfliplr chỉ làm việc cho ma trận 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 

LƯU Ý: Trong các phiên bản mới hơn của MATLAB (R2013b và mới hơn)), chức năng flip hiện được đề xuất thay vì flipdim.

+0

Hãy thay thế 'flipdim()' bằng 'flip()', vì từ trước không được khuyến cáo vì nhiều lý do khác nhau. –

20

Một ví dụ:

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

Tôi cũng thích nó theo cách này. – Jonas

+0

yep :) Bên cạnh những người khác đã cho thấy làm thế nào để sử dụng 'flipdim' và thay thế mới của nó 'lật'. – Amro

+0

@Amro Chủ đề mới ở đây về việc lật 'imagesc' +' trục' trong cách tiếp cận tích hợp http://stackoverflow.com/q/39923300/54964 - - Tôi không tự tin rằng cách tiếp cận của bạn có thể duy trì 'trục'. –

2

imrotate xoay hình ảnh màu B = IMROTATE (A, ANGLE) xoay hình ảnh A theo độ ANGLE theo hướng ngược chiều kim đồng hồ xung quanh điểm trung tâm của nó.

0

Tôi biết đã muộn, nhưng kể từ khi Flipdim hiện được khấu hao, các câu trả lời khác không còn giá trị nữa. Bạn có thể sử dụng flip, hoặc làm điều đó trong khác, cách thông minh:

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) 

Như đã chỉ, giao dịch imrotate với màu sắc hình ảnh cũng như với tông màu xám.