2015-04-17 56 views
2

轉怎麼轉用RGB值的圖像?那就是第一行的所有像素都應該成爲第一列的像素,依此類推。圖片在MATLAB

對於一個簡單的1D情況是這樣的:

B=A'; 

我像

img=imread('name.bmp'); 

R=R'; 
G=G'; 
B=B'; 

再之後,讓他們組裝成一個新的形象不知何故。

回答

11

您可以使用短&簡單permute -

permute(img,[2 1 3]) 

基本上它的列保持第三維完整的,即轉置每個3D片交換的行。這種方法的優點在於,即使在第三維中有4個切片,例如對於深度信息通常作爲dim3中的第四個切片存儲的圖像,它也可以工作。

+1

3D反位置是我看到的'permute'的第一個實際用途......並且我從你那裏學到了這一點。 +1。 – rayryeng

+1

@rayryeng IP中沒有更多的循環! ;) – Divakar

+1

哈哈哈哈不能說它更好。 – rayryeng

2

只是爲了完整性,您可以使用imrotateflipdim順序此事做雖然。在這裏,我們翻轉列(那2個是什麼),然後旋轉90度

imshow(imrotate(flipdim(im,2),90))

如果我們的旋轉首先我們將不得不翻轉行(多數民衆贊成在1是什麼)

imshow(flipdim(imrotate(im,90),1))

1

由於 「移調ND陣列上沒有定義」 在Matlab,可以單獨移調每個通道:

[r,c,z] = size(im); 
tmp = zeros(c,r,z); 
for k=1:z 
    tmp(:,:,k) = im(:,:,k)'; 
end 
+0

這比所提出的其他解決方案慢。儘可能避免使用for循環 – Alexander