久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于SimpleITK_iamcfb_的博客-CSDN博客

 ramdisk 2020-11-28

關(guān)于SimpleITK

iamcfb_ 2019-01-22 20:13:15

隨著最近幾大肺部圖像處理相關(guān)的競賽的推出,,如LUNA16,、Kaggle Data Science Bowl,AI領(lǐng)域的科研人員對(duì)肺部CT圖像變得越來越熟悉,,尤其是DICOM序列,,以及這些競賽官方所提供的mhd數(shù)據(jù)格式。

ITK是一個(gè)功能很強(qiáng)大的醫(yī)學(xué)圖像處理公開庫,,搭配VTK用以顯示圖像,,可以實(shí)現(xiàn)幾乎所有醫(yī)學(xué)圖像處理的功能需要。ITK通常以C++包進(jìn)行提供,,當(dāng)然也可以自己編譯為Python包,,不過編譯過程比較繁瑣耗時(shí),而且很容易踩坑,。但I(xiàn)TK官方進(jìn)行的Python封裝SimpleITK,,則直接可以拿來使用;雖然有部分ITK的功能沒有包含,,但已基本夠用了,。我們?cè)谔幚磲t(yī)學(xué)圖像時(shí),使用的基本都是SimpleITK,。

本文就簡單總結(jié)一下我們?cè)谔幚磉@些圖像時(shí)的經(jīng)驗(yàn),,以便備忘,并為后來者參考,。

1.讀取文件

讀取DICOM序列

醫(yī)學(xué)圖像中一個(gè)CT序列包含很多張圖片,,即一個(gè)case包含許多slice,,使用SimpleITK可以直接讀取一個(gè)序列,并方便地得到各種參數(shù),,將圖像數(shù)據(jù)轉(zhuǎn)換成numpy Array:

  1. import SimpleITK as sitk

  2. import numpy as np

  3. reader = sitk.ImageSeriesReader()

  4. dicom_names = reader.GetGDCMSeriesFileNames(case_path)

  5. reader.SetFileNames(dicom_names)

  6. image = reader.Execute()

  7. image_array = sitk.GetArrayFromImage(image) # z, y, x

  8. origin = image.GetOrigin() # x, y, z

  9. spacing = image.GetSpacing() # x, y, z

需要注意的是,,SimpleITK讀取的圖像數(shù)據(jù)的坐標(biāo)順序?yàn)閦yx,即從多少張切片到單張切片的寬和高,;而據(jù)SimpleITK Image獲取的origin和spacing的坐標(biāo)順序則是xyz,。這些需要特別注意。

讀取DICOM單張圖片

可以將一個(gè)DICOM序列作為一個(gè)整體一次讀入,,也可以一張一張地讀入每張切片:

  1. import SimpleITK as sitk

  2. import numpy as np

  3. image = sitk.ReadImage(slice_path)

  4. image_array = sitk.GetArrayFromImage(image) # z, y, x

這里需要注意的除了坐標(biāo)順序是zyx之外,,還需注意,即使讀取單張切片,,所得到的結(jié)果也是3維的,,只不過第一維是1。

讀取mhd文件

涉及DICOM序列時(shí),,為了傳輸方便(從上百個(gè)dcm文件到一個(gè)mhd文件),,很多情況下以mhd文件格式進(jìn)行呈現(xiàn),不過mhd文件只是一個(gè)很小的包含數(shù)據(jù)信息的文件,,同時(shí)搭配的通常還有一個(gè)二進(jìn)制的數(shù)據(jù)文件(格式為raw或zraw等),。使用SimpleITK讀取這種文件也比較方便。

  1. import SimpleITK as sitk

  2. import numpy as np

  3. image = sitk.ReadImage(mhd_path)

  4. image_array = sitk.GetArrayFromImage(image) # z, y, x

  5. origin = image.GetOrigin() # x, y, z

  6. ...

有時(shí)候不想整個(gè)讀取數(shù)據(jù)(因?yàn)楸容^大,,讀取處理比較慢),,想要讀取的只是一些基本信息,比如origin,、spacing等等,。這時(shí)可以只讀取mhd文件,據(jù)此獲取信息,,讀取方法比較簡單,,不再贅述。

2.處理文件

處理DICOM文件主要有插值等操作,,可以直接使用SimpleITK(或者說是ITK)的相關(guān)函數(shù),,并通過pipeline結(jié)構(gòu)進(jìn)行處理。

插值

  1. import SimpleITK as sitk

  2. reader = sitk.ImageSeriesReader()

  3. dicom_names = reader.GetGDCMSeriesFileNames(case_path) reader.SetFileNames(dicom_names)

  4. image = reader.Execute()

  5. resample = sitk.ResampleImageFilter()

  6. resample.SetOutputDirection(image.GetDirection())

  7. resample.SetOutputOrigin(image.GetOrigin())

  8. newspacing = [1, 1, 1]

  9. resample.SetOutputSpacing(newspacing)

  10. newimage = resample.Execute(image)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多