这项基准测试究竟证明了什么?
它证明的是:一个有名有姓的文件,来自一台有名有姓的扫描仪,以其真实大小,能在正式发布的版本中打开并在屏幕上显示像素。不多也不少。格式支持列表声称具备某种能力;而这项测试是在度量这种能力。如果某种厂商布局让解码器失败,该文件会连同用户将看到的错误信息一起出现在失败表中,而不是被悄悄略去。
这是一项厂商自测——软件是我们写的,测试也是我们做的。它之所以仍然值得一读,是因为您可以核查:语料库是公开的,运行脚本在我们的桌面端代码仓库中,而且逐文件原始结果就在本页。
格式支持表通常只是有人随手列出的一串扩展名,而这张表是实测结果。涵盖 14 个格式家族的每一个文件——共 44.1 GB 的厂商扫描和公开参考图像——都由正式发布的 SlideScope 加载器打开并渲染,每个文件使用一个可牺牲的子进程,并记录结果。767 个成功打开。9 个无法读取,下文列出了它们的名称。16 个实际上根本不含图像。没有一个导致查看器崩溃。
它证明的是:一个有名有姓的文件,来自一台有名有姓的扫描仪,以其真实大小,能在正式发布的版本中打开并在屏幕上显示像素。不多也不少。格式支持列表声称具备某种能力;而这项测试是在度量这种能力。如果某种厂商布局让解码器失败,该文件会连同用户将看到的错误信息一起出现在失败表中,而不是被悄悄略去。
这是一项厂商自测——软件是我们写的,测试也是我们做的。它之所以仍然值得一读,是因为您可以核查:语料库是公开的,运行脚本在我们的桌面端代码仓库中,而且逐文件原始结果就在本页。
每个文件都交给一个可牺牲的子进程处理,该子进程构建与应用程序相同的加载器,读取图像尺寸,解码一个平面,并通过查看器所用的同一 Qt 渲染路径进行转换。如果一个格式错误的文件导致原生编解码器中止,被终止的只是那个子进程;监控进程会记录当时正在处理的文件并继续运行。正是这种设计,才让一项涉及数 GB 厂商扫描的基准测试得以完成,也让“崩溃”这一类别能如实报告为零。
slidescope-desktop/scripts/publish_format_benchmark.py——SlideScope 桌面端代码仓库中的一条命令,运行全部三轮测试,并写出本页所渲染的那份 JSON:python scripts/publish_format_benchmark.py --dataset <corpus> --output format-benchmark.jsonczitools 和 nd2 库的测试数据,以及我们已对照发布方核验过 sha256 的厂商样本。这些是扫描仪格式——来自 Aperio、Hamamatsu、3DHISTECH、Leica、Ventana、Akoya 或 Agilent 仪器的文件,通常有好几 GB。
| 格式 | 文件数 | 已打开 | 结果 | 最大图像 | 最大文件 | 可达维度 | 像素类型 |
|---|---|---|---|---|---|---|---|
.avs Agilent ARGOS AVS |
2 | 2 | 全部打开 | 130,546 × 57,440 (7499 MP) | 439 MB | 单平面 | uint8 |
.bif Ventana BIF |
2 | 1 | 1 个无法读取 | 114,943 × 76,349 (8776 MP) | 2.5 GB | 单平面 | uint8 |
.mrxs 3DHISTECH MIRAX |
6 | 6 | 全部打开 | 109,240 × 220,696 (24109 MP) | 72 KB | 单平面 | uint8 |
.ndpi Hamamatsu NDPI |
5 | 5 | 全部打开 | 211,200 × 95,744 (20221 MP) | 4.2 GB | 单平面 | uint8 |
.qptiff Akoya QPTIFF |
2 | 2 | 全部打开 | 30,720 × 26,640 (818 MP) | 1.9 GB | 5C | uint8 |
.scn Leica SCN |
3 | 1 | 2 个无法读取 | 53,130 × 153,470 (8154 MP) | 2.8 GB | 单平面 | uint8 |
.svs Aperio SVS |
7 | 7 | 全部打开 | 96,999 × 45,667 (4430 MP) | 671 MB | 单平面 | uint8 |
.vms Hamamatsu VMS |
3 | 3 | 全部打开 | 143,360 × 101,888 (14607 MP) | 1 KB | 单平面 | uint8 |
多维采集格式,这里值得关注的不是文件大小,而是有多少通道、Z 平面和时间点能完整显示到屏幕上。
| 格式 | 文件数 | 已打开 | 结果 | 最大图像 | 最大文件 | 可达维度 | 像素类型 |
|---|---|---|---|---|---|---|---|
.czi Zeiss CZI |
48 | 48 | 全部打开 | 6,000 × 6,000 (36 MP) | 4.2 GB | 8C · 56Z · 10T | uint16, uint8 |
.dcm DICOM |
378 | 362 | 16 个不含图像 | 77,687 × 73,366 (5700 MP) | 1.2 GB | 137Z | int16, uint16, uint8 |
.dicom DICOM |
1 | 1 | 全部打开 | 512 × 512 (0 MP) | 514 KB | 单平面 | uint16 |
.ims Imaris IMS |
17 | 11 | 6 个无法读取 | 4,096 × 4,096 (17 MP) | 946 MB | 3C · 98Z · 10T | uint16, uint8 |
.lif Leica LIF |
3 | 3 | 全部打开 | 1,024 × 1,024 (1 MP) | 2.8 GB | 5C · 5T | uint16, uint8 |
.nd2 Nikon ND2 |
82 | 82 | 全部打开 | 2,400 × 2,400 (6 MP) | 376 MB | 5C · 35Z · 288T | uint16, uint8 |
.tif TIFF / OME-TIFF |
200 | 200 | 全部打开 | 17,927 × 20,273 (363 MP) | 1.0 GB | 8C · 10Z · 43T | float32, int8, uint8 |
.tiff TIFF / OME-TIFF |
33 | 33 | 全部打开 | 45,056 × 35,840 (1615 MP) | 2.5 GB | 3C · 38Z · 7T | float32, int8, uint8 |
792 个文件中有 25 个未能打开,但它们分属两种情况,而非一种。9 个是真正的局限:确实是图像,但我们目前无法读取。另外 16 个文件本来就不含图像,拒绝打开才是正确的做法。把两者混为一谈只会美化我们的成绩——本次运行如实的失败数是 9,而不是 25。
这些文件全部完好无损——校验和与发布方一致——因此这些是解码器和厂商布局方面的局限,而不是样本损坏。它们会作为回归测试永久保留在语料库中,这样一旦其中某个文件开始能够打开,我们就会知道。
| 文件 | 大小 | 错误 | SlideScope 向用户显示的信息 |
|---|---|---|---|
.bif Ventana-1.bif |
217 MB | ImageLoadError | 此切片使用了 OpenSlide 后端无法打开的厂商布局。文件本身并未损坏。 |
.ims Convallaria_3C_10T_confocal_IMS3.ims |
68 MB | ImageLoadError | 此 .ims 文件不是 SlideScope 支持的基于 HDF5 的 Imaris 格式。较旧的、HDF5 之前的 Imaris 导出文件(有时称为 "Imaris Classic")使用不同的容器,目前不受支持。 |
.ims Convallaria_3C_1T_2x2grid_confocal_IMS3.ims |
23 MB | ImageLoadError | 此 .ims 文件不是 SlideScope 支持的基于 HDF5 的 Imaris 格式。较旧的、HDF5 之前的 Imaris 导出文件(有时称为 "Imaris Classic")使用不同的容器,目前不受支持。 |
.ims Convallaria_3C_1T_confocal_IMS3.ims |
8 MB | ImageLoadError | 此 .ims 文件不是 SlideScope 支持的基于 HDF5 的 Imaris 格式。较旧的、HDF5 之前的 Imaris 导出文件(有时称为 "Imaris Classic")使用不同的容器,目前不受支持。 |
.ims Convallaria_3C_3T_2x2grid_confocal_IMS3.ims |
66 MB | ImageLoadError | 此 .ims 文件不是 SlideScope 支持的基于 HDF5 的 Imaris 格式。较旧的、HDF5 之前的 Imaris 导出文件(有时称为 "Imaris Classic")使用不同的容器,目前不受支持。 |
.ims Convallaria_3C_3T_35Z_confocal_deconvolved_IMS3.ims |
661 MB | ImageLoadError | 此 .ims 文件不是 SlideScope 支持的基于 HDF5 的 Imaris 格式。较旧的、HDF5 之前的 Imaris 导出文件(有时称为 "Imaris Classic")使用不同的容器,目前不受支持。 |
.ims TransFactors_2C_SRRF_IMS3.ims |
26 MB | ImageLoadError | 此 .ims 文件不是 SlideScope 支持的基于 HDF5 的 Imaris 格式。较旧的、HDF5 之前的 Imaris 导出文件(有时称为 "Imaris Classic")使用不同的容器,目前不受支持。 |
.scn Leica-Fluorescence-1.scn |
21 MB | ImageLoadError | 此切片使用了 OpenSlide 后端无法打开的厂商布局。文件本身并未损坏。 |
.scn Leica-3.scn |
2.8 GB | ImageLoadError | 此切片使用了 OpenSlide 后端无法打开的厂商布局。文件本身并未损坏。 |
规律在于厂商布局,而非成像模态。荧光 NDPI 和荧光 MIRAX 都能正常打开;被后端拒绝的是特定的结构变体——没有可识别主图像的 SCN、带有意外方向属性的 BIF、HDF5 之前的 "Imaris Classic" 容器。每条提示信息都会指明原因,而不是称文件已损坏,因为在所有这些情况下,文件本身没有问题,是我们做不到。
DICOM 既是图像格式,也是文档格式。DICOMDIR 是光盘的索引;呈现状态(presentation state)记录了某人当时如何为一项检查调窗;其他对象则保存报告或测量结果。它们都不含像素。查看器即使打开它们也没有东西可显示,因此 SlideScope 会拒绝打开并给出说明——这是正确的行为,我们将其单独计数,这样它就不会虚增任何一栏的数字。
完整列出名称,没有任何内容隐藏在类别之后:DICOMDIR、PS_0026、PS_0108、PS_0128、PS_0154、PS_0181、XX_0027、XX_0109、XX_0155、XX_0182、XX_0183。
这是最重要的失败模式,也是格式支持表从不承认的一种,所以下面是我们的案例。
一个多重标记的 Akoya .qptiff 扫描——Vectra 七色参考文件——打开时没有任何错误。该文件包含五个全分辨率单通道荧光页面(DAPI、FITC、CY3、Texas Red、CY5),尺寸为 34,560 × 24,960,共 33 页,这一点已用 tifffile 独立确认。SlideScope 把所有 .qptiff 都交给其 OpenSlide 后端处理,而那是一个明场读取器,因此它只报告了一个通道并返回了一个 RGB 切面。荧光通道无法访问,通道控件也无可调节。
没有任何警告。同一语料库中的明场 H&E QPTIFF 扫描都能完美打开,这恰恰是问题一直未被察觉的原因。
已在 SlideScope 1.8.48(2026 年 9 月 18 日)中修复:现在按文件而不是按扩展名选择后端。多重标记扫描交给能返回全部五个通道的读取器;明场 QPTIFF 仍使用 OpenSlide 及其全分辨率分块。我们如实说明其中的取舍:多重标记 QPTIFF 以降低的分辨率显示,文件详情面板也会注明这一点。本页的运行结果已反映该修复——QPTIFF 一行列出了两个加载器和五个通道。
本次运行证明的是能够打开。像素是否正确是另一个问题,我们会单独测试:第二轮扫描会通过底层库解码相同的平面,并与加载器返回的结果进行比较。QPTIFF 的问题正是这样发现的。
SlideScope 没有通用的兜底读取器,而查看器如何处理它本不支持的文件,与它如何处理支持的文件同样重要。我们从参考语料库中为每种不支持的扩展名各取最小的真实文件——共 93 个——逐一交给正式发布的加载器工厂处理。
93 个文件全部被拒绝,并给出了清晰的提示。没有一个崩溃。没有一个被打开一半、看似图像实则不是。列表中包括人们很可能会尝试打开的格式——.jpg、.lof、.nii、.oib、.oir、.png、.psd、.raw、.vsi——在本次运行时,其中包括 .png 和 .jpg,它们被拒绝并给出提示,而不是被猜测着打开。
自本次运行以来:SlideScope 1.10.0(2026 年 10 月 16 日)新增支持 18 种格式,包括此处被拒绝的几种:Olympus .vsi、.oib 和 .oir,Leica .lof 和 .xlef,Hamamatsu .ndpis,以及 PNG、JPEG 和其他常见图像。本页的数字是 9 月 18 日运行的实测结果;1.10.0 中新增的格式不在其中。SlideScope 1.20.0 又能打开本次运行未测试的五种格式:Philips .isyntax、KFBio .kfb、ICS/IDS、Gatan .dm3 和 .dm4,以及 Olympus .sis。最新列表请参阅文件兼容性参考。
.vmu 或 .svslide 样本——OpenSlide 两者都没有公布——因此这些加载器只经过合成边界用例的测试。我们不声称已对它们进行过测试支持。十八种文件扩展名:.svs、.ndpi、.mrxs、.scn、.bif、.vms、.vmu、.svslide、.qptiff、.avs、.czi、.nd2、.lif、.ims、.dcm、.dicom、.tif 和 .tiff。没有通用的兜底读取器——列表之外的任何文件都会被拒绝并给出简明提示,而不是被勉强打开。
不是。这是 SlideScope 发布的关于 SlideScope 的测试,因此请将其视为厂商自测,而非第三方审计。我们无法提供独立性,但可以提供可核查性:语料库是公开的,运行脚本在我们公开的脚本目录中,原始结果文件在本页有链接,失败案例与成功案例列出得同样详细。
几乎都是因为厂商写入了底层开源后端无法读取的布局——例如 OpenSlide 对一个荧光 SCN 报告 "Can't find main image"。这些是上游的局限,我们选择公开而不是隐藏。失败的文件完好无损:它们的校验和与发布方的一致。
单凭这一点不能,所以我们两方面都测试。本次运行证明的是能够打开;像素是否正确则由 sweep_format_reference.py 单独证明,它通过底层库解码相同的平面,并与 SlideScope 渲染的结果进行比较。有一个已知案例——一个多重标记的 Akoya QPTIFF——打开时没有报错,却一直显示错误的内容,直到 SlideScope 1.8.48 修复了它。本页记录了这一案例。
可以。Open Microscopy Environment 参考语料库可公开下载,厂商样本来自 OpenSlide 以及各格式库自带的测试数据,运行脚本随 SlideScope 桌面端代码仓库提供。本页所有表格背后的原始 JSON 都已在上方提供链接。
没有。SlideScope 用于科研、教育和审阅。它不是诊断设备,不得用于做出初级诊断。
我们的语料库不是您的切片柜。安装 SlideScope,打开那些真正让您头疼的文件;如果其中某个文件失败,请发给我们——本页上的失败案例,正是因为有人这样做了才会出现在这里。