Skip to main content

医疗图像

· 7 min read

Cornerstone.js

Cornerstone.js 是一个用于医疗图像处理的 JavaScript 库,主要用于在 Web 应用中显示和操作 DICOM 图像。它提供了丰富的功能来处理医学影像数据,支持放大、缩小、平移、窗宽窗位调整等功能。

以下是一些关于如何使用 Cornerstone.js 的基本示例和步骤。

首先,你需要安装 Cornerstone.js。可以通过 npm 安装:

npm install cornerstone-core
npm install cornerstone-tools

基本使用

  1. 引入 Cornerstone.js

    在你的 JavaScript 文件中引入 Cornerstone.js 和相关工具:

    import cornerstone from 'cornerstone-core';
    import cornerstoneTools from 'cornerstone-tools';
  2. 设置 HTML 结构

    创建一个容器来显示图像:

    <div id="dicomImage" style="width: 512px; height: 512px;"></div>
  3. 初始化 Cornerstone.js

    在你的 JavaScript 文件中初始化 Cornerstone.js:

    const element = document.getElementById('dicomImage');
    cornerstone.enable(element);
  4. 加载和显示 DICOM 图像

    使用 Cornerstone.js 加载和显示 DICOM 图像:

    const imageId = 'wadouri:http://example.com/path/to/your/dicom/file.dcm';

    cornerstone.loadImage(imageId).then(function(image) {
    cornerstone.displayImage(element, image);
    });

添加工具

Cornerstone Tools 提供了很多有用的工具来与图像进行交互,比如缩放、平移、窗宽窗位调整等。以下是如何添加一些基本工具:

// 启用工具
cornerstoneTools.init();

// 添加缩放工具
cornerstoneTools.addTool(cornerstoneTools.ZoomTool);
cornerstoneTools.setToolActive('Zoom', { mouseButtonMask: 1 });

// 添加平移工具
cornerstoneTools.addTool(cornerstoneTools.PanTool);
cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 2 });

// 添加窗宽窗位调整工具
cornerstoneTools.addTool(cornerstoneTools.WwwcTool);
cornerstoneTools.setToolActive('Wwwc', { mouseButtonMask: 4 });

以下是一个完整的示例,展示了如何使用 Cornerstone.js 和 Cornerstone Tools 来加载和显示 DICOM 图像,并添加一些基本的交互工具:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cornerstone.js Example</title>
<style>
#dicomImage {
width: 512px;
height: 512px;
border: 1px solid black;
}
</style>
</head>
<body>
<div id="dicomImage"></div>
<script src="https://unpkg.com/cornerstone-core"></script>
<script src="https://unpkg.com/cornerstone-tools"></script>
<script>
// 初始化 Cornerstone.js
const element = document.getElementById('dicomImage');
cornerstone.enable(element);

const imageId = 'wadouri:http://example.com/path/to/your/dicom/file.dcm';

// 加载和显示 DICOM 图像
cornerstone.loadImage(imageId).then(function(image) {
cornerstone.displayImage(element, image);
});

// 启用工具
cornerstoneTools.init();

// 添加缩放工具
cornerstoneTools.addTool(cornerstoneTools.ZoomTool);
cornerstoneTools.setToolActive('Zoom', { mouseButtonMask: 1 });

// 添加平移工具
cornerstoneTools.addTool(cornerstoneTools.PanTool);
cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 2 });

// 添加窗宽窗位调整工具
cornerstoneTools.addTool(cornerstoneTools.WwwcTool);
cornerstoneTools.setToolActive('Wwwc', { mouseButtonMask: 4 });
</script>
</body>
</html>

以上示例展示了如何使用 Cornerstone.js 来加载和显示 DICOM 图像,并添加一些基本的交互工具。Cornerstone.js 是一个功能强大的库,可以帮助开发者在 Web 应用中处理医学影像数据。如果你需要更复杂的功能,可以参考 Cornerstone.js 和 Cornerstone Tools 的官方文档。

类似的库

除了 Cornerstone.js 之外,还有其他一些库和工具可以用于处理和显示医学影像数据,特别是 DICOM 图像。以下是一些类似的库和工具:

1. OHIF Viewer

OHIF Viewer 是一个基于 Web 的 DICOM 图像查看器,使用了 Cornerstone.js 作为其核心图像处理库。它提供了一个完整的、功能丰富的 DICOM 查看器,支持多种医学影像处理功能。

  • 特点

    • 支持多种视图模式(如 MPR、多平面重建)。
    • 支持 DICOMweb 和 WADO-RS 协议。
    • 提供丰富的工具集,如测量工具、注释工具等。
    • 可扩展性强,适合集成到现有的医疗影像系统中。
  • 网址OHIF Viewer

2. Papaya

Papaya 是一个基于 Web 的医学影像查看器,支持多种医学影像格式,包括 NIFTI、DICOM 等。它是一个轻量级的、跨平台的查看器,适用于快速查看和处理医学影像数据。

  • 特点

    • 支持多种医学影像格式。
    • 提供多种图像处理和分析工具。
    • 轻量级,易于集成和使用。
  • 网址Papaya

3. AMI (A Medical Imaging Library)

AMI 是一个基于 Three.js 的开源库,用于在 Web 上处理和显示医学影像数据。它支持 2D 和 3D 图像显示,并提供了丰富的图像处理和分析功能。

  • 特点

    • 基于 Three.js,支持 3D 图像显示。
    • 支持多种医学影像格式,如 DICOM、NIFTI 等。
    • 提供丰富的图像处理和分析工具。
  • 网址AMI

4. Med3Web

Med3Web 是一个用于医学影像数据可视化的开源 Web 应用。它支持 2D 和 3D 图像显示,并提供了多种图像处理和分析工具。

  • 特点

    • 支持 2D 和 3D 图像显示。
    • 提供多种图像处理和分析工具。
    • 支持多种医学影像格式。
  • 网址Med3Web

5. VTK.js

VTK.js 是一个用于科学数据可视化的 JavaScript 库,基于 VTK(Visualization Toolkit)。虽然 VTK.js 并不是专门为医学影像设计的,但它非常强大,可以用于处理和显示复杂的医学影像数据。

  • 特点

    • 支持 2D 和 3D 数据的可视化。
    • 提供丰富的数据处理和分析工具。
    • 可扩展性强,适合构建复杂的医学影像应用。
  • 网址VTK.js

结论

这些库和工具各有特点,可以根据你的具体需求选择合适的工具。如果你需要一个功能丰富且易于集成的解决方案,OHIF Viewer 和 Papaya 是不错的选择。如果你需要更多的定制和扩展能力,AMI 和 VTK.js 是很好的选择。希望这些信息对你有所帮助!