簡體   English   中英

如何在Matlab中顯示RGB圖像,其中每個通道都是單獨的矩陣?

[英]How to display RGB images in Matlab, where each channel is separate matrix?

給了我一個Matlab格式的人臉數據集,但是將數據集導入Matlab后,我不知道如何顯示圖像。

矩陣的大小為60x60x3x1000,這意味着圖像的尺寸為60x60,每個圖像RGB有3個通道,並且有1000個此類圖像。

我不知道如何進行基本操作,例如以彩色顯示第i張臉。

謝謝

您是否嘗試過image(1:60, 1:60, Images(:, :, :, i))嗎?

要獲得單個頻道,您可以執行以下操作:

colormap(gray)
image(Images(:,:,1,i))

要么

colormap(gray)
image(Images(:,:,2,i))

要么

colormap(gray)
image(Images(:,:,3,i))

那應該為您分開通道,並將各個顏色分量縮放到正確的飽和度水平。

另外,如果遇到超出范圍的錯誤,請嘗試:

imagesc(1:60, 1:60, Images(:, :, :, i)) 

那就是說我很難相信您的教授或同事沒有給您提供標准[0,255]格式的RGB數據。 但是,如果這樣做, imagesc在並排比較顏色通道時將毫無用處。

看看每個顏色矩陣中的某些值是什么樣子也可能會有幫助。 我們可以看到,如果您給我輸出以下內容:

min(Images(:, :, 1, 1))
max(Images(:, :, 1, 1))

如果實際上它們是某種浮點數,我可以向您展示如何將其縮放為標准整數RGB表示形式。

看起來好像在[0..255]范圍內給出數據,但類型為double(而不是uint8 )。

因此,要獲得第k個圖像,您需要

Im_k = uint8( squeeze( Images(:,:,:,k) ) );

或者,如果您想使用雙精度浮點

Im_k = squeeze( Images(:,:,:,k) ) / 255;

(在這種情況下,我不是100%確定您需要使用squeeze )。

顯示圖像

figure('Name', 'Showing k-th face');
imshow( Im_k );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM