microCT 时序配准:把两次扫描叠出一张 3D 骨重塑动态图
Protocol for 3D digital dynamic histomorphometry of mouse bone via time-lapse registration of serial microCT scans
- 作者:Q. A. Meslier, N. Migotsky, S. N. Lamia, E. L. Scheller, M. J. Silva(华盛顿大学圣路易斯分校,Silva 实验室)
- 期刊:STAR Protocols(Cell Press)|发表日期:2026-08-25
- DOI:10.1016/j.xpro.2026.104787|PMC:PMC13543904
- 代码与宏:GitHub 仓库 3D-digital-dynamic-histomorphometry(Zenodo 存档)
一句话总结
体内 microCT 本来只能看骨头"某一时刻长什么样",这套方案教你把干预前(Pre)和干预后(Post)两次扫描做图像配准(对齐叠加),在三维空间里逐一体素标出"哪里长出新骨、哪里被吸收、哪里没动"并定量——不做硬组织切片,也能拿到"3D 数字版动态组织形态计量学"数据。
亮点
- 成骨与骨吸收同时定量:经典荧光双标动态组织形态计量学只能量化骨形成,量不了吸收;本方案在同一标本上一次性标出形成、吸收、静止三类区域;
- 零代码、拖拽式:全程基于 Dragonfly 交互软件图形界面,既往要写自定义脚本才能做的时序配准,现在点击式操作完成;
- 验证扎实:与金标准荧光标记区域高度一致;两名操作者各配准 3 次,组内变异系数 < 0.24%、组间差异 < 0.11%;
- 可扩展:可选 MATLAB 渲染与 BoneJ 厚度定量,进一步给出 3D 矿化沉积率(MAR)和吸收率(MRR)。
开始之前(Before you begin)
机构许可
动物实验须符合机构指南并获得 IACUC 批准。示例条件:C57BL/6J 雌鼠群养,22–25°C、12 h 明暗交替,自由饮水采食(Purina 5053)。开始任何操作前先拿到动物伦理批准。
准备:体内扫描
耗时:每次约 15 min(213 层、10.5 μm/voxel,Scanco vivaCT 40;扫描参数 70 kVp、114 μA、300 ms 积分)。
- 干预前采集目标骨(如胫骨)扫描(Pre-Scan),实验终点用完全相同参数重扫(Post-Scan);
- 两次扫描必须覆盖同一骨区域:用解剖标志点(生长板、胫腓连接等)保证窗口一致;
- 扫描后立即按统一 QC 标准目检重建图像:无运动伪影、无模糊、ROI 覆盖完整、无层间错位、皮质边缘锐利、无双重轮廓或运动条纹;
- 合格后全部以 DICOM 导出。
关键(CRITICAL):运动伪影和拖影会显著降低配准精度,直接破坏定量结果,伪影明显必须重扫;Pre/Post 扫描覆盖区还必须有足够重叠,否则感兴趣区无法配准。
关键资源
| 类别 | 内容 | 来源 | 标识符 |
|---|---|---|---|
| 实验动物 | 小鼠(示例 C57BL/6J;另含 8 个近交系创始人品系),20–22 周龄,雌雄皆可 | The Jackson Laboratory | IMSR_JAX:000928 等 |
| 软件(主平台) | Dragonfly 2024.1 | Object Research Systems (ORS) | SCR_025150 |
| 软件(可选) | MATLAB R2024b(3D 渲染与扩展参数) | MathWorks | SCR_001622 |
| 软件(可选) | Fiji (ImageJ) + BoneJ 插件(沉积/吸收速率) | 开源 | SCR_002285 / SCR_018166 |
| 硬件 | i7-14700K、128 GB 内存、RTX 4070 GPU(12 GB)、Windows 11 64 位 | 自配 | — |
Dragonfly 对硬件有要求,安装前查阅官方 system requirements 页面。
分步方案
步骤 1–9:导入扫描数据(5 min)
- "File" → "Import DICOM Images";
- "Folder Content Tab" → "Open Folder",选择 DICOM 文件夹 → "Ok";
- 点 Scan info 高亮 → "View Study";
- 双击数据集重命名为
PreScan_ScanNbr(ScanNbr 按实验编号替换); - 对 PostScan 重复,命名
PostScan_ScanNbr。
注意:导入后两个扫描应出现在 "Data properties and Settings" 面板;随手保存 ORS session。本方案基于 16 位 DICOM 开发验证,8 位虽可导入但未经正式验证,低位深可能降低对比度、影响定量。
步骤 10–12:建掩膜并去除背景(5 min)
- 只显示 PreScan_ScanNbr(眼睛图标),确保没有其他数据集可见;
- 进入 "Segment Tab",勾选 "Define Range",点 "Upper Otsu"——应只有骨头变红(切勿连点多次,误点后 "Selected Range" 下 "Reset";异常见 Troubleshooting 1);
- 记录 Upper Otsu 阈值数值(后面还要用);"Add to New" 生成新 ROI,取消 "Define range",重命名
PreROI; - "Morphological operations" 设膨胀参数:Dimensionality
2D (Z)、ShapeCircle、Kernel Size15(近端胫骨用 11),依次 "Dilate"、"Smooth"; - 右键 PreROI → "Modify and Transform" → "Invert",勾 "Invert Values" + "Create New DataSet",得
PreROI(Inverted):此时背景被掩膜、骨头不被掩膜,可手动补笔确保骨像素不被盖、背景噪声全被盖; - 保持选中,"Image Operations" 下拉选 PreScan_ScanNbr,"Overwrite" 输入
-3000(可调,必要时低至 −20000)→ OK; - 对 PostScan 重复全部操作,命名 PostROI / PostROI(Inverted)。
参数解读:膨胀的目标是"尽量去背景、骨表面留一圈薄背景"。皮质骨用 2D 圆核 15 像素;小梁骨等复杂几何建议 11 像素,可按骨几何、体素大小和图像质量自行调整。
步骤 13:质心对齐(1 min)
右键 PostScan_ScanNbr → "Align" → "Centroid With…" → 选 PreScan_ScanNbr → OK。质心对齐后尚未完成配准。方案假设两次扫描样本朝向相近;朝向差异大时先手动校正(见 Troubleshooting 2)。
步骤 14:图像配准(10 min)
"Utilities" → "Open Plugins" → "Image Registration",设置:Fixed = PreScan_ScanNbr,Mobile = PostScan_ScanNbr;Register using = "Rotation, Translation";Interpolation = "Linear";Method = "Mutual information"。然后分三段由粗到细迭代:
| 配准阶段 | 旋转初始步长 | 旋转最小步长 | 平移初始步长 | 平移最小步长 |
|---|---|---|---|---|
| 粗配准(Coarse) | 10 | 0.5 | 0.15 | 0.011 |
| 中间配准(Intermediate) | 5 | 0.01 | 0.1 | 0.01 |
| 精配准(Fine) | 5 | 0.01 | 0.1 | 0.001 |
每阶段点 "Apply" 后检查 "Registration information":反复执行至互信息(Mutual Info)在箭头两侧接近、旋转与平移值趋近 0,再进下一阶段。旋转/平移不必强求恰为 0,但应足够小且稳定。参数为 10.5 μm 体素经验优化值;其他体素可按"粗配准最小平移步长 ≈ 1 个体素"的原则调整。
步骤 15(可选):宏自动配准(10 min)
- 从 GitHub 下载宏
Meslier_RegistrationMacro,放入C:\Users\用户名\AppData\Local\ORS\Dragonfly2024.1\pythonUserExtensions\Macros(找不到 AppData 就 Win+R 输%LocalAppData%); - 必要时重启 Dragonfly(先存 session);完成步骤 1–14 后,Utilities → Macro Player 选该宏 → "Play Next Step";
- 宏暂停时下拉选 PreScan(fixed)/ PostScan(moving)→ "Play All Steps" 跑完;
- 跑完仍须手动复核互信息、旋转、平移(步骤 14.e),不合格按 Troubleshooting 4 精修。
步骤 16:建配准后掩膜(<5 min)
高亮 PreScan_ScanNbr → 勾 "Define Range"(阈值用步骤 11 记录的同一 Upper Otsu 值)→ "Add to New" → 重命名 PreBone,Circle / 2D (Z) / Kernel 3 平滑;对 PostScan 重复得 PostBone。小核平滑为降噪同时保住骨几何;更大核或 3D 平滑可能过度抹平细节,自行权衡。
步骤 17–18:重采样与裁剪(<5 min)
- PostBone 在另一图像空间,须重采样:右键 PostBone → "Modify and Transform" → "Resample Geometry" → 选 PreScan_ScanNbr → OK,得
PostBone (Resampled); - 裁掉不重叠区(两扫描窗口略有不同时会存在):显示 PreBone、PostBone (Resampled) 和 PreScan_ScanNbr,高亮 PreScan(保证切片号以它为准);横断面滚动找出两掩膜起止重叠的 z 切片号;右键 PostBone (Resampled) → "Crop" 输入起止切片,勾 "Create New" + "Apply to other" → Apply;只留两个骨掩膜,Ok、Close。
步骤 19:去伪影(<5 min)
灰度与骨接近的伪影可能在阈值化时混进掩膜:右键 "PreBone (Cropped)" → "Refine Region of Interest" → "Process Islands" → "Keep by largest 26 connected" → 输入 1 → OK;对 "PostBone (Resampled) (Cropped)" 重复。此步只保留最大连通域(骨本身)。
步骤 20:定义骨形成 / 吸收 / 静止区(<5 min)
- 点
PreBone (Cropped),Ctrl+点PostBone (Resampled) (Cropped):"Intersect" → 静止骨 Q;"A-B" → 骨吸收 R; - 点
PostBone (Resampled) (Cropped),Ctrl+点PreBone (Cropped):"A-B" → 骨形成 F。
步骤 21(可选):去胫骨嵴(<5 min)
胫骨前嵴易干扰表面定量,可从 F、R、Q 掩膜擦除:选中掩膜 → "ROI painter" 的 "2D view tools" 勾 "multi-slice",选方形画笔、下拉 "Full";横断面从第一层开始,Ctrl+滚轮调画笔,尖端 Shift+点击擦除,滚动到掩膜重现处重复,直到层堆顶部;对 F、R 重复。
步骤 22–27:骨内膜 / 骨外膜表面特异定量(5 min)
某些干预只作用于骨外膜、不影响骨内膜,表面特异定量因此必要。
- Pre 骨髓腔:选 "PreBone" → "Modify and Transform" → "Invert…",勾 "Invert values" + "Create new";新掩膜 → "Refine Region of Interest" → "Process Islands" → "Remove by largest (26-connected)";重命名
Marrow Pre(髓腔与外界经血管连会被"连坐",见 Troubleshooting 5); - Post 骨髓腔:对 "PostBone" 重复,得
Marrow Post; - 骨内膜:Marrow Pre Ctrl+点 Marrow Post → "A-B" →
Endo_F;Marrow Post Ctrl+点 Marrow Pre → "A-B" →Endo_R; - 骨外膜:F Ctrl+点 Endo_F → "A-B" →
Perio_F;R Ctrl+点 Endo_R → "A-B" →Perio_R; - 在 "Statistical Properties" 高亮 "Volume",把 F、R、Endo_R、Endo_F、Perio_F、Perio_R、Q、PreBone 逐个抄进表格;
- 保存 ORS session。主配准流程到此完成。报告建议用形成骨(或吸收骨)占 PreBone 的比值(F/BV、R/BV)。
步骤 28–38(可选):MATLAB 渲染与扩展参数(25 min)
提供 3D 渲染及额外参数(3D 矿化/侵蚀表面、3D 骨形成与吸收速率),只需基础编程能力:
- Dragonfly 导出二值掩膜:右键掩膜 → "Export" → "ROI as binary",tiff 格式、勾 "Output as one file";对 R、Q、WB、PreBone、Endo_F、Endo_R、Perio_F、Perio_R 重复;
- 建目录:Samples → 样本号文件夹(如 624)→ Mid(中段;近端建 Proxi)→ 放入 tiff 掩膜;
- GitHub 下载
Meslier_3DDynamicHisto_QM.m在 MATLAB 打开;改第一节的样本文件夹路径、文件夹编号、Pre/Post 间隔天数、分析区域(Midshaft/Distal/Proximal)、XY 与 Z 体素大小; - 下载结果模板
Meslier_Results_3DDynamicHisto_template.xlsx,第一表填组名与样本号,另存 Copy 并关闭,脚本第 22 行改其路径; - Run 运行;检查自动质检图:逐层形成/吸收像素数曲线、周长曲线(胫骨应平滑渐变;局限少数层的尖峰提示分割错误)、绿色表面逐一检查图、掩膜叠加图、3D 渲染;
- 所有样本重复;结果同时打印在命令窗口,可手动誊录。
步骤 39–48(可选):BoneJ 定量 MAR 与 MRR(10 min)
用 BoneJ "Thickness" 量化形成/吸收骨厚度,除以扫描间隔天数即得 3D 矿化沉积率(MAR)/吸收率(MRR)。无需编程(BoneJ 先按 bonej.org 装入 Fiji):
- 导出二值掩膜(同步骤 28):R、Q、Endo_F、Endo_R、Perio_F、Perio_R;
- Fiji 打开掩膜 → "Plugins" → "BoneJ" → "Thickness",勾 "Trabecular thickness"、"Show thickness maps"、"Mask thickness maps" → OK(选项虽叫小梁厚度,实际量的是皮质周围形成/吸收区厚度);
- 检查厚度图(厚=浅黄、薄=紫),结果表自动给出平均厚度;
- 平均厚度 ÷ Pre/Post 间隔天数 = 3D 矿化沉积率;对吸收掩膜重复得吸收率。
预期结果
完成本方案后可获得精确配准的 Pre/Post μCT 数据集,在小梁骨与皮质骨的骨内膜、骨外膜表面定量形成、吸收、静止区域:
| 参数 | 含义 | 单位 |
|---|---|---|
| F/BV | 形成骨体积占总骨体积比 | % |
| R/BV | 吸收骨体积占总骨体积比 | % |
| MS(可选) | 矿化表面 | % |
| ES(可选) | 侵蚀表面 | % |
| BFR/BS(可选) | 单位骨表面骨形成速率 | μm³/μm²/day |
| BFR/BV(可选) | 单位骨体积骨形成速率 | %/day |
| BRR/BS(可选) | 单位骨表面骨吸收速率 | μm³/μm²/day |
| BRR/BV(可选) | 单位骨体积骨吸收速率 | %/day |
| MAR(可选) | 矿化沉积率 | μm/day |
| MRR(可选) | 矿化吸收率 | μm/day |
方法学验证:配准 μCT 得到的骨外膜骨形成与金标准 2D 荧光动态组织形态计量学对比,形成区域一致(黄箭头对应);荧光缺失区恰与 μCT 配准发现的吸收区吻合(白三角)。重复性:两名操作者对同一数据集各配准 3 次,F/BV 与 R/BV 组内变异系数均 < 0.24%、组间差异 < 0.11%。
相对传统切片的优势:可在远大于单张组织切片的 ROI 内做三维形成/吸收可视化与定量,并支持骨内膜/骨外膜/联合表面分别定量;可选 MATLAB 工作流输出更直观的 3D 渲染。
局限性
- 依赖配准质量:体位差异大、噪声高、运动伪影多或解剖结构本身改变时精度下降;自动宏跑完仍需人工校验,配准不全直接波及布尔运算准确性;
- 阈值化掩膜天生短板:灰度接近矿化组织的伪影可能被误纳入,须人工清理;不同仪器/研究的扫描质量与参数差异影响可比性。扫描分辨率决定可解读的最小形成/吸收量,低于该尺度的变化不能下结论;
- 对称骨更难配准:如股骨中段缺乏不对称解剖标志,建议把大转子等标志纳入 ROI;
- 重复辐射的考量:依赖重复体内 μCT,辐射剂量、扫描频率与恢复间隔可能影响骨结构本身,实验设计必须权衡;
- 测的是矿化组织而非细胞活动:μCT 看不到类骨质等未矿化早期骨形成,结果反映净矿化骨动态;需细胞层面解读时建议辅以组织学验证。
Troubleshooting
| 问题(步骤) | 现象 | 解决方案 |
|---|---|---|
| 1. Upper Otsu 阈值异常(步骤 11) | 连点多次得错误阈值;背景伪影被纳入阈值范围 | 删掉重新导入 DICOM,或用记录值手动改回;伪影多时手动微调阈值,或保留 Upper Otsu 后用 ROI painter 抹掉伪影 |
| 2. 质心对齐失败(步骤 13) | Pre/Post 初始朝向差异过大,配准失败 | 先粗手动对齐:选 Post-Scan,"Main" → "Translate/Rotate" → "Displace",在横断面用平移/旋转大致对齐(3D 视图检查)再配准 |
| 3. 配准插件数值改不了(步骤 14) | 窗口弹出后无法手动改参数(软件小故障) | Fixed/Moving 互换一次再换回(恢复 PreScan=Fixed),即可恢复 |
| 4. 自动宏效果不佳(步骤 15) | 困难样本对不齐,互信息指标不一致 | 从步骤 15.h 起手动运行 Image Registration 插件,迭代至互信息、旋转、平移达标 |
| 5. 骨髓腔定义被"连坐"(步骤 22) | 髓腔经血管与骨外空间连通,"Remove by largest" 把髓腔连同外界一起删掉 | ROI painter 橡皮擦手动断开连通(单层连通用 "single slice",Shift+滚轮调画笔,Shift+点击擦除血管)再重跑 |
资源可用性
- 通讯作者:Matthew J. Silva(silvam@wustl.edu);技术联系人:Quentin A. Meslier(meslier@wustl.edu)。
- 数据与代码:MATLAB 脚本与 Dragonfly 宏开源(GitHub:3D-digital-dynamic-histomorphometry;Zenodo DOI: 10.5281/ZENODO.19225261)。
- 未产生新的独特试剂。
本文为中文编译版,供方法学习参考,引用请注明原始出处。