我做了一个开源 DICOM 阅片工具:支持 MPR、4D、3D 体渲染、MTF 和水模 QA

0 阅读2分钟

最近在AI工具的帮助下做了一个 DICOM 影像查看与分析工具:DicomVision。实现了我这几年来的梦想。

项目灵感来自“小赛看看”这类轻量医学影像查看器。我希望它既能像普通阅片工具一样快速浏览 DICOM,又能把一些更复杂的能力做进去,比如 MPR、斜切 MPR、4D 时相播放、服务端 3D 体渲染、MTF/FWHM 分析、水模 QA 等。

目前项目已经开源:

可以通过链接:dicom-vision-client.vercel.app/ 预览整个项目的web端。

它能做什么?

DicomVision 是一个 C/S 架构的 DICOM 阅片与分析工具,支持 Web 端和桌面端两种部署方式。

主要功能包括:

  • Stack 切片阅览
  • 窗宽窗位、缩放、平移、滚动、旋转、翻转
  • MPR 三视图重建
  • 十字线联动与斜切 MPR
  • 4D 时相切换与播放
  • 服务端 VTK 3D 体渲染
  • DICOM Tag 查看
  • ROI 测量
  • MTF/FWHM 分析
  • 水模 QA 分析
  • 图像导出
  • 深色 / 浅色主题
  • Web 端部署
  • Windows 桌面端打包

项目截图

Stack 阅片

Stack

MPR 重建

mpr.png

斜切 MPR 与十字线旋转

mpr_rotate.png

4D 时相播放

4D.png

测量工具

Measure

DICOM 标签查看

dicomTags.png

MTF / FWHM 分析

MTF

FWHM

水模 QA

Water Phantom QA

主题与设置

settings.png

Theme

技术架构

项目拆成两个仓库:

前端 DicomVisionClient

前端使用:

  • Vue 3
  • TypeScript
  • Electron
  • electron-vite
  • Vuetify
  • Tailwind CSS
  • Axios
  • Socket.IO Client

前端负责工作区、工具栏、标签页、视口交互、设置面板、Web 构建和桌面端打包。

后端 DicomVisionServer

后端使用:

  • Python 3.13+
  • FastAPI
  • python-socketio
  • pydicom
  • NumPy / SciPy
  • Pillow
  • VTK
  • uv

后端负责 DICOM 读取、序列管理、图像渲染、MPR 重建、4D 时相数据、3D 体渲染、测量计算和 QA 分析。

为什么采用 C/S 架构?

我没有把所有图像计算都放到浏览器里,而是采用前后端分离:

  • 前端负责交互体验
  • 后端负责 DICOM 处理和渲染计算
  • 图像帧通过 Socket.IO 实时推送给前端

这样做的好处是:

  • 浏览器端更轻
  • 复杂计算可以放到 Python 生态里做
  • VTK、pydicom、NumPy 这些库可以直接使用
  • Web 端和桌面端可以复用同一套后端能力
  • 桌面版也可以把后端一起打进安装包

本地运行

先启动后端:

cd DicomVisionServer
uv sync
uv run python run.py