簡體   English   中英

如何使用 DICOM 文件中的像素數據創建畫布?

[英]How to create a canvas using the pixel data from a DICOM file?

我目前正在處理一個處理 DICOM 文件的項目。 我成功地解析了一組 DICOM 文件中的數據。 當我嘗試處理 DICOM 文件的像素數據並將其傳遞到畫布以顯示它時,就會出現問題。

我使用“Dwv”庫來解析 DICOM 文件。 它幫助我將像素數據作為數組獲取並將其傳遞給創建畫布上下文的新ImageData的函數。

function buildCanvas(width, height, pixelData) {
    var imgData = context.createImageData(width, height);
    for (var i = 0; i < imgData.data.length; i += 4) {
        var x = (i / 4) % 40;
        imgData.data[i] = pixelData[x];
        imgData.data[i + 1] = pixelData[x + 1];
        imgData.data[i + 2] = pixelData[x + 2];
        imgData.data[i + 3] = 255;
    }
    console.log(pixelData);
    context.putImageData(imgData, 0, 0);
}

以下是我得到的結果:

輸出圖像

如您所見,輸出圖像完全混亂。 解決這個問題的更好方法是什么。

DICOM 數據可以存儲 RGB 數據,但最常用的是單色數據。 這在光度學解釋標簽(參考為 (0028,0004))中定義。 如果您正在處理單色數據,dwv 庫將返回一個數組,其中包含切片的原始值和大小number of rows * number of columns 輸出畫布數組是 RGBA,所以它會大 4 倍。 您的循環可能如下所示:

    var j = 0; 
    for (var i = 0; i < pixelData.length; ++i) {
        imgData.data[j++] = pixelData[i];
        imgData.data[j++] = pixelData[i];
        imgData.data[j++] = pixelData[i];
        imgData.data[j++] = 255;
    }

現在的問題是 DICOM 數據沒有在 [0,255] 范圍內縮放,這就是窗口中心/寬度發揮作用的地方。 檢查標准以了解如何解釋它。 dwv 庫還包含示例代碼來幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM