我有一個dicom
圖像這是我在matlab
讀作:保存爲PNG格式的DICOM圖像
I=dicomread('xyz.dcm');
在顯示它,我用下面的命令:
imshow(I,[])
我想什麼問一下是,我怎樣才能通過imwrite
來寫它,這樣我就能看到使用上面的imshow
命令看到的圖像?
我比如嘗試這樣做:
imwrite(I,'xyz.png','png');
,但得到暗圖像。
有關於此的任何想法?
謝謝。
我有一個dicom
圖像這是我在matlab
讀作:保存爲PNG格式的DICOM圖像
I=dicomread('xyz.dcm');
在顯示它,我用下面的命令:
imshow(I,[])
我想什麼問一下是,我怎樣才能通過imwrite
來寫它,這樣我就能看到使用上面的imshow
命令看到的圖像?
我比如嘗試這樣做:
imwrite(I,'xyz.png','png');
,但得到暗圖像。
有關於此的任何想法?
謝謝。
當你閱讀的圖像,得到的顏色表以及
[I, map]=dicomread('xyz.dcm');
現在,當你保存它,給imwrite顏色表也。
imwrite(I,map,'xyz.png','png');
並且順便說一下,最後的png通常不是必需的。 MATLAB會看到.png擴展名並知道將其保存爲png。
感謝您的回覆。當我嘗試你的解決方案時,我得到了以下錯誤(dcm文件名是'000000.dcm':'錯誤使用imwrite> parse_inputs(529行) 顏色映射表應該有三列 imwrite錯誤(第419行) [數據,地圖,文件名,格式,paramPairs] = parse_inputs(varargin {:});' – Simplicity
如果你看看地圖變量是什麼,你看到了什麼?數據的大小和類型 如果var 。是空的,這意味着你有一個灰度或真彩色圖像。一般來說,當我得到奇怪的東西,80%的時候,你可以通過乘以255來得到它的正確格式,如果值在0和1之間,或者除以255以得到0和1之間的值,也嘗試將數據轉換爲double類型,或者鍵入uint8,我有一種感覺,其中一種組合會適合你。查看imwrite的文檔,MATLAB的圖像數據格式是一種學習的痛苦 – Shaun314
似乎dicom圖像有16位深度,比通常的8位大。
要驗證這確實是這樣的類型
>> class(I)
我期望輸出爲uint16
。
如果是這樣,請嘗試:
imwrite(I, 'xyz.png', 'bitdepth', 16);
嘿,我有同樣的問題,它似乎是一種解決方案是非常簡單的。 只需檢查您是否傳遞一個字符串作爲目標文件的文件名。
我正在傳遞fullfile函數的輸出(這個函數輸出一個單元格)。它會發生什麼,即imwrite函數將輸入(vargins)放在一起並查找具有char類型的第一個變量。它使用此索引來查找指定數據類型的參數,從而定義顏色映射。如果你的文件路徑是一個單元格,它將得到錯誤的索引並輸出奇怪的錯誤。
我希望這有助於
「BMP」文件的外觀如何? – macduff