跳到主要内容

WSI 金字塔、物理像素尺寸与观察尺度

学习目标​

  • 解释全切片图像(whole-slide image,WSI)的分块与多分辨率金字塔如何支持按需读取,并区分 tile 与金字塔层级。
  • 区分物理像素尺寸(micrometers per pixel,MPP)、物镜倍率、光学分辨率与屏幕缩放,判断哪些信息可用于组织尺度测量。
  • 根据 MPP、像素尺寸和下采样系数,计算图块的物理视野、二维面积及层级间的近似尺度关系。
  • 应用 OpenSlide 的参数约定,区分 Level 0 起点坐标与所选层的输出尺寸,并读取层级与 MPP 元数据。
  • 比较不同图块的物理视野与观察尺度,判断统一像素尺寸或插值缩放能否保证尺度可比或增加真实细节。

本文聚焦这些基础概念、换算关系及其在病理阅片与 AI 图像分析中的作用。数字切片文件格式的全面比较、QuPath/OpenSlide 的批量导出流程、WSI 采样代表性与模型架构另有独立专题,不在这里展开。

一、WSI 为什么需要金字塔与分块​

1. 一张 WSI 究竟有多大?​

设一张用于计算的合成示例图像在最高分辨率下为 80,000 × 60,000 像素,物理像素尺寸为 0.25 µm/pixel。它包含:

N=80,000×60,000=4.8×109 pixelsN=80{,}000\times60{,}000=4.8\times10^9\ \mathrm{pixels}

仅按 8 位 RGB、每像素 3 字节估算,未压缩的原始像素阵列占用约 14.4 GB(十进制),尚未计入缓存、元数据及额外层级。它在真实文件中的压缩后大小可能显著不同;不能由这个估算反推磁盘大小。[1, 5]

如果每次缩放都要完整解码最高分辨率图像,不仅内存负担很大,还会浪费 I/O。因此,WSI 通常将两个技术组合使用:

  • 分块存储(tiling): 把一个分辨率层拆成许多可单独访问的小块;读取视野时只需取用相交的块,而不是解码整层。
  • 多分辨率金字塔(pyramidal image): 把相同组织范围表示为不同像素密度的多个层级;低倍浏览使用较粗层级,放大时切换到更细层级。

两者不是同义词:tile 是同一层内部的空间划分,金字塔是不同分辨率之间的层级关系。 也不是所有 WSI 格式、软件后端都以完全相同的方式存储或生成金字塔;有时会动态计算缩略层。[1, 3]

WSI 多分辨率金字塔与分块存储示意

图 1|WSI 的多分辨率金字塔与分块。上层表示更少的像素、更大的单像素物理覆盖范围;最底层 Level 0 保留最高采样密度。虚线表示各层覆盖同一组织范围,底层网格示意 tile。层与层的绘制比例仅为示意,不代表实际组织图像或扫描结果。来源:JHT Med 原创示意图,依据 OpenSlide 与 OME-TIFF 官方文档绘制。[1, 3]

2. Level 0 为什么是最高分辨率?​

在 OpenSlide 的层级约定中,Level 0 是最高分辨率层,层编号越大,通常像素尺寸越少、下采样倍数越大;不能把它误解成“第 0 层是缩略图”。[1]

沿用上述合成示例,假设每升一级,宽、高均缩小一半:

层级下采样系数 dld_l图像尺寸(像素)每像素的物理尺寸典型观察用途
Level 0180,000 × 60,0000.25 µm高细节观察
Level 1240,000 × 30,0000.50 µm细胞与局部组织
Level 2420,000 × 15,0001.00 µm局部结构与组织关系
Level 3810,000 × 7,5002.00 µm较大组织范围浏览

这里的层级数量和 1、2、4、8 倍数只是计算示例,不是所有扫描仪或文件的统一规定。实际下采样系数可以不按 2 的幂变化,层级尺寸还可能因为边界取整出现细微比例差异;应读取具体图像元数据,而非仅由层编号推算。[1]

核心直觉:各层通常表达同一片组织的相同物理范围;变化的是表示这个范围需要多少像素。较粗层不能凭空恢复在下采样过程中丢失的细节。

另外,thumbnail(缩略图)、macro(宏观照片)与 label(玻片标签)可能作为 associated images(关联图像)另行保存;它们未必是主组织图像金字塔中的一层。[1]

二、MPP:把图像坐标连接到真实组织​

1. 什么是物理像素尺寸?​

MPP 表示数字图像在组织平面上的采样间距:相邻像素中心在真实标本上大致相隔多少微米。常见的 0.25 µm/pixel 可以理解为:沿某方向移动 1 个像素,对应组织平面上约 0.25 µm 的距离。

