2012-10-03 41 views
1

我有一個灰度圖像,在灰度圖像中,每個像素都有一個uint8值。例如,當我使用myImage(2, 3)時,那麼我收到一個介於0到255之間的相應像素值。現在我想將這個值轉換爲8位二進制數組。例如:如果myImage(2, 3)等於15,那麼我想要這個像素的轉換值爲00001111將灰度圖像中像素的uint8值轉換爲matlab中的二進制值

+0

im2bw(),但爲什麼00001111,如果我可能會問?這將去0和1 –

+1

哦,我得到它,而不是二進制圖像,但二進制表示?什麼目的?也許如果你解釋了爲什麼你想這樣做,我可以告訴你爲什麼你不需要?如果它純粹是爲了顯示,然後http://www.mathworks.com/help/matlab/ref/format.html –

+0

謝謝AK4749,我想用8位像素工作,例如交換這8位中的兩半。 –

回答

2

dec2bin(15, 8)返回00001111,作爲字符串。這裏,8指定了二進制字符串的最小長度。

有關詳細信息,請參閱here

如果你想把它當作一個矩陣,你可以做這樣的事情:

binstring = dec2bin(pixelVal, 8); 
m = str2num(binstring(:))'; 

其中,有pixelVal的15,導致m = [0 0 0 0 1 1 1 1]

+0

感謝Junuxx,但dec2bin函數將字符串中的十進制轉換爲二進制數。我想要一個矩陣1 * 8並且使用這個位 –

+0

@hamed:我明白了,那只是額外的幾行。更新了我的答案。 – Junuxx

+0

是的,我在腦海中有這個想法,但我想使用一個功能,不使用任何循環 –

相關問題