簡體   English   中英

如何正確地將 RGB 圖像轉換為漂亮的格式?

[英]How to correctly convert RGB images into nifty format?

我有 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 可以正確顯示來自版本 2的彩色 NIfTI 圖像——我猜它們遵循這種格式。

看來您可以通過將它們轉換為自定義數據類型來創建 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 可以通過右鍵單擊左側面板上的圖像名稱並選擇選項來處理此類圖像:Multi-Component Display -> RGB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM