技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

DicomVisionClient 开源项目深度技术分析

项目背景与痛点

在医学影像学领域,尤其是在放射科和影像科,DICOM 文件的处理至关重要。DICOM 文件是一种包含医学影像和元数据的专用文件格式。传统的阅片流程耗时且复杂,需要大量时间来查看、分析和编辑影像。面对如此复杂的工作流程,DicomVisionClient 项目提供了一体化的C/S架构阅片工具,通过集成影像浏览、重建、测量、质量分析、元数据检查及修改等功能,极大地简化了阅片流程,为临床医生、放射科医师和影像科研人员带来了极大的便利。

核心技术揭秘

DicomVisionClient 项目通过详尽的架构设计和关键技术栈,确保性能和易用性兼备。核心框架的多个关键组成部分包括浏览器 Web 应用和 Windows 桌面应用,二者均内置后端服务,这意味着其可以无缝集成到不同的工作环境中。

以下是一个简化的数据流图,展示了从用户输入到服务端交互的关键流程:

graph TD A[用户操作界面] --> B{"服务端通信"} B -->|"交互成功" | C[数据处理] C --> D[状态反馈] B -->|"交互失败"| E[错误处理及反馈]

在这其中,关键的技术点包括 Stack 切片阅览、MPR/斜切 MPR、以及 4D 时相播放,而这背后依赖的技术栈及其设计原则如下:

  • Stack 切片阅览:通过优化的数据结构管理,确保从大文件中高效提取所需切片,以实现极快速的影像切换。后端通过处理大量流数据,将影像的按需分段处理拉到后台。

  • MPR 及斜切 MPR:多平面重建技术 (MPR)允许从任意角度对影像数据进行视图操作。斜切 MPR 的实现则依赖高级算法组合底层数学模型。

  • 4D 时相播放:这里使用时间序列为关键因素,结合优化的视屏渲染技术保证在不同帧率下顺畅播放,大幅提高时间序列及动图的研究分析精度。

功能亮点与差异

相比同类阅片工具,DicomVisionClient 的独特优势在于其全面而深刻的影像数据处理能力。从元数据检查到 MTF/FWHM 分析,从图像导出到深浅主题切换,涵盖医学影像处理从基本到高级操作的所有步骤。尤其是当医生需要快速检查影像中的多种参数,这样的特性显得尤为珍贵。

值得一提的是其对跨平台支持,浏览器端和桌面端的都在一个平台下开发,使得该工具具有高度的灵活性和可适应性。无论是远程会诊,还是本地分析,DicomVisionClient都展现出其卓越的架构设计和跨平台能力。

应用场景与落地建议

在实际生产环境中使用DicomVisionClient,有几个关键点需要注意:

  • 性能测试:确保在处理大规模影像文件时的流畅性。特别是需要进行4D时相播放或者大文件导入时。
  • 稳定性检查:保证较低的失败率。术中临时切换患者信息或在多个显示器上操作,都需要保持高性能和高稳定性。
  • 安全性考量:加强数据传输和存储的安全措施,鉴于其广泛应用在医疗行业,需要严格遵守HDRDPA等法规防止敏感数据泄露。

具体适用的场景包括医学影像科、放射科和其他医疗机构,以及医学影像相关的科研和教育中。在复杂的工作环境下,加之该工具丰富全面的功能特性,其适应性非常强。

综合评价

强项:

  • 高效整合影像浏览、重建、测量、元数据检查等多功能性
  • 同时支持跨平台使用,极大提升了工具的灵活性与适用性
  • 用户界面友好,定制化深度主题切换适应各种场景需求

短板:

  • 使用前的配置和部署较为复杂,需要一定技术背景进行初始化设置。
  • 在大规模数据时对机器性能要求较高。

如上所述,DicomVisionClient 项目通过细致的技术架构设计和功能集成,为医学影像处理领域提供了一站式解决方案,展现了强大的实力和宽阔的应用前景。

简要分析

热度分
273
价值分
141
活跃状态
活跃

语言占比

CSS
HTML
JavaScript
NSIS
PowerShell
Shell
Swift
TypeScript
Vue

贡献者

README

DicomVision

English

面向桌面、Web 与移动端的远程渲染 DICOM 工作站

DicomVision 是一套面向医学影像浏览、分析和教学验证场景的 DICOM Viewer。项目采用 C/S 架构:客户端基于 Vue、TypeScript 和 Electron 构建,后端基于 FastAPI、Socket.IO 和医学影像处理栈完成 DICOM 解析、渲染、重建、分析和导出,并将结果实时推送到桌面端、Web 端和移动端界面。

项目概览

DicomVision 将 DICOM 解析、重建、渲染和计算密集型分析置于后端,将交互、工作流和结果呈现置于客户端。浏览器、移动端和桌面端因此复用同一套影像能力,并可部署在局域网、云服务器或带内置后端的桌面安装包中。

本项目特别适合客户端显存有限、但仍需要稳定使用统一 DICOM 浏览和后端 2D/3D 渲染能力的场景。对于显存充足且以本地 GPU 交互性能为首要目标的工作站,应优先评估 C3D 等原生方案;对于计算和界面必须同进程部署的产品,也可采用 Python/C++ 等前后端不分离的架构。DicomVision 的 C/S 设计侧重跨端复用、集中式渲染与轻量客户端接入。

架构与适用范围

  • 统一渲染服务:FastAPI、Socket.IO、VTK 与医学影像处理链路在服务端执行,客户端保持轻量。
  • 双端 3D 传输:启动时可选择 WebP 静帧或 WebRTC 低延迟预览;交互稳定后保留高质量最终帧。
  • 多端一致工作流:Electron 桌面端、浏览器和移动端共享视图、工具、PACS 与导出能力。
  • 安全导入:支持 DICOM 文件、目录、ZIP、7z 与 RAR;压缩包在服务端临时目录中按路径、条目数、解压体积和压缩比限制处理。

