Horos开源DICOM查看器:macOS上免费的三维影像工作台
【免费下载链接】horosHoros™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based upon OsiriX and other open source medical imaging libraries. Horos is made freely available under the GNU Lesser General Public License, Version 3 (LGPL-3.0). Horos is linked against the Grok JPEG 2000 library, for fast viewing of JPEG 2000 images. This library is licensed under the terms of the GNU Affero General Public License.项目地址: https://gitcode.com/gh_mirrors/ho/horos
晚上十点,住院医师林奕回到家,准备给明天早会的病例讨论做资料。她从医院拷回一个头颅外伤患者的 CT 检查,U 盘里躺着一千多张 DICOM 文件——这种格式她太熟悉了:在医院 PACS 系统里随手可看,可一旦离开医院网络,电脑上没有任何软件能打开它。
她试过网上那些"免费试用"的商业查看器:要么 30 天到期弹出付费墙,要么只让看 20 张图就要授权码,报价动辄数万美元。她也试过用浏览器插件硬开,结果窗宽窗位全部错乱,图像黑成一团。
最后她找到的是 Horos——一个运行在 macOS 上的开源DICOM查看器,免费、无需授权码,把整个检查文件夹拖进去,一千多张断层图秒级铺开,脑窗、骨窗一键切换,三维重建转起来比医院工作站还顺手。第二天早会,她直接在这台 Mac 上完成了汇报。
这个软件不是个小玩具,而是一套完整落地的医学影像平台。本文要做的,就是把它的原理、用法和坑一次讲清楚。
30 秒认识 Horos:它是谁,能干什么
Horos 是面向 macOS 的 64 位免费开源医学影像软件,基于 OsiriX 和一批开源医学影像库构建,采用 LGPL-3.0 许可证发布,可自由使用、修改和分发。
30 秒总结:Horos = 能打开 DICOM 的看图器 + 能三维重建的工作站 + 能对接医院 PACS 的网络客户端,全部免费、本地运行、原生支持 macOS。
它和同类方案的核心差异有三点:一是格式覆盖广,从老式胶片数字化图像到 JPEG 2000、JPEG-LS 等压缩格式都能解析,其中 JPEG 2000 解码链接了 Grok 库,浏览速度比纯软件解码快一个量级;二是三维能力完整,不是"能转一转的模型",而是可切割、可测量、可做虚拟内窥漫游的完整工具链;三是协议合规,支持标准 DICOM 网络服务,可以直接和医院 PACS 通信。
如果你只是偶尔看一两张影像,在线工具就够用;但如果你要经常读片、做三维重建,或者帮科室搭一套本地阅片环境,Horos 值得你花一个下午。
没有它 vs 有了它:四个价值点拆开讲
与其罗列功能清单,不如看一组"没有它/有了它"的对比——这正是 Horos 真正改变工作流的地方。
从"打不开文件"到"拖进来就能看":影像格式解析
没有它:不同厂商的 CT、MRI、超声设备导出的 DICOM 文件五花八门,私有标签、JPEG 2000 压缩、JPEG-LS 无损压缩,任何一个环节不支持,整个检查就看不了。
有了它:把整个检查文件夹拖进 Horos,它会自动识别检查、序列和图像,按患者归组。底层由 DCMTK、Papyrus3 等库负责解析,JPEG 2000 走 Grok 高速解码,JPEG-LS 走 CharLS,绝大部分临床格式都能直接打开。
支撑这种体验的,是它清晰的三级数据模型——检查(Study)、序列(Series)、图像(Image)三层结构,与 DICOM 标准一一对应。理解了这个模型,你就理解了 Horos 的一切操作逻辑。
上图是 Horos 数据库中的三张核心表:Study Table 存检查级信息(患者 ID、检查号、机构名),Series Table 存序列信息(模态、日期、序列描述),Image Table 存单张图像元数据,箭头表示表间关联。这套结构让"查某位患者的所有胸部 CT"这类操作只需一次索引,而不是在海量文件里逐个翻。
从"一张张翻片"到"三平面联动":MPR 多平面重建
没有它:看三维结构只能靠脑补。横断面看到病灶,冠状面长什么样、矢状面在哪一层,你得在几百张图里来回滚动找对应层面,费眼且容易漏。
有了它:MPR 多平面重建在横断面、冠状面、矢状面三个窗口同步显示,在一个平面上移动光标,另两个平面立刻跳到对应位置。核心逻辑在Horos/Sources/MPRController.m和OrthogonalMPR*系列文件中,还支持曲线 MPR(沿血管走行拉直观察)和 CPR 曲面重建。对血管追踪、病灶空间定位这类任务,效率和精度都是质的提升。
从"看个大概"到"切开还能改":DICOM图像三维重建与切割
没有它:三维重建要么看整体外观,要么看预设方向的切面,想观察内部结构只能靠软件固定的几个视角。
有了它:Horos 提供 3D 切割工具,可以在重建体上任意画平面切开观察内部,且严格区分两种模式——绿色剪刀是"只看不动"的阅读模式,红色剪刀是"可编辑可保存"的写入模式。
配合虚拟内窥镜(Horos/Sources/EndoscopyVRController.m中的 FlyThru 漫游),你还能像做内镜一样"飞"进气道、血管或结肠模型里观察管腔内部。外科医生做术前规划时,用这套工具模拟入路、评估切割平面对周围组织的影响,远比看二维图像直观。
从"刻盘拷贝"到"一条网络连接":对接医院 PACS
没有它:影像传递靠 U 盘、光盘,患者信息靠手写记录,科室之间是数据孤岛。
有了它:Horos 实现了标准 DICOM 网络服务,查询、检索、存储逻辑集中在Horos/Sources/DCMTKServiceClassUser.mm等文件中。配置好 AE Title、IP 和端口,它就能作为客户端从 PACS 拉取检查,也能作为服务端接收设备推送的图像。医院 IT 用这套机制给科室搭轻量级阅片点,不需要额外采购硬件。
15 分钟跑起来:从源码到第一次读片
Horos 的编译流程不长,前提是环境齐了。以下四步,每步都有可验证的预期反馈。
准备依赖:确保系统装了
cmake、pkg-config(Intel Mac 通常在/opt/local/bin,Apple Silicon 在/opt/homebrew/bin)和git-lfs(VTK-m 子模块需要)。终端敲cmake --version能看到版本号即通过。克隆源码:执行
git clone https://gitcode.com/gh_mirrors/ho/horos。完成后目录里应能看到Horos.xcodeproj和各库文件夹。仓库用了 git 子模块,记得再执行git submodule update --init --recursive拉齐依赖。编译:二选一——用 Xcode 打开
Horos.xcodeproj按 Command+B;或在项目根目录直接make。README 说明全量构建约 5 到 30 分钟,取决于机器,第一次编译慢是正常的,别以为是卡死。首次运行:启动后拖入任意一组 DICOM 文件夹,你会看到左侧患者列表、上方序列缩略图、中间主阅片区依次铺开。到这里,一次完整读片流程的 80% 你已经跑通了。
三个高频场景实战
场景一:急诊头颅 CT 快速评估
场景描述:急诊收到疑似脑出血患者,需要快速判断出血范围。
操作步骤:
- 通过 DICOM 接收或直接拖入检查,等待序列加载完成;
- 切换到预设"脑窗"参数(窗宽 80、窗位 40 量级),灰白质对比立刻分明;
- 打开 MPR 同步浏览,在三个平面确认出血部位;
- 用闭合多边形工具沿血肿边缘描一圈,直接读出面积和体积;
- 加一行文字标注记录关键发现。
结果与收获:五分钟左右完成初步评估,测量数据可直接写进报告。
小贴士:提前把脑窗、骨窗、肺窗存成快捷键,比每次手调滑块快得多。
场景二:肿瘤治疗前后对比
场景描述:肿瘤科需要对比两次检查的同一解剖层面,判断疗效。
操作步骤:
- 同时打开治疗前、治疗后的两次检查;
- 用并排显示模式把两次检查对齐到同一层面;
- 对病灶画 ROI,分别记录两次的测量值;
- 用图像融合模式叠加两张图,变化区域会直观"亮"出来。
结果与收获:体积变化百分比一目了然,随访报告的数据部分基本自动生成。
小贴士:把常用阅片布局(分屏数、窗宽窗位、标记工具)存成预设,下次随访一键调用。
场景三:教学案例准备与分享
场景描述:给医学生准备影像学课件,但直接展示原始 DICOM 会泄露患者隐私。
操作步骤:
- 在 Horos 中选中要分享的检查;
- 用匿名化功能移除姓名、ID、机构等标签(实现见
Horos/Sources/Anonymization*.mm系列文件); - 导出为通用图片或视频,加上教学标注后并入课件。
结果与收获:既守住隐私合规,又保留完整的教学信息。
小贴士:Horos 支持 AppleScript 自动化(入口见Horos.sdef),批量匿名化、批量导出这类重复劳动可以写成脚本一次跑完。
进阶玩法:让这个开源DICOM查看器真正好用起来
把数据库搬到 SSD。Horos 的本地数据库默认放在用户 Application Support 目录,如果落在机械硬盘上,几千个检查的检索会明显变慢;迁移到 SSD 后,患者列表通常能从"转圈几秒"降到"即时响应"。
合理分配图像缓存。在偏好设置里按内存大小调整缓存配额。16GB 内存的机器用默认值即可;处理大型数据集时适当调大缓存能减少重复解码,翻片流畅度改善明显。
JPEG 2000 是隐藏加速器。Horos 链接了 Grok JPEG 2000 库,专门优化 JPEG 2000 图像的快速浏览。如果你的数据大量采用这种压缩格式(很多新设备默认导出),这一项带来的提速是最直接的。
认真配置窗宽窗位预设。不同设备、不同检查类型的最佳显示参数差异很大,把科室常用的几套存成命名预设,新人上手也能一秒切到正确显示。
用 AppleScript 批量处理。Horos/Sources/DICOMExport.mm实现了导出逻辑,配合 AppleScript 可以批量转换格式。研究项目一次要处理几百个病例时,这条链路能省下大量手工操作时间。
新手最常踩的四个坑
1. 编译报错 "cmake not found"原因:cmake不在 PATH,或装在了非默认位置。 解决:用 Homebrew 装齐依赖后重开终端再试:brew install cmake pkg-config git-lfs。
2. 克隆后子模块目录是空的原因:仓库使用 git 子模块,普通 clone 不会自动拉取。 解决:在项目根目录执行git submodule update --init --recursive,等依赖下载完再编译。
3. 某些 DICOM 导入后显示黑图原因:图像是特定压缩格式,或初始窗宽窗位不合适。 解决:先尝试调整窗宽窗位;仍无效则确认文件是否为 JPEG 2000 / JPEG-LS,检查 Grok、CharLS 相关组件是否编译完整。
4. 连不上 PACS原因:AE Title、IP、端口三者之一不对,最常见是 AE Title 大小写不一致或端口被占用。 解决:和影像科逐项核对三个参数,确认 AE Title 唯一且两端一致,并检查防火墙是否放行端口。
从今天开始,你的第一张读片
回到开头那个晚上:林奕后来把 Horos 装进了科室里每一台 Mac,新来的规培生半小时就能上手,再没有人因为"软件打不开"耽误过早会。
你现在也可以走同样的路:git clone https://gitcode.com/gh_mirrors/ho/horos拉下源码,按本文四步编译运行,然后拖入第一组 DICOM 数据,把一张断层图转成立体模型——这一步做完,你就真正用上了属于自己的开源DICOM查看器。
之后想深入,可从这几个入口继续:构建说明看仓库根目录README.md,数据模型研究Horos/Models/下的映射文件,三维与 MPR 逻辑在Horos/Sources/里按MPR*、CPR*、Endoscopy*前缀分门别类。读代码的同时,把你在真实病例里遇到的问题反馈给社区——这正是开源项目成长的方式。
【免费下载链接】horosHoros™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based upon OsiriX and other open source medical imaging libraries. Horos is made freely available under the GNU Lesser General Public License, Version 3 (LGPL-3.0). Horos is linked against the Grok JPEG 2000 library, for fast viewing of JPEG 2000 images. This library is licensed under the terms of the GNU Affero General Public License.项目地址: https://gitcode.com/gh_mirrors/ho/horos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考