如何为使用 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(导入、导出)