【问题标题】:Getting image from dicom .DCM file in node.js从 node.js 中的 dicom .DCM 文件获取图像
【发布时间】:2018-07-09 20:41:21
【问题描述】:

我想从 node.js 中的 .dcm 文件 (Dicom) 生成缩略图。

到目前为止,我发现了一个名为 dicom-parser 的节点模块,它从 dcm 文件中提取元数据。

我的测试用例:

var dicom = require('dicom-parser');
var fs = require('fs');

var dicomFileAsBuffer = fs.readFileSync('./FullPano.dcm');

var dataSet = dicom.parseDicom(dicomFileAsBuffer);

var pixelData = new Uint8Array(dataSet.byteArray.buffer, 
                                dataSet.elements.x00880200.items[0].dataSet.elements.x7fe00010.dataOffset, 
                                dataSet.elements.x00880200.items[0].dataSet.elements.x7fe00010.length);

fs.writeFileSync('test5.jpg', pixelData); // <----- not working :'(

为了帮助你帮我调试,这里是dataSet.elements.x00880200对象:

但是存储在标签 x00880200 -> x7fe00010 中的 pixelData 不是标准格式,无论是 jpeg、jpg、png...这里的想法是直接从文件中即时获取 dcm 图像的缩略图, nodejs 中的服务器端。

dicom doc(见下文),标签 0088,0200 保存图标的数据,也就是缩略图。

图标图像序列

(0088,0200)

3

此图标图像是图像的代表。

此序列中只允许一个项目。

我遇到了 cornerstone 库:cornerstone-jswado-image-loader。但两者都没有在 node.js 环境中工作(做了一个issue about that)。这些库可以生成 dcm 的“主”图像,但只有在 dcm 文件在客户端加载后,在 js 中。我的要求是在 nodejs 中为图标/缩略图执行此操作。

【问题讨论】:

  • “生成的图像不可利用” 你能澄清一下吗?你用什么来检查图像?另外,您能否提供有关该 DICOM 对象的更多信息? (有些字段非常重要,例如传输语法。)没有它,我们无法重现问题。
  • 更新了整个答案以更清晰,并在我的 dicom 之旅中添加更多细节。 “你用什么检查图像?” -> 通过操作系统标准查看器看不到图像 + 我在十六进制编辑器中检查,并且没有一个测试图像包含 jpg 或 png 十六进制标题。因此,我认为了解 dcm 的所有领域并不能帮助您帮助我。 Dcm 标签是标准的并且有文档记录。
  • @MarcelFalliere 您是否设法检索到图像?
  • @HRK44 不适用于 dicom-parser。我们现在使用 Cornerstone 在网络上的画布中显示 .dcm。
  • @MarcelFalliere 你只需要使用一个编码器(例如,如果你想要 JPEG,你可以使用npmjs.com/package/jpeg-js),然后一旦你有了编码的数据,你就可以用它做你想做的事——创建新的文件,base64 它,等等...

标签: node.js image dicom


【解决方案1】:

如果您尝试将图像图标保存为 JPG,这可能是您的问题:

只能使用单色和调色板彩色图像。每个像素的样本 (0028,0002) 的值应为 1,光度解释 (0028,0004) 的值应为单色 1、单色 2 或调色板颜色,不应存在平面配置 (0028,0006)。source

我不熟悉 node.js,但图标图像序列中的数据可能不适合该调用。

另请注意,您获得的是可选的小缩略图,而不是实际的图像数据,可以在像素数据属性 (7FE0,0010) 中找到。

【讨论】:

  • 我专门找图片的缩略图。那么现在的问题是:从存储在dcm文件中的pixelData,如何生成JPEG或PNG编码的图像文件?在文件(.jpg、.png、...)或 data:uri 中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2022-04-12
  • 2015-05-08
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多