我希望使用JavaScript提取然后显示DICOM文件中的图像数据。我想知道是否有人知道任何框架或工具来帮助我这样做。提前谢谢。
答案 0 :(得分:4)
一个dicom文件基本上是一个可以解析的二进制文件,只要我担心没有可用的框架可以做到这一点。但是,您可以使用一些HTML5功能和JQuery的
http://timc.idv.tw/html5-file-upload/
然后,您可以使用readAsBinaryString
函数检索Dicom数据并使解析器解析它。然而,最后一部分可能有些麻烦,因为你必须实现整个dicom规范。
然后你可以获得PixelData(7FE0,0010)并在<canvas>
上显示它们。这里唯一的问题可能是dicom文件的大小非常大。所以我不确定它会有多快。
正如Nico在评论中所述,您可能也需要对PixelData进行转换,因为浏览器并不总是理解其中的字节码(这肯定是您使用CT数据集的情况)
答案 1 :(得分:2)
我认为'HTML5'是最好的解决方案。 Canvas,FileAPI(readAsArrayBuffer),TypedArray可以精确显示DICOM图像。
在Javascript中尝试以下操作。 1.创建“FileReader”对象。 2.调用'readAsArrayBuffer'方法,该方法可以读取二进制数组。 3.创建“Uint8Array”对象并解析DICOM标头。 4.使用canvas方法'createImageData'创建图像数据对象以显示二进制图像。 5.将像素数据属性(7FE0,0010)设置为图像数据对象。 6.调用'putImageData',你可以在画布上显示DICOM Image。
对不起我的英语不好...... 祝你好运!
答案 2 :(得分:2)
对于图书馆,你可以使用这个: Management Plugin
答案 3 :(得分:1)
我也一直在研究这个问题。
解决方案(IMHO)将拥有一个可以从文件中提取单个数据项的库。 DICOM标准非常具体,关于如何定义每种类型的变量,以及在DICOM文件中的每个数据项中给出的信息。
因此,我建议(目前正在进行的)方法涉及:
1)readAsArrayBuffer
2)读入头字节(DICM)......
3)读入不同的标签(保留你想要的标签)
4)将像素数据(7FE0,0010)读入数组
5)创建一个颜色图(这样你可以很好地显示图像) - 想想CT窗口/水平
6)使用数组中不同像素值的颜色映射值生成图像。
7)在画布上绘制数组。
一个。
答案 4 :(得分:0)
如果要使用完全JavaScript的解决方案,请不要理会,但是您可以使用jQuery异步调用从服务器端的dicom工具包(dcmtk:https://dicom.offis.de/dcmtk.php.en)运行可执行文件。我使用了几种二进制文件将图像数据转换为.png文件,还使用它们将dicom文件转换为xml文件。从那里,仅显示图像或通过客户端的xml文件进行解析。