【转】DICOM图像像素值(灰度值)转换为CT值
轉自:https://www.cnblogs.com/xuhui24/p/6193032.html
? ? ? ? ? ?https://zhuanlan.zhihu.com/p/358770379
CT值的單位是Hounsfield,簡稱為Hu,范圍是-1024-3071。用于衡量人體組織對X射線的吸收率,設定水的吸收率為0Hu。
在DICOM圖像讀取的過程中,我們會發現圖像的像素值有可能不是這個范圍,通常是0-4096,這是我們常見到的像素值或者灰度值,這就需要我們在圖像像素值(灰度值)轉換為CT值。
首先,需要讀取兩個DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope.
然后通過公式:
Hu = pixel * slope + intercept
計算得到CT值。
HU(Hounsfiled Unit)值,是在做醫學圖像數據預處理不可避免的事情,反映了組織對X射線吸收程度。以水的吸收程度作為參考,即水的HU=0,衰減系數大于水的為正直,小于水的為負值。并以骨皮質和空氣的HU值為上限和下限,是在醫學影像圖像處理技術,處理CT圖像不可避免的事情。
HU值的計算公式:(非常重要)
HU = pixel_val * slope + intercept
(如果Slope為1,Intercept為0,則不需要轉化的問題,具體Slope和Intercept的值在頭文件中都會有說明的)
代碼:
import os
import numpy as np
import pydicom as pyd
import matplotlib.pyplot as plt
import cv2
import SimpleITK as sitk
##查看是否需要轉化HU值,如果img.RescaleSlope不為1,img.RescaleIntercept不為0,則需要轉化的問題
dcm_file='/Pancreas-CT/PANCREAS_0001/11-24-2015-PANCREAS0001-Pancreas-18957/Pancreas-99667/1-001.dcm'
img=pyd.read_file(dcm_file)
img_array=sitk.GetArrayFromImage(sitk.ReadImage(dcm_file))
print(img_array)
print(np.shape(img_array))
print('----')
print(img.RescaleSlope)
print(img.RescaleIntercept)
HU=np.dot(img_array,img.RescaleSlope)+img.RescaleSlope
print(HU)
總結
以上是生活随笔為你收集整理的【转】DICOM图像像素值(灰度值)转换为CT值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡销卡后还能用吗
- 下一篇: 【转】Dicom文件解析!!!!!!