news 2026/10/19 1:53:37

OHIF Viewer 工具栏完整指南:测量、窗宽窗位与截图导出一次讲透

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OHIF Viewer 工具栏完整指南:测量、窗宽窗位与截图导出一次讲透

OHIF Viewer 工具栏完整指南:测量、窗宽窗位与截图导出一次讲透

【免费下载链接】ViewersOHIF zero-footprint DICOM viewer and oncology specific Lesion Tracker, plus shared extension packages项目地址: https://gitcode.com/GitHub_Trending/vi/Viewers

OHIF Viewer 是一款零部署的开源 DICOM 查看器,它的工具栏(Toolbar)是阅片时最高频的操作入口:测量病灶、调窗宽窗位、平移缩放、导出截图、切换布局,全部收拢在屏幕顶端这一条图标栏里。本文以 Basic 模式为主线,按一次真实阅片的顺序把工具栏走一遍——先调窗、再测量、最后导出——再拆解每个按钮背后的命令与求值机制。

打开检查后:工具栏从左到右怎么排

在 Studies 列表点开一个检查后,你会进入查看器主界面。视线从左到右扫一遍顶部这一条:最左侧是返回箭头,点一下就回到检查列表;旁边是品牌区,机构可以把 Logo 换成自己的标识(white labelling);中间占据主体的是工具区;最右侧是应用偏好设置入口。

工具区里按钮的排布顺序是固定的primary分区:测量工具(MeasurementTools)、Zoom、Pan、3D Rotate、Window/Level、Capture(截图)、Layout、Crosshairs,最后是 More Tools 菜单。除了顶部工具栏,视口自身还带几组"角落菜单":左下角是 W/L 预设入口,底部中间是 AdvancedRenderingControls 高级渲染控制区,左上角有方位切换与数据叠加菜单。这些属于viewportActionMenu分区(topLeft、bottomLeft、bottomMiddle 等),不在顶部工具栏里,别找错地方。

窗宽窗位预设怎么选:Window/Level 两步走

刚打开一个 CT,默认窗位往往不适合你要看的结构。调窗有两条路:

自由调整:点击 Window/Level 图标激活工具,然后在视口上按住鼠标拖拽,窗宽窗位实时变化,直到对比度合适。

一键预设:点击工具旁的下拉箭头(caret),会展开常见成像场景的预定义 W/L 设置:

预设窗宽/窗位快捷键
Soft tissue(软组织)400/401
Lung(肺窗)1500/-6002
Liver(肝窗)150/903
Bone(骨窗)80/404
Brain(脑窗)2500/4805

看肺实质直接按 2 套肺窗,看心脏按 1 套软组织窗,比手动拖快得多。

源码里 W/L 相关按钮不止一个:顶部工具栏的WindowLevel按钮在 primary 分区;视口左下角的专用菜单是windowLevelMenu;底部中间的 AdvancedRenderingControls 区还挂了windowLevelMenuEmbedded和手动 VOI 控制菜单voiManualControlMenu。定义都集中在 toolbarButtonsCustomization.ts。

完成一次病灶测量:Length、Bidirectional 与椭圆

窗调好之后开始测量。流程是固定的三步:选中测量工具 → 它成为 active 激活工具(按钮高亮)→ 在视口上绘制,结果实时显示,右侧测量面板(Measurements)同步记录。想换工具,点测量按钮旁的下拉箭头展开列表即可。

MeasurementTools 分区默认包含这些工具:

工具用途显示结果
Length两点之间的线性距离mm
Bidirectional最长径(LD)与最长垂直径(LPD)mm
Annotation带自由文本标签的定性标记文本
EllipticalROI椭圆区域面积与平均 CT 值mm² / HU
RectangleROI矩形区域面积与平均 CT 值mm² / HU
CircleROI圆形区域mm
PlanarFreehandROI / SplineROI / LivewireContour平面自由手 / 样条 / 活线轮廓面积与长度

每个测量按钮都通过setToolActiveToolbar命令激活工具,这个命令会同时向default、mpr、SRToolGroup、volume3d四个工具组广播——同一个 Length 工具因此在 2D 堆栈、MPR 和 SR 视口上都能直接用,不需要切换工具组。

如何校准像素间距:Pixel Spacing 不对时怎么办

Length、Bidirectional 这类长度测量的物理单位,来自图像的 Pixel Spacing 属性——患者体内相邻像素中心之间的物理距离,由一对数值指定(相邻行间距 / 相邻列间距,单位 mm)。元数据缺失或出错时,测量值就会失真。这时用 More Tools 菜单里的 Calibration(校准)工具,在一段已知真实长度的结构(如标尺、已知尺寸的解剖标志)上画校准线,即可覆盖(override)原始 Pixel Spacing。

平移、缩放与布局:Pan、Zoom 和 Layout Selector 怎么用

图像看不顺眼时,三个工具分工明确:

  • Zoom(缩放):激活后在图像上点击并拖拽调整缩放级别,放大倍数实时显示在视口角落。
  • Pan(平移):激活后点击并拖拽,移动图像位置。
  • 3D Rotate:面向 3D 容积视口的轨道旋转;当前没有 3D 视口时按钮会置灰,并提示 "Select a 3D viewport to enable this tool"。

