如何创建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)
关键修改点
修正元数据变量名错误
你定义的元数据字典是panorama_metadata,但保存时传入的是metadata,这直接导致设置的元数据完全没生效。把metadata=metadata改成metadata=panorama_metadata。添加物镜放大倍数元数据
QuPath需要明确的物镜放大倍数信息才能识别“放大倍数”选项,在panorama_metadata中添加:"ObjectiveLensPower": 20, # 替换为你的实际物镜倍数,比如10、20、40等确保OME-TIFF格式规范
你保存的是.ome.tif,但需要启用tifffile的OME格式支持,在tif.save()中添加ome=True,让QuPath更好地识别OME标准的元数据。补充物理尺寸校准信息(可选)
虽然你设置了分辨率,但补充更直观的物理尺寸字段能提升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
相关产品推荐
相关产品推荐

