2013-08-29 159 views
1

我已經正被保存在軸MATLAB GUI保存圖像使用imwrite MATLAB

file = 'C:\Documents and Settings\Home\Desktop\new.bmp'; 
     imwrite(handles.fname, file); 
     imfinfo(file) 

handles.fname了索引圖像的索引圖像。以上代碼將圖像以24位深度的BMP格式保存到桌面。但我需要保存在8位深度。我應該在代碼中做些什麼改變?

+1

要獲得8位圖像,是要減少顏色深度還是轉換爲灰度? –

回答

1

檢查imwrite後更仔細地發現BMP選項不支持寫入選項'bitdepth'。

,爲了轉換爲8位單色(例如見here),你可以嘗試

imwrite(rgb2gray(im2uint8(handles.fname)), file) 

有轉換比rgb2gray至單色等,其中使用了亮度通道的other方式。

如果你想減少顏色深度有一個環節here解釋如何可以實現與

new_4bit=uint8(16*(round((double(original)+1)/16)-1)); 
new_3bit=uint8(32*(round((double(original)+1)/32)-1)); 

這是假定原來是一種UINT8圖像。

編輯

我刪除uint8轉換語句。在執行此類操作之前,應檢查圖像是否爲double或uint8,並根據需要縮放值。我添加了im2uint8,它適應不同的輸入數據類型。

+0

是否可以將'bitdepth'應用於BMP格式? – Adiel

+0

@Adiel該文檔指出'imwrite'支持「BMP 1位,8位和24位未壓縮的圖像」,但正確的選項不是「bitdepth」。 –

+0

@Chethan我無法訪問你鏈接到的圖像... –