今天想要用Matlab讀取16-bit Raw轉成8-bit Raw時遇到一個問題
就是讀檔一直出現問題

影像的輪廓對了,可是每一個pixel的值像是錯亂了一樣
一張影像變成像是電視訊號出了問題的麻點

後來才知道原來是因為fread預設的讀取方式是little-endian
可是手邊的16-bit Raw不巧的是以big-endian 的方式存取
所以才會造成影像的值出了錯

不過沒有資訊背景的我還是第一次知道這個東西耶
兩個差別在於一個是從高位元讀取,一個從低位元讀取
little endian的8是1000
big-endian的8是0001

Matlab寫法分別為:
fread(fid,'uint16', 'ieee-be') :big-endian
fread(fid,'uint16', 'ieee-le') :little-endian

感謝秀大教學呀 ^o^ .
創作者介紹
創作者 redsky712 的頭像
redsky712

。香。氣。迷。濛。

redsky712 發表在 痞客邦 留言(12) 人氣()