美文网首页LOW-DOSE CT DENOISING
python实现CT窗宽窗位的调整(即指定HU值保存图像)

python实现CT窗宽窗位的调整(即指定HU值保存图像)

作者: Carrie_Hou | 来源:发表于2018-06-23 23:21 被阅读0次

最近一直在做实验,所以好久没有更新了,先把上周做的一些小的实验贴出来供大家分享。

在医生诊断时,是会将CT图像调整成不同的窗来处理的。比如说肺部CT吧,肺窗(窗宽为2000,窗位为-400)用于看小的肺结节;腹部窗(窗宽400,窗位40)用于看大的肺结节和纵隔淋巴结,还有骨窗。所以在处理CT图像的时候会需要选择不同的窗,那么怎么来使得你的.dcm文件.IMA文件.mhd文件以不同的窗宽窗位显示:

# -*- coding=utf-8 -*-

import dicom

import os

import cv2

import numpy

from os.pathimport splitext

def getfile(file):

dcm = dicom.read_file(file)

img2 = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept

return img2

def get_window_size(window_type):

if window_type =='lung':

center = -500

        width =2000

    elif window_type =='abdomen':

center =40

        width =400

    elif window_type =='bone':

center =300

        width =2000

    return center, width

#调整CT图像的窗宽窗位

def setDicomWinWidthWinCenter(img_data, window_type):

img_temp = img_data

rows =len(img_temp)

cols =len(img_temp[0])

center, width = get_window_size(window_type)

img_temp.flags.writeable =True

    min = (2 * center - width) /2.0 +0.5

    max = (2 * center + width) /2.0 +0.5

    dFactor =255.0 / (max - min)

for iin numpy.arange(rows):

for jin numpy.arange(cols):

img_temp[i, j] =int((img_temp[i, j]-min)*dFactor)

min_index = img_temp <0

    img_temp[min_index] =0

    max_index = img_temp >255

    img_temp[max_index] =255

    return img_temp

path ='G:\lowdosect\CH_image/quater_dose_image\L067/'

for root, dirs, filesin os.walk(path):

      for i in range(0,len(files),10):

            filename = splitext(files[i])[0] +"." +"bmp"

            print(filename)

#print(files[i])

             im = getfile(path+files[i])

             im1 = setDicomWinWidthWinCenter(im,'bone')

             cv2.imwrite("G:\lowdosect\CH_image/bone/quarter/" + filename, im1)

还不太会编辑,所以可能空格会有问题,我是在数据集里每10张处理一张存储到新的数据集里,希望对大家有帮助!

相关文章

网友评论

    本文标题:python实现CT窗宽窗位的调整(即指定HU值保存图像)

    本文链接:https://www.haomeiwen.com/subject/ipndyftx.html