严格地说,像素是一次采样所记录的数值,并非组织上边界锐利的小方块。MPP 为几何测量提供尺度,但并不直接等于显微系统能够分辨两个物体的最小距离;后者还受到物镜数值孔径、光学成像、对焦、噪声和重建处理等因素影响。[2, 7]

若 Level 0 在水平与垂直方向的物理像素尺寸分别为 sx,0s_{x,0} 和 sy,0s_{y,0}(单位均为 µm/pixel),则一个轴向对齐、宽 ww 像素、高 hh 像素的区域,物理宽高约为:

Wμm=w sx,0,Hμm=h sy,0.W_{\mu m}=w\,s_{x,0},\qquad H_{\mu m}=h\,s_{y,0}.

例如当两个方向的 MPP 都为 0.25,一个 512 × 512 的 Level 0 图块覆盖约 128 × 128 µm。如组织近似位于同一平面、像素标定可信,则含 nn 个像素的分割区域面积近似为:

Aμm2=n sx sy.A_{\mu m^2}=n\,s_x\,s_y.

注意这里是图像上物体投影的二维面积,不是组织体积。若 sx≠sys_x\ne s_y,仅使用一个平均 MPP 计算长度或面积可能产生误差;应分别使用两个方向的标定值。[2]

不同文件生态对同一物理尺度使用不同字段,读入时必须核对单位和轴向:

元数据体系相关字段读取时的关键点
OpenSlideopenslide.mpp-x、openslide.mpp-y指 Level 0 的水平、垂直 µm/pixel;可能缺失或不准确。[2]
OME-XML / OME-TIFFPixels.PhysicalSizeX、PhysicalSizeY 及对应 Unit字段可选,默认单位可为 µm,但需检查实际单位及数据来源。[3, 4]
DICOM WSIPixel Spacing (0028,0030)单位通常为 mm;先行间距(垂直),后列间距(水平),换算成 µm 时乘以 1,000;并注意所处金字塔层。[6, 9]

这些字段表示数据中记录的标定,并不自动证明扫描设备的真实误差已被独立校准。

2. MPP 和“20×、40×”有什么关系?​

在数字病理行业,0.5 µm/pixel 常被称作约“20× 等效”扫描,0.25 µm/pixel 常被称作约“40× 等效”扫描。它们是便于交流的近似惯例,不是跨设备的精确换算式。[5, 7]

概念具体回答的问题能否直接代表细节质量?
物镜放大倍率(objective magnification)光学系统把标本放大多少倍不能,仍受光学与传感器限制
MPP(采样间距)组织上相邻像素中心相隔多远不能单独代表光学分辨能力,但适合约定物理尺度
光学分辨率(optical resolving power)多近的两个结构仍可被区分更直接关乎可分辨细节,仍依赖成像条件
屏幕显示倍率 / 数字缩放图像在屏幕上看起来有多大不能;放大显示不会增加原始信息

两个“40×”文件的实际 MPP 未必相同;一个 MPP 更小的文件,也未必包含更多真实可辨认的组织细节。 扫描系统可能使用不同的光学、相机像素和图像处理流程。OpenSlide 官方甚至明确提示,其记录的 objective-power 与 MPP 元数据可能缺失或不准确。[2]

因此,分析跨中心/跨扫描仪数据时,应优先核查物理标定与成像质量,不要仅按“20×/40×”文字标签分组。

3. 为什么屏幕上看起来一样大的图像,组织范围会不同?​

假设屏幕上并排显示三个均为 512 × 512 像素的图块,它们在实际数据中的 MPP 分别为 0.25、0.50 和 1.00 µm/pixel:

相同像素数量的图块在不同 MPP 下的视野比较

图 2|相同 512 × 512 像素数下的不同观察尺度。三幅图显示尺寸相同,但依次覆盖 128 × 128、256 × 256 和 512 × 512 µm 的真实组织范围。蓝色圆形仅表示一个假想直径为 40 µm 的结构,随着 MPP 增大,其占用像素数减少;不是病理细胞实拍。来源:JHT Med 原创合成示意图,数值按本文公式计算。

这解释了一个常见的模型输入陷阱:把所有图块统一 resize 成 224 × 224 或 512 × 512,并不意味着它们拥有相同的组织学观察尺度。 如果输入原始视野不同,缩放到相同张量维度后,模型看到的细胞大小、组织上下文仍然不同;如需跨扫描仪比较,应该报告输入前的物理视野与目标 MPP。

三、金字塔层级之间如何换算?​

1. 下采样系数与层级 MPP​

