bat文件无法保存为ansi_数组矩阵和PNG保存为nii文件
生活随笔
收集整理的這篇文章主要介紹了
bat文件无法保存为ansi_数组矩阵和PNG保存为nii文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
nii文件或者nii.gz文件是一種特殊的文件格式,可以存儲疊加的切片數據或者時序數據,比如MRI頭部矢狀面掃描的所有切片,CT掃描圖,多細胞時移圖等等。對于nii文件的讀取和存儲也有許多的方法。
一般地,如果一個數組矩陣 ,想要保存成為nii文件:首先需要安裝SimpleITK庫或者nibabel庫,由于nibabel庫保存矩陣為nii文件時,會涉及到affine矩陣(一般的會設置為單位對角4*4矩陣),但是很多文件存儲的affine坐標是有格式和規定的,所以在不知道保存文件affine矩陣的情況下,用nibabel保存可能會有點麻煩。
nibabel庫詳解:
Neuroimaging in Python - NiBabel 3.1.1 documentation?nipy.orgSimpleITK庫詳解:
https://github.com/SimpleITK/SimpleITK?github.com這里選擇使用SimpleITK庫保存矩陣為nii文件:
import SimpleITK as sitknii_file = sitk.GetImageFromArray(anno_mat) # anno_mat 為一個矩陣,其維度必須是按照(樣本數*高度*寬度)排列 否則,保存的結果錯誤 sitk.WriteImage(nii_file,nii_path) # nii_path 為保存路徑這里需要特別注意保存的矩陣的維度排布。
接下來使用SimpleITK保存png圖片為nii文件:
png圖片的特點是4個通道,RGBA,最后一個通道是透明度,但是如果后續對保存的nii文件有和其他圖片進行overlay的需求,需要剔除最后一個A 通道,否則會出現問題。
這里使用PIL庫讀取PNG圖片:
from PIL import Image import numpy as npempt_mat=[] for i in png_path:img1=Image.open(i)img2=np.array(img1)[:,:,0:3] # 這里取png圖片的前三個通道,去除第四個透明通道 方便后續的nii文件的處理empt_mat.append(img2)emp=np.array(empt_mat) nii_file = sitk.GetImageFromArray(emp) # 此處的emp的格式為樣本數*高度*寬度*通道數 不要顛倒這些維度的順序,否則文件保存錯誤 sitk.WriteImage(nii_file,nii_path) # nii_path 為保存路徑注意丟棄PNG圖片的第四個通道
另外推薦一個3D slicer軟件,專門用于nii切片文件的后續處理,比如對切片特定區域的標記,分割等等操作。
https://www.slicer.org/?www.slicer.org總結
以上是生活随笔為你收集整理的bat文件无法保存为ansi_数组矩阵和PNG保存为nii文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dos中cd命令的使用说明
- 下一篇: openlayers 添加点线面 De