使用tifffile库保存带颜色映射的TIFF堆栈遇形状错误求助
使用tifffile保存带颜色映射的TIFF堆栈问题解决
问题描述
有5个TIFF堆栈,希望为每个堆栈设置不同的颜色通道,使用tifffile库的colormap参数保存时,抛出ValueError: invalid colormap shape错误。红色通道的代码如下:
tifffile.imwrite( Path(tif_output_store, name + ".tif"), np.moveaxis(tf, -1, 0).astype(np.uint16), imagej=True, compression ='zlib', metadata=ijmetadata, colormap=np.vstack([255, 0, 0]).astype('uint16') * 256 )
正确的colormap形状及修正方案
tifffile要求colormap参数的形状为**(N, 3)或(N, 4)**,其中N是颜色映射的级数(通常取256,对应0-255的灰度范围)。每行代表对应灰度值的RGB(或RGBA)颜色值,且当保存为ImageJ格式的16位TIFF时,颜色值需要乘以256(将0-255的8位值转换为0-65535的16位值)。
以红色通道为例,正确的colormap创建方式是生成256行,每行均为[255, 0, 0]的数组,修正后的代码如下:
import numpy as np from pathlib import Path import tifffile # 创建256级红色颜色映射 red_colormap = np.full((256, 3), [255, 0, 0], dtype=np.uint16) * 256 tifffile.imwrite( Path(tif_output_store, name + ".tif"), np.moveaxis(tf, -1, 0).astype(np.uint16), imagej=True, compression='zlib', metadata=ijmetadata, colormap=red_colormap )
同理,其他颜色通道可修改full函数的颜色值:
- 绿色通道:
np.full((256, 3), [0, 255, 0], dtype=np.uint16) * 256 - 蓝色通道:
np.full((256, 3), [0, 0, 255], dtype=np.uint16) * 256
关于你找到的Stack Overflow帖子
你提到的那篇帖子需要大量编码实现颜色映射,但实际上通过tifffile原生的colormap参数就能更简便地完成需求,只要保证colormap的形状和数值格式符合要求即可。
内容的提问来源于stack exchange,提问作者Nephilim700
相关产品推荐
相关产品推荐