设最高分辨率层的 MPP 为 sx,0,sy,0s_{x,0},s_{y,0};第 ll 层相对于 Level 0 在横、纵方向的缩小系数为 dx,l,dy,ld_{x,l},d_{y,l},则:

sx,l≈sx,0 dx,l,sy,l≈sy,0 dy,l.s_{x,l}\approx s_{x,0}\,d_{x,l},\qquad s_{y,l}\approx s_{y,0}\,d_{y,l}.

对于宽高同比缩放的常见金字塔,简写为 sl≈s0dls_l\approx s_0d_l。例如 Level 0 = 0.25 µm/pixel,第 2 层相对缩小 4 倍,则第 2 层约为 1.0 µm/pixel。

若已知 W0×H0W_0\times H_0 和 Wl×HlW_l\times H_l,可分别估计 dx,l≈W0/Wld_{x,l}\approx W_0/W_l、dy,l≈H0/Hld_{y,l}\approx H_0/H_l。由于像素尺寸是整数、文件可能有取整和不同坐标规则,这些比例用于理解或近似换算;程序读取时应遵守对应库的坐标 API,精密测量要使用经核对的标定与坐标变换。[1]

2. 坐标是以哪一层为基准?​

处理 WSI 最常见的错误之一,是把不同层的像素坐标混用。

在 OpenSlide Python 中,read_region(location, level, size) 的参数含义是:[1]

  • location = (x, y):所取区域左上角在 Level 0 坐标系中的位置;
  • level:从哪一个金字塔层读取;
  • size = (width, height):输出区域在所选 level 的像素单位下有多宽、多高。

因此对于下采样系数 dld_l 的层级,一般有以下近似关系:

(xl,yl)≈(x0dl,y0dl),(w0,h0)≈(dlwl,dlhl).(x_l,y_l)\approx\left(\frac{x_0}{d_l},\frac{y_0}{d_l}\right),\qquad (w_0,h_0)\approx(d_lw_l,d_lh_l).

合成示例: 以 Level 0 的 (20,000, 12,000) 为左上角,在 d_2 = 4 的 Level 2 读取 512 × 512 像素,则:

  • 该位置大约对应 Level 2 坐标 (5,000, 3,000);
  • 读出的区域覆盖 Level 0 上约 2,048 × 2,048 像素;
  • 若 Level 0 的 MPP 为 0.25,覆盖约 512 × 512 µm 的组织范围;
  • (20,000, 12,000) 乘以 MPP 得到 5,000 µm、3,000 µm,是相对于当前图像 Level 0 原点的距离,不能自动视为玻片的绝对物理坐标。

扫描图像的原点、载玻片物理坐标原点、组织非空区域的边界,乃至不同切片间的配准坐标,都可能不同。涉及跨切片对齐、切除边缘定位、空间组学配准时,需要额外使用平移、旋转或更一般的几何变换;DICOM WSI 对像素矩阵和玻片坐标系也作了明确区分。[5, 6]

3. 指定“目标 MPP”与直接指定“层级”有什么区别?​

科研分析的目标经常是“所有切片都按 0.50 µm/pixel 提取”,而不是“所有切片都选 Level 1”。原因在于不同原始扫描文件的 Level 0 MPP、层级数量和下采样比例可能不同。

若源图的 Level 0 MPP 为 s0s_0,期望输出的 MPP 为 sts_t,在两个方向像素标定近似相同的条件下,理想的相对下采样系数为:

dtarget=sts0.d_{target}=\frac{s_t}{s_0}.

例如源图 s0 = 0.25、目标 st = 0.50,应在物理上约缩小 2 倍。若源图 s0 = 0.40,相同目标对应 d_target = 1.25,未必恰好存在这个原生金字塔层。

常见实现是选取合适的已有层,再按照需要重采样。应区分“原生采样间距”和“重采样后的输出像素间距”;插值能改变像素数量与间距,但不会重新采集丢失的光学信息。对于核分裂象等细微结构的识别,不能把单纯上采样当成提高真实分辨率。[1, 7]

四、观察尺度决定了能回答什么病理问题​

病理判读依赖的不是一个固定缩放倍数,而是观察对象的空间范围和细节要求:

观察重点需要看见什么尺度选择的逻辑过于局部或过于粗糙会怎样
全片与低倍全局标本整体、组织分布、病变范围、坏死和背景先保证足够大的物理视野单个小图块无法说明全片覆盖情况
中倍组织结构腺体、间质、浸润边界、病灶与周围组织关系在结构细节与上下文之间平衡只看细胞可能失去结构关系;过低分辨率又难分辨局部形态
高倍细胞细节细胞与细胞核形态、局部核分裂等需要较小 MPP 及足够的实际成像质量光学信息不足或下采样可能掩盖细节

