2013-10-24 92 views
-1

我一直在使用PCA在Matlab上在不同的圖像人臉數據庫上進行實驗。我最近從多年前收購了幾個同事的數據庫。他們是.MAT文件,當我雙擊文件.MAT,以下文件顯示Matlab讀取存儲在4D陣列中的圖像

enter image description here

正如你所看到的圖像存儲在這個dbface四維數組變量,但我不能確定如何提取每個單獨的圖像。我只用了幾個星期的matlab,所以仍然熟悉它。我一直在四處搜尋,但找不到任何有關如何從四維數組中提取各個圖像的示例。

任何幫助,將不勝感激

編輯:

size(dbface) 

ans = 
    64 64 11 15 

If anyone else encounters this, easiest way to extract is to do the following 

%Return rows cols and dimensions 
[rows cols dimen1 dimen2] = size(dbface); 

count = 0; 
%Loop through each image 
for i = 1:dimen1 
for j = 1:dimen2 
count = count + 1; 
image = dbface(:,:,i,j); 
tmimg=uint8(image); 
img=reshape(tmimg,cols,rows); 
images{count} = img; 
end 
end 
+0

'size dbface'的結果是什麼?通常圖像不是以4D存儲的,所以我認爲我們需要更多的信息來幫助你。 –

+0

我更新了我的帖子。我不認爲圖像通常會存儲在4D中,這就是爲什麼當我打開文件時感到困惑 – AdamM

+0

問你的同事。班級的規模和數量顯然在第三和第四個方面,但我不會滿足於這樣給你最後的話。 – chappjc

回答

0

從我猜想,你有很多的64×64圖像的變量來看。

如果是這樣,他們可以提取這樣

myExtract = dbface(:,:,1,1) 

這會給你的第一個的情況下,你可以改變的最後兩個數字提取其他的。

+0

這似乎在伎倆,不能相信這是簡單的。我只需要使用上面的代碼提取圖像,然後使用imagesc(myExtract); colormap('gray'),然後我可以顯示圖像。歡呼你的幫助! – AdamM