如何正确地将RGB图像转换成漂亮的格式?



我有RGB图像,我加载为numpy数组。我想把这些图像转换成漂亮的格式,我可以使用ITK-SNAP (http://www.itksnap.org/pmwiki/pmwiki.php)打开。

这是我尝试做的:

import nibabel as nib 
import numpy as np
x = load_jpg_image(filename='input.jpg')  # --> x is a numpy array containing the RGB image with shape (128, 128, 3) 
img = nib.Nifti1Image(x, eye(4)) 
nib.save(img, filename='output.nii')

然而,ITK-SNAP将output.nii解释为3D灰度体而不是RGB图像。对我来说,似乎ITK-SNAP应该能够处理RGB数据(见此);然而,我不明白我应该如何保存img使这成为可能。我使用的是ITK-SNAP 3.6.0。

不幸的是,NIfTI从未真正过度开发RGB图像。你可以在最新的NIfTI2规范中看到,RGB和RGBA体素类型被定义(RGB每像素3个字节,RGBA 4个字节),但我不知道有任何工具可以处理这些图像。

与您的情况的不同之处在于,图像的尺寸是像素的数量,颜色通道是在像素内。它看起来像ITK-snap显示彩色NIfTI图像从版本2正确-我猜他们遵循这个格式。

似乎你可以通过自定义dtype来创建RGB图像:

import nibabel as nib 
import numpy as np
RGB_DTYPE = np.dtype([('R', 'u1'), ('G', 'u1'), ('B', 'u1')])
x = load_jpg_image(filename='input.jpg')  # --> x is a numpy array containing the RGB image with shape (128, 128, 3) 
# cast to custom type:
x = x.copy().view(dtype=RGB_DTYPE)  # copy used to force fresh internal structure
img = nib.Nifti1Image(x, eye(4)) 
nib.save(img, filename='output.nii')

ITK-SNAP可以通过右键单击左侧面板上的图像名称并选择选项来处理这种类型的图像:多组件显示->RGB .

最新更新