2011-11-09 25 views
-2

2D陣列我有一個陣列中的數據保存的一個小問題。我想將數據以10001010 <的格式保存 - 包含100行和100列的2d數組中的8位數據。我現在所做的是8位在MATLAB

a = rand(100,100); 
a = a * 127; // <<- this is done to make it 8 bits 

爲了確認我做了什麼,我做了一個imshow來顯示圖像。

當一個由127乘以最灰度像素的已經變成白色,但乘法步驟之前,它表現出了很好的灰度圖像。

一個=蘭特(100,100); a = a * 127後的enter image description here; enter image description here

+0

你是說你想要一個在0-> 255範圍內的整數值數組嗎? –

回答

1

如果你想要8位表示,它實際上是0-> 255,因爲圖像強度是無符號的。 Matlab在使用imshow時檢查圖像是哪一類,如果是雙精度,則預期範圍爲0-> 1。因此,您需要在將圖像放大並顯示正確之後將其轉換爲uint8。

a = rand(100,100); 
a = a*255; 
a = uint8(a); 
imshow(a); 
+0

是灰度圖像無符號8位? – user574183

+1

負面的強度確實沒有意義,因此沒有簽名。但你可以用你想要的任何方式表示它。這就是imshow如何繪製圖像,以及我認爲你在尋找什麼。 – Henrik