我有一個16位體素數據集,我需要從中提取每個體素的整數值。數據集可以從here下載,它是'頭部Aneuyrism 16Bits'數據集(您需要點擊血管圖像下載16位版本)。它的尺寸是512x512x512,但我不知道它是灰度還是顏色,也不重要。看着網站上的圖片,我猜想它是彩色的,但我不確定圖像是否應該從字面上理解。從二進制文件讀取體素值到matlab
上SO一個相關的問題是:How can I read in a RAW image in MATLAB?
和MathWorks的以下內容:http://www.mathworks.com/matlabcentral/answers/63311-how-to-read-an-n-dimensioned-matrix-from-a-binary-file
多虧了這些問題的答案的信息,我設法抽取與MATLAB的文件中的一些信息如下:
fileID=fopen('vertebra16.raw','r');
A=fread(fileID,512*512*512,'int16');
B=reshape(A,[512 512 512]);
我不需要可視化圖像,我只需要爲每個像素的整數值,但我不知道我是否閱讀了信息用我的腳本以正確的方式離子。 我發現,試圖檢查我是否有正確的體素值的唯一方法是使用可視化B中的以下內容:
implay(B)
現在,上面的代碼,然後用implay(B)我得到一個黑色和白色電影在中心和黑色背景中的白色光盤和在光盤中移動的一些黑色像素(我試圖上傳一個電影的框架,但它沒有工作)。看看我下載文件的網站上的圖像,我看到的電影幀與圖像看起來很不一樣,所以我得出結論,我沒有正確的體素值。
以下是有關我的問題的一些問題:
- 我需要知道圖像是否在灰度或彩色正確讀取體素值?
- 在數據集網站上只寫了數據集是16位格式,所以我怎麼知道我是處理帶符號還是無符號整數?
- 在與上面相關的SO問題中,他們使用'uint8 => uint8'。我在matlab手冊中找不到這個,所以我想知道'uint8 => uint8'是'uint8'的一個過時的matlab符號還是它做了一些不同的事情。我懷疑它做了一些不同的事情,因爲如果我在上面的代碼中使用'int16 => int16'而不是'int16',我會得到一個帶有implay的完全黑色電影。