这些只是任务驱动的概念分层,不是“某一 MPP 必然可以诊断某病”的临床阈值。实际需要的尺度取决于病变、染色、扫描质量与具体研究终点。

在 AI 研究中,多尺度输入往往有明确理由:高分辨率局部图块能呈现细胞形态,较大视野能保留组织关系,低分辨率全局图可帮助筛查候选区域。但模型能读取某个尺度,不代表它已经充分观察整张切片;多尺度和全覆盖是不同维度。采样数量、组织覆盖比例、背景排除、异常区域遗漏与结果稳定性,应在后续“全切片采样策略、组织覆盖与取样代表性”专题中单独评估。

五、实践:读取层级与 MPP,而不是猜测放大倍率​

下面的示例使用 OpenSlide Python。适用条件是已安装 OpenSlide 库及其 Python 绑定,且文件格式受所用版本支持;API 参考 OpenSlide Python 1.4.7 文档。[1]

# 一种安装方式;具体操作取决于系统、包管理器与本地环境
python -m pip install openslide-python openslide-bin

将以下内容保存为 inspect_wsi.py,以 python inspect_wsi.py /path/to/slide.svs 运行:

import math
import sys
import openslide

if len(sys.argv) != 2:
raise SystemExit("Usage: python inspect_wsi.py /path/to/slide.svs")

with openslide.OpenSlide(sys.argv[1]) as slide:
props = slide.properties
print("Level-0 dimensions:", slide.dimensions)
print("Vendor:", props.get(openslide.PROPERTY_NAME_VENDOR, "unknown"))
print("Objective (metadata only):",
props.get(openslide.PROPERTY_NAME_OBJECTIVE_POWER))

def read_positive_mpp(key):
raw = props.get(key)
try:
value = float(raw)
except (TypeError, ValueError):
return None
return value if math.isfinite(value) and value > 0 else None

mpp_x = read_positive_mpp(openslide.PROPERTY_NAME_MPP_X)
mpp_y = read_positive_mpp(openslide.PROPERTY_NAME_MPP_Y)
print("Level-0 MPP (x, y):", mpp_x, mpp_y, "µm/pixel")

for level, (dims, ds) in enumerate(
zip(slide.level_dimensions, slide.level_downsamples)
):
sx = mpp_x * ds if mpp_x is not None else None
sy = mpp_y * ds if mpp_y is not None else None
print(f"Level {level}: size={dims}, downsample={ds:.4g}, "
f"approx MPP=({sx}, {sy})")

# 示例:所给 (x, y) 必须是 Level 0 的坐标,size 属于 level 的像素单位。
# 只演示 API,不对任何未知切片假定病变位置或研究结果。
level = min(2, slide.level_count - 1)
region = slide.read_region((0, 0), level, (256, 256))
region.save("wsi_example_region.png")

这段脚本的预期作用是打印实际文件的层级与标定,并保存一个从 Level 0 原点取样的演示图块;它并没有保证该位置包含组织,也没有执行诊断。read_region 返回 RGBA 图像,保存时可能带透明背景。[1]

如果希望在 QuPath 中查看相同的关键标定信息,可在脚本编辑器执行以下 Groovy 片段(QuPath 官方脚本文档与像素标定 API):[8]

def server = getCurrentServer()
def cal = server.getPixelCalibration()
println "Image size: ${server.getWidth()} × ${server.getHeight()}"
println "Pixel width (µm): ${cal.getPixelWidthMicrons()}"
println "Pixel height (µm): ${cal.getPixelHeightMicrons()}"

如果尺寸返回 NaN、空值或明显不合理的数字,不能擅自以“40× = 0.25 µm/pixel”填补为已知事实。应先核查扫描仪记录、原始文件元数据及带有可信尺寸的参考物,再决定能否进行绝对尺度测量。QuPath 官方文档特别警告像素尺寸元数据可能缺失或错误,普通 PNG/JPEG 和部分 TIFF 的 DPI/打印分辨率也不能直接作为组织物理尺寸。[7, 8]

建议记录哪些尺度信息?​

为便于后续复现,研究图块至少记录:源切片标识、Level 0 宽高、原始 MPP_X/MPP_Y(包含缺失状态和来源)、读取层级或下采样系数、Level 0 起点、输出像素尺寸、输出 MPP 或物理视野、重采样方法。如果做跨切片 ROI 对齐,还应保存坐标变换和所使用的图像版本。这里的建议是可追溯分析记录,不是特定期刊的强制报告清单。

