如何为使用 python 保存的 tiff 图像设置像素大小,以便将像素高度和宽度设置为 ImageJ 中的特定值?

Posted

技术标签:

【中文标题】如何为使用 python 保存的 tiff 图像设置像素大小,以便将像素高度和宽度设置为 ImageJ 中的特定值?【英文标题】:How can pixel size be set for tiff images saved using python so that the pixel height and width are set to particular values in ImageJ? 【发布时间】:2021-12-04 10:18:36 【问题描述】:

有许多方法 PIL、opencv、tifffile 等 可用于从 numpy 数组创建 tiff 图像文件。如何为使用python保存的tiff图像设置像素大小,以便像素高度和宽度在ImageJ中具有特定值?

在 ImageJ 中打开 tiff 图像时,Ctrl+Shift+P 打开图像属性窗口,例如:

有 tiff 标签,包括 XResolution、YResolution、ResolutionUnit、PixelXDimension、PixelYDimension 等。如果有的话,哪些可以用来设置保存图像的属性,以便 ImageJ 使用指定的像素宽度和高度?哪些包允许在保存过程中设置此类标签?

【问题讨论】:

这些参数在 ImageJ 中有什么作用? 如果单位是像素,那么像素宽度 = 像素高度 =1。如果单位是英寸,则像素大小可能是以每英寸像素为单位的倒置分辨率。因此,如果所需的分辨率为 72 dpi,则像素宽度 = 像素高度 = 1/72 英寸/像素。 见github.com/cgohlke/tifffile/blob/… 【参考方案1】:

tifffile 的创建者 Christoph Gohlke 好心地教了我两件事:

    如果将 resolution 元组传递给 tifffile.imsave,

    tifffile 将设置 XResolution、YResolution 和 ResolutionUnit 标签。在 Jenny Folkesson 的 What is the best way to save image metadata alongside a tif? 的基础上,我添加了一个解析元组

    tifffile.imsave(
    my_tiff,
    float64_im.astype('float32'),
    ijmetadata=ijmetadata,
    description=description,
    extratags=extra_tags,
    resolution=(1/pixel_pitch_in_cm, 1/pixel_pitch_in_cm, 'CENTIMETER'))
    

    ImageJ 不会轻易打开具有 64 位浮点数据的 tiff。解决方法是将图像转换为“float32”,然后再将其传递给 tifffile.imsave。

【讨论】:

以上是关于如何为使用 python 保存的 tiff 图像设置像素大小,以便将像素高度和宽度设置为 ImageJ 中的特定值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中保存与输入 tiff 完全相同尺寸的 tiff 背景图像

如何为每个数组保存一个图像

使用 numpy 在 Python 中处理 TIFF(导入、导出)

如何将 tiff 图像保存到新的 npy 文件中?

如何在 Python OpenCV 中读取 TIFF 图像的 alpha 通道?

无法使用 Java ImageIO 标准库读写 TIFF 图像文件