Layout Selector负责视口网格布局。它使用ohif.layoutSelector类型,默认提供rows: 3, columns: 4的可选范围——从 1x1 到 3x4,点格子就能切换分割方式。多平面对照阅片(比如矢状面 + 冠状面 + 轴状面 + 斜位)时,这是最常用的按钮之一。

视口截图导出:文件名、尺寸、格式怎么配

📷 需要把当前视图放进报告或邮件时,点工具栏的相机图标(Capture)。弹出"Download High Quality Image"模态框,可以配置四项:

  • File Name:文件名
  • Image width / height (px):输出图像的宽高
  • File Type:文件格式(png、jpg 等)
  • Show Annotations:是否把视口上的测量标注一起渲染进截图

下方有实时图像预览,确认无误后点 Download 落到本地。注意video(视频)与wholeSlide(全切片 WSI)两种视口不支持该功能,按钮在对应视口上会自动禁用——这由按钮定义里的evaluate.viewport.supported排除逻辑控制。

More Tools 菜单:一键重置视图、旋转、反色与序列联动

More Tools 菜单聚合了视图操作类工具,常用项如下:

按钮绑定命令作用
Reset ViewresetViewport重置位置、缩放、窗宽窗位等全部图像操作
Rotate RightrotateViewportCW顺时针旋转 90 度
Flip HorizontalflipViewportHorizontal水平镜像翻转
Image Slice SynctoggleSynchronizer(type:imageSlice)联动各堆叠视口的位置同步
Stack ScrollsetToolActiveToolbar所有含图视口同步滚动
MagnifysetToolActiveToolbar点击图像放大查看局部细节
InvertinvertViewport反转灰度色阶
CinetoggleCine在当前视口开启电影播放,点播放器上的x或再次点击按钮关闭
Angle / Probe / RectanglesetToolActiveToolbar等可调角度测量 / 拖拽查看像素值 / 矩形面积与 CT 值(mm²、HU)

从 More Tools 里选中的工具会成为激活工具,直到你点击其他工具把它替换掉。

为什么不同视口上有些按钮灰着?每个按钮都带evaluate求值逻辑,由 ToolbarService 在状态变化时重新计算。例如flipHorizontal同时检查evaluate.viewportProperties.toggle且排除video、volume3d视口;Cine用evaluate.cine并排除volume3d;rotate-right排除video。这套"命令 + 求值"的双层设计,让同一份按钮定义可以安全复用在 2D 堆栈、MPR、3D 容积、视频和 WSI 各种视口上,无需为每种视口单独写分支。

工具栏源码拆解:按钮即数据,命令与求值双层机制

想改工具栏或理解它为什么这么灵活,看三层就够:

数据层:cornerstone 扩展以"能力包"形式注册两组自定义项——cornerstone.toolbarButtons(全部按钮定义,每个按钮就是id、uiType、commands、evaluate的数据对象)与cornerstone.toolbarSections(分区到按钮 ID 列表的映射),见 toolbarButtonsCustomization.ts。

装配层:Basic 模式在 index.tsx 中通过{ $reference: 'cornerstone.toolbarButtons' }、{ $reference: 'cornerstone.toolbarSections' }引用这两个能力包;模式进入时 modeCustomization.ts 的registerModeToolbar调用toolbarService.register()注册按钮、按分区updateSection()装配布局。第三方扩展或?customization=模块可以在不重建模式的前提下追加按钮。

渲染层:core 平台的 ToolbarService.ts 预定义了TOOLBAR_SECTIONS(primary、secondary与viewportActionMenu的八个方位分区);Toolbar.tsx 用useToolbarhook 取当前分区的按钮列表(默认primary),为每个按钮注入isOpen、isLocked、onToggleLock等交互状态后渲染成 UI。

打开一个 Basic 模式检查,按 2 套用肺窗、画一条 Bidirectional、再导出带标注的 PNG——整套流程走完,工具栏就熟了。想继续深入按钮的注册与装配细节,从toolbarSections映射和 ToolbarService 的求值流程开始读起即可。

【免费下载链接】ViewersOHIF zero-footprint DICOM viewer and oncology specific Lesion Tracker, plus shared extension packages项目地址: https://gitcode.com/GitHub_Trending/vi/Viewers

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 1:52:32

Windows 11 专业版多人远程桌面登录:rdpwrap.ini 配置全流程

Windows 11 专业版多人远程桌面登录:rdpwrap.ini 配置全流程 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 周五晚上从家里远程连公司那台 Windows 11 专业版&…

作者头像 李华
网站建设 2026/10/19 1:47:50

裸机C语言时间触发调度器:从中断风暴到确定性的任务表设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 1:47:41

N_m3u8DL-RE 流媒体下载:10 分钟跑通 MPD / M3U8 到 MP4 的离线下载

N_m3u8DL-RE 流媒体下载:10 分钟跑通 MPD / M3U8 到 MP4 的离线下载 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N…

作者头像 李华
网站建设 2026/10/19 1:46:40

MCU缺货涨价背后:国产化替代的选型逻辑与实操经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华