2016-03-09 68 views
0

我不太明白以下代碼的第5行正在做什麼。 前4行是從文件夾中導入圖像,然後將其存儲在「image1」中。然後在第5行我不知道正在做什麼。從文件夾導入圖像時的Matlab語法

numFolder=fullfile('NumberZero/','Zero/'); 
for i=1:10; 
    numName=sprintf('%d.bmp',i); 
    image1=imread([numFolder, numName]); 
    im1(:,:,i)=image1; % what is this line doing? 
end 
+2

它將圖像存儲到一個三維數組中,其中的維數是[rows columns nImages] – Suever

+0

@Suever現在我明白了。謝謝。您可以將其作爲答案發布,我會將其標記爲正確。 – Recap

+0

已添加。很高興它幫助你。 – Suever

回答

1

該循環僅將所有圖像數據加載到名爲im1的變量中。這個變量的尺寸將是[nRows, nColumns, nImages]。這假設進來的圖像實際上是灰度而不是RGB(第三維== 1)

一旦加載,您可以通過folling方法訪問不同的圖像。

first_image = im1(:,:,1); 
second_image = im1(:,:,2); 

作爲便箋,建議使用to not use i as a loop index

0

我在「MATLAB中心」上發佈了這個問題Q & A和「圖像分析師」很好地回答了我的問題。

im1(:,:,i)=image1; 

需要稱爲image1的2D圖像和它粘到第i個切片(平面)稱爲IM1的3D圖像的。如果im1已經有了我的切片,那麼它只是覆蓋了我的切片。如果im1還沒有切片,那麼此代碼將追加切片以在「Z」方向上生長3D圖像。所以它將存儲在磁盤上的2D圖像變成3D圖像。爲了使代碼正常工作,images1的灰度必須是灰度的。

+0

只是好奇,是什麼導致這比我下面的答案更好? – Suever

+0

@Suever對不起,對我來說這個解釋更容易理解。但我會將你的身份標記爲你需要它:P – Recap

+1

這根本不是問題。我一直在努力學習如何讓一個答案比另一個更好! – Suever