六、常见误解与适用边界​

  1. “Level 0 是最低分辨率。” 在 OpenSlide 的层级定义中恰好相反:Level 0 是最高分辨率;其他库可能使用不同层级标记,需按实际 API 解读。[1]
  2. “40× 就等于 0.25 MPP。” 只是常见的近似等效表述;跨设备比较以核验后的物理尺度为主,不能取代光学质量检查。[2, 5, 7]
  3. “统一成 512 像素的图块就统一了观察尺度。” 只有物理视野、MPP 与采样方式也一致时,才可以说取得了可比的观察尺度。
  4. “把粗层图像插值放大,就能看见更多细胞细节。” 插值不会恢复未采集或已丢失的信息。
  5. “同一金字塔层中的全部位置都有组织。” WSI 往往包含背景、空白或未扫描的范围;总像素矩阵与有效组织区域不能混为一谈。OpenSlide 可提供部分格式的非空区域边界信息,但这些字段不保证存在,仍需进行组织区域判定。[2]
  6. “像素坐标乘以 MPP,就得到玻片上的真实绝对位置。” 这个换算只解决局部轴向尺度;绝对玻片坐标还涉及图像原点、方向以及可能的扫描和配准变换。[5, 6]
  7. “越小的 MPP,总能改善模型性能。” 更密集的像素采样可能提高细节表示,也会增加计算成本;收益受光学分辨能力、任务性质、数据质量及训练分布限制,必须实际验证。

特别注意:本文把图像平面视作可用近似恒定的二维像素标定描述。对于非均匀扫描变形、复杂拼接误差、多个焦平面或空间组学跨模态配准,这一近似可能不够,应引入更完整的几何与成像模型。

关联知识​

当前项目的 ARTICLE_INDEX.md 尚无已确认正式发布的文章,所以本篇不添加无法核实的文章内链。后续最值得衔接的知识点(按 KNOWLEDGE_MAP.md)包括:

  • 数字切片格式、元数据与标准化交换(理解 SVS、OME-TIFF、DICOM WSI 等如何表示尺度)。
  • 数字切片的区域读取、查看与导出:以 OpenSlide 和 QuPath 为例(将坐标与尺度落实为操作)。
  • 切块、图像尺度与坐标映射;全切片采样策略、组织覆盖与取样代表性(研究数据如何构建)。
  • 多分辨率与层级 WSI 建模(把不同组织学尺度引入模型)。

这些只是候选关联主题,不是已发布文章或链接。

参考资料​

以下资料以官方标准、项目维护者文档及可查证研究为主。软件 API 与格式说明适用于所引页面的文档版本;用于科研时仍需结合本机安装版本核对。

  1. OpenSlide Project. OpenSlide Python Documentation, version 1.4.7. 官方 API 文档。用于确认 Level 编号、level_dimensions、level_downsamples、read_region 坐标及参数语义。

  2. OpenSlide Project. List of Known Properties. 官方属性文档。明确 openslide.mpp-x/y、openslide.objective-power 及缺失/准确性限制。

  3. Open Microscopy Environment. OME-TIFF specification, OME Data Model and File Formats 6.2.2. 官方规范。说明 OME-TIFF 多分辨率与子分辨率层。

  4. Open Microscopy Environment. OME-XML schema documentation, OME-2016-06. 官方模式说明。核对 Pixels.PhysicalSizeX、PhysicalSizeY 及其单位;这些字段为可选项。

  5. DICOM Standards Committee. DICOM Whole Slide Imaging. DICOM 官方专题。说明 WSI 典型像素量、0.25/0.5 µm/pixel 的近似等效倍率和空间坐标背景。

  6. DICOM Standards Committee. DICOM PS3.3 — Whole Slide Microscopy Image Module, Section C.8.12.4. 标准正文。涉及 Total Pixel Matrix 与 Slide Coordinate System 的相关属性及几何约定。

  7. QuPath Project. Images: Pixel size, resolution & magnification, QuPath 0.7.0 documentation. 官方概念文档。说明像素标定、数字缩放与物理分辨率的区别及元数据校验要求。

  8. QuPath Project. Scripting overview: Accessing image metadata, QuPath documentation. 官方脚本文档。用于核对 getPixelCalibration() 与 getPixelWidthMicrons()、getPixelHeightMicrons() 的用法。

  9. DICOM Standards Committee. DICOM PS3.3 — Basic Pixel Spacing Calibration Macro, Section 10.7.1.3. 标准正文。核对 Pixel Spacing 的两个数值顺序及单位。


文章状态:AI 辅助编写,尚未经人工核验;合成示例与原创图仅用于解释原理,不是实际切片、医学研究结果或临床诊断依据。