核心能力

  • 数据导入:支持 DICOM 文件、文件夹、拖拽导入、浏览器上传,以及 ZIP、7z、RAR 压缩包;支持服务端样例数据与 PACS DICOMweb/DIMSE 查询和下载。
  • 2D 浏览:支持窗宽窗位、缩放、平移、滚动、翻转、旋转、伪彩、同步浏览、Compare、Layout、多序列和多视图工作区。
  • MPR 与 4D:支持 AX/COR/SAG 三视图、斜切 MPR、十字线同步、MPR 播放、4D phase 播放、FPS 控制和时相同步。
  • 3D 可视化:支持 VR 体渲染、Surface 渲染、MIP/XRay 类模板、AAA/CT/CTA/MR/CBCT 自适应预设、WebRTC 低延迟交互、3D 参数面板、去床板、自由形状裁剪、标准解剖朝向和移动端触控 3D。
  • PET/CT Fusion:支持 PET/CT 融合浏览、PET-only、SUV/强度范围控制、手动配准、配准保存、Fusion 四宫格和单视口切换。
  • 测量与标注:支持线段、矩形、椭圆、角度、曲线、自由形状测量,箭头和文本标注,实时 draft 与 ROI 指标。
  • 分割与 QA:支持 MPR 阈值分割、球形 VOI、分割 overlay、分割导入导出、MTF/FWHM、水模 QA 和结果报告。
  • DICOM 与导出:支持 DICOM Tag 树查看、VR 感知编辑、批量 Tag 修改、脱敏导出、PNG、DICOM、DICOM SR 和 DICOM GSPS 导出。
  • 多端体验:支持桌面端、Web 端和移动端响应式界面,提供深色、浅色和蓝色主题;桌面安装包内置后端服务。

在线预览

https://dicom.zhaolin.online/

公开 Web 预览适合体验 UI、基础流程和远程渲染能力。真实 PACS、本地大数据量、桌面端内置后端和隐私数据场景,建议使用本地部署或桌面端。

演示

DicomVision 基础操作演示 DicomVision 移动端操作演示

截图

工作区首页 已加载序列
DicomVision 工作区首页 已加载 DICOM 序列
PET/CT 融合 PET/CT 手动配准
PET/CT 融合浏览 PET/CT 手动配准
MPR 与斜切 4D 时相
MPR 斜切与十字线旋转 4D 时相播放
MTF/FWHM 分割与 VOI
MTF/FWHM 分析 MPR 阈值分割与 VOI
水模 QA 浅色主题
水模 QA 浅色主题
移动端首页 移动端 2D
移动端首页 移动端 2D 浏览
移动端 MPR 移动端 4D
移动端 MPR 移动端 4D
移动端 PET/CT 移动端设置
移动端 PET/CT 融合 移动端设置
PACS 数据源 PACS Browser
PACS DICOMweb 和 DIMSE 设置 PACS Browser 查询与导入
测量工具 DICOM Tag
线段、角度、矩形和椭圆测量 DICOM Tag 查看
拖拽导入 脱敏导出
拖拽导入 DICOM DICOM 脱敏导出

快速开始

启动 Server

cd ../DicomVisionServer
uv sync
uv run python run.py

默认地址:

  • HTTP: http://127.0.0.1:8000
  • OpenAPI: http://127.0.0.1:8000/docs
  • Socket.IO: http://127.0.0.1:8000/socket.io

启动桌面客户端

cd ../DicomVisionClient
npm install
npm run dev

如果需要指定后端:

$env:DICOM_VISION_SERVER_ORIGIN = "http://127.0.0.1:8000"
npm run dev

启动 Web 开发服务

npm run dev:web

构建 Web 静态包

npm run build:web

生产环境变量示例:

VITE_BACKEND_ORIGIN=https://your-backend.example.com
VITE_WEB_APP_MODE=web

开发

常用脚本:

  • npm run dev:启动 Electron 桌面开发运行时。
  • npm run dev:web:启动 Web Vite 开发服务。
  • npm run build:构建 Electron main、preload 和 renderer。
  • npm run build:web:构建独立 Web 前端到 dist-web/。
  • npm run preview:web:本地预览 Web 静态构建。
  • npm run generate:api-types:从 Server OpenAPI 重新生成前端 API 类型。
  • npm run typecheck:运行 TypeScript 类型检查。
  • npm run test:run:运行 Vitest。
  • npm run release:win:构建后端桌面 bundle 并打包 Windows 安装器。
  • npm run release:mac:在 macOS 上构建后端桌面 bundle 并打包 macOS 桌面端。
  • npm run release:mac:publish -- --tag vX.Y.Z:在 macOS 本地构建 DMG/ZIP、生成校验文件并上传到 GitHub Release。

发布流程

  • Windows / Web / Windows Server:推送 vX.Y.Z 标签后,由 .github/workflows/release-windows.yml 自动构建并发布。
  • macOS:在 macOS 本地运行 npm run release:mac:publish -- --tag vX.Y.Z。脚本会使用官方 Electron Builder 二进制源,构建 DMG/ZIP,生成 SHA256SUMS-macos.txt,并将资产上传到同一个 GitHub Release。
  • 发布前需要先将 Client 和 Server 的同名版本标签推送到远端,并完成 gh auth login。macOS 也支持 --skip-build,用于上传已经生成的本地资产。

后端 API、Socket.IO 事件、部署和桌面 bundle 细节见:

DicomVisionServer README

联系与反馈

如有问题、建议或希望参与改进,欢迎联系:[email protected]

评论

暂无评论