You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建TIFF使QuPath点击放大按钮时提示输入放大倍数?

QuPath打开TIFF时提示输入下采样因子而非放大倍数的解决方法

我用Python的tifffile库创建TIFF图像,元数据设置及代码如下。但在QuPath中打开生成的文件后,点击“0.01x”(放大倍数)按钮时,系统提示输入“downsampling factor(下采样因子)”而非“magnification(放大倍数)”。我知道这可能是图像未校准导致,但已经在元数据中提供了像素尺寸,请问要修改代码何处才能让系统提示输入放大倍数?

原代码

panorama_metadata = {
"MetaMorph": "no",
"BitsPerSample": "8",
"Orientation": "1st row - top; 1st column - left",
"TileWidth": self.tile_width,
"Compression": self.compression_method,
"PhotometricInterpretation": "YCbCr",
"ResolutionUnit": "micrometer",
"XResolution" : 1/285,
"YResolution" : 1/285,
"ReferenceBlackWhite": "0",
"NumberOfChannels": "3",
"SamplesPerPixel": "3",
"ImageWidth": total_pixels_in_cols,
"TileLength": self.tile_height,
"MetaDataPhotometricInterpretation": "RGB",
"SampleFormat": "unsigned integer",
"ImageLength": total_pixels_in_rows,
"PlanarConfiguration": "Chunky",
}

with TiffWriter(os.path.join(self.output_path,
self.slide_name + ".ome.tif"),
bigtiff=True) as tif:
                tif.save(data=self.get_numpy_arrays(number_of_columns,
                                                    number_of_rows,
                                                    max_folder_path),
                         shape=panorama_shape,
                         tile=(self.tile_height, self.tile_width),
                         dtype=numpy.uint8, photometric='rgb',
                         metadata=metadata)

关键修改点

  1. 修正元数据变量名错误
    你定义的元数据字典是panorama_metadata,但保存时传入的是metadata,这直接导致设置的元数据完全没生效。把metadata=metadata改成metadata=panorama_metadata。

  2. 添加物镜放大倍数元数据
    QuPath需要明确的物镜放大倍数信息才能识别“放大倍数”选项,在panorama_metadata中添加:

    "ObjectiveLensPower": 20,  # 替换为你的实际物镜倍数,比如10、20、40等
    
  3. 确保OME-TIFF格式规范
    你保存的是.ome.tif,但需要启用tifffile的OME格式支持,在tif.save()中添加ome=True,让QuPath更好地识别OME标准的元数据。

  4. 补充物理尺寸校准信息(可选)
    虽然你设置了分辨率,但补充更直观的物理尺寸字段能提升QuPath的识别准确性,在panorama_metadata中添加:

    "PhysicalSizeX": 0.285,  # 对应285纳米,即1/285微米
    "PhysicalSizeXUnit": "µm",
    "PhysicalSizeY": 0.285,
    "PhysicalSizeYUnit": "µm"
    

修正后的代码示例

import numpy as np
from tifffile import TiffWriter

# 假设self相关变量已定义
panorama_metadata = {
    "MetaMorph": "no",
    "BitsPerSample": "8",
    "Orientation": "1st row - top; 1st column - left",
    "TileWidth": self.tile_width,
    "Compression": self.compression_method,
    "PhotometricInterpretation": "YCbCr",
    "ResolutionUnit": "micrometer",
    "XResolution": 1/285,
    "YResolution": 1/285,
    "ReferenceBlackWhite": "0",
    "NumberOfChannels": "3",
    "SamplesPerPixel": "3",
    "ImageWidth": total_pixels_in_cols,
    "TileLength": self.tile_height,
    "MetaDataPhotometricInterpretation": "RGB",
    "SampleFormat": "unsigned integer",
    "ImageLength": total_pixels_in_rows,
    "PlanarConfiguration": "Chunky",
    # 添加物镜放大倍数
    "ObjectiveLensPower": 20,
    # 补充物理尺寸信息
    "PhysicalSizeX": 0.285,
    "PhysicalSizeXUnit": "µm",
    "PhysicalSizeY": 0.285,
    "PhysicalSizeYUnit": "µm"
}

with TiffWriter(os.path.join(self.output_path, self.slide_name + ".ome.tif"), bigtiff=True) as tif:
    tif.save(
        data=self.get_numpy_arrays(number_of_columns, number_of_rows, max_folder_path),
        shape=panorama_shape,
        tile=(self.tile_height, self.tile_width),
        dtype=np.uint8,
        photometric='rgb',
        metadata=panorama_metadata,  # 修正变量名
        ome=True  # 启用OME-TIFF格式
    )

内容的提问来源于stack exchange,提问作者Monalisha Bhowmik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:23:18