2015-05-15 153 views
1

我正在處理位圖深度爲24位的800 x 800像素圖像(PNG格式)。我假設它意味着3 x 8位。這些圖像只是黑色和白色(0或255)。 我想將這個深度降低到8位,因爲*,當我在matlab中處理這些圖像時,*我創建了一個800 x 800 x 3的矩陣,它比計算2D矩陣的計算成本更大。減少圖像位深度

我的想法是在matlab矩陣的第一層子集,但似乎我已經失去了信息,因爲我沒有在我的矩陣中留下任何東西。

`Im4=Im4(1:800,1:800);` 

任何想法?

我新的圖像處理,我可能不知道的基本知識......

+0

Matlab可以並且確實以'double'格式保存圖像,這意味着它在存儲它們時的位深度並不重要(它很重要,但matlab會處理它)。除非每個像素的24位實際上不是位深度,而是3RGB通道的顏色,否則它肯定不會創建800x800x3矩陣。 –

回答

1

rgb2gray可能是一個M-N×3圖像轉換成M×N的最安全的方式。

+0

但是,OP聲稱圖像是24位深度,而不是RGB!如果他想要改變位深度,那麼'gray2ind(I,256)'是解決方案,而不是'rgb2gray'! –

+2

然後,讓我們等待來自OP的說明。 – Dima

+1

鑑於答案已被接受,我只能假設它對OP有效? – eigenchris

1

這只是一種替代(因爲你在MATLAB圖像是新的處理其漂亮的知道不同的方法)

gray_scale = Im4(:,:,1); 

此方法僅適用,因爲你的形象已經是灰度(這可能意味着紅=綠=藍色)。代碼說的是Im4all rowsall columnschannel 1,並將其存儲在名爲gray_scale的變量中。RGB圖像的通道1是指紅色通道。

還有其他的評論是關於rgb圖像或24bit灰度。一個簡單的方法來檢查是採取原始圖像(處理前),並輸入size(MY_IMAGE_NAME_HERE)這應該給你2個或更多的數字。

  1. 行數
  2. 列數
  3. 如果它的存在給出了信道的數目,彩色圖像通常具有3.如果沒有,這意味着你有一個二維數組是灰度第三數