mha格式的CT體數據轉爲jpg切片

mha格式的CT體數據轉爲jpg切片

mha格式

.mha文件是一種體數據的存儲格式,由一個描述數據的頭和數據組成,通常咱們拿到的原始醫學影像的數據是.dcm也就是dicom文件,dicom文件很複雜包含了各類各樣的標籤,一般咱們只關心dicom裏的影像信息,因此通常會把多個dicom切片轉成一個文件,例如.mha .mhd文件,這些文件裏只包含簡單的描述信息和體數據信息,便於處理。.mha的文件的樣子以下圖python

mha文件

上半部分是關於數據的介紹,例如數據的維數,體素的真實的大小,數據的存儲的類型等,下面的XXX等,就是數據部分了,ElementType就解釋了下面的數據是一個一個Short類型的數,一共51251258個Short類型的數。
.mhd文件和.mha文件類型,不過.mha文件通常分爲.mhd文件和.raw文件,至關於.mha文件的兩部分,一部分是描述信息,一部分是純數據文件。git

窗寬窗寬

通常CT值在-1000~+1000範圍內,有2000多個級別,而通常顯示器能顯示出256個級別(灰度圖0-255),因此不能展示出全部信息(就算能夠,人眼也分辨不了),因此須要定一個範圍,例如在以40爲中心,400爲寬度的範圍內,展現圖像信息,即-160~240之間的CT值要顯示出來,低於-160都算做-160,高於240的都算做240,即把-160~240映射到0~255,這樣設置不一樣窗位和窗寬就能展現不一樣組織的信息(不一樣組織的CT值不一樣)。github

將.mha轉換成jpg切片

下面將利用opencv和simpleitk,將.mha文件轉爲一組jpg文件。windows

import SimpleITK as sitk
import numpy as np
import cv2
import os

def mha2jpg(mhaPath,outFolder,windowsCenter,windowsSize):
    
    """
    The function can output a group of jpg files by a specified mha file.
    Args:
        mhaPath:mha file path.
        outfolder:The folder that the jpg files are saved.
        windowsCenter:the CT windows center.
        windowsSize:the CT windows size.
    Return:void

    """
    image = sitk.ReadImage(mhaPath)
    img_data = sitk.GetArrayFromImage(image)
    channel = img_data.shape[0]

    if not os.path.exists(outFolder):
        os.makedirs(outFolder)


    low = windowsCenter-windowsSize/2
    high = windowsCenter+windowsSize/2

    for s in range(channel):
        slicer = img_data[s,:,:]
        slicer[slicer<low] = low
        slicer[slicer>high] = high
        slicer = slicer-low
        img = cv2.normalize(slicer, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
        cv2.imwrite(os.path.join(outFolder,str(s)+'.jpg'),img)

def main():
    mha = input("Enter the mha path:")
    out = input("Enter the out folder:")
    wc = int(input("Enter the windows center:"))
    ws = int(input("Enter the windows size:"))
    mha2jpg(mha,out,wc,ws)



if __name__ == "__main__":
    main()

結果

這裏隨機選取了兩張張轉換後的切片,分別選擇不一樣窗寬的窗位,能夠獲得下圖學習

窗寬窗位1 窗寬窗位1

計劃

博主正在學習醫學影像處理相關方面的技能和知識,新開了一個git,會把以爲有用的可複用的代碼丟進去,剛剛起步,目前還比較空
https://github.com/MangoWAY/medicalImageScriptDemocode

相關文章
相關標籤/搜索