1.Hounsfield单位
不同密度的组织具有不同的衰减系数,CT诊断中为了对不同组织进行区分,将不同密度的各种组织用不同的CT值表示,称为Hounsfield单位(Hu)。
以水为0,空气为-1 000,致密骨为+1 000,这样CT将测得的信号高度精确地数字化,具有了很高的空间和密度分辨力。
CT扫描图是包含了所有组织的,如果直接去看,看不到任何有用信息。需要做一些预处理,预处理中一个重要的概念是放射剂量,衡量单位为HU(Hounsfield Unit)。
Hounsfield Unit = pixel_value * rescale_slope + rescale_intercept
一般情况rescale slope = 1, intercept = -1024。
上表中肺部组织的HU数值为-500,但通常是大于这个值,比如-320、-400。挑选出这些区域,然后做其他变换抽取出肺部像素点。
2.Python实例 分割路径和文件名
import os.path
常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.
根据你机器的实际情况修改下面参数.
spath = " D:/download/repository.7z "
case 1:
p,f = os.path.split(spath);
print ( " dir is: " + p)
print ( " file is: " + f)
case 2:
drv,left = os.path.splitdrive(spath);
print ( " driver is: " + drv)
print ( " left is: " + left)
case 3:
f,ext = os.path.splitext(spath);
print ( " f is: " + f)
print ( " ext is: " + ext)
‘’’
知识点: 这三个函数都返回二元组.
* case1 分隔目录和文件名
* case2 分隔盘符和文件名
* case3 分隔文件和扩展名
‘’’
在医学图像上经常使用的一个库-SimpleITK,很多处理都只懂个大概或者只会简单的读取,保存图像,这里对常用的一些操作进行总结:
import SimpleITK as sitk
1、sitk.Cast(sitk.ReadImage(),sitk.sitkFloat32) 图像转换数据类型
2、sitk.ReadImage(图像路径)读取图像,如.mhd .nii .nrrd等
3、sitk.WriteImage(image,图像路径)保存图像
4、sitk.GetArrayFromImage(sitk.ReadImage
5、sitk.GetImageFromArray() 将数组转换成sitk图像
6、rescalFilt = sitk.RescaleIntensityImageFilter() 改变图像的像素值,转换为[0,255]
rescalFilt.SetOutputMaximum(255)
rescalFilt.SetOutputMinimum(0)
itkimage = rescalFilt.Execute(sitk.ReadImage()
7、resampler = sitk.ResampleImageFilter() 图像重采样
resampler.SetReferenceImage(itkimage)#需要重新采样的目标图像
resampler.SetSize(newSize.tolist())
resampler.SetTransform(sitk.Transform(3, sitk.sitkIdentity))
resampler.SetInterpolator(sitk.sitkNearestNeighbor)
itkimgResampled = resampler.Execute(itkimage)#得到重新采样后的图像
8、sitk.Threshold(sitk.ReadImage(), 0, 1.0, 255) 将图像中像素值<0和>1.0的像素值改为255,否则保持不变
9、sitk.BinaryThreshold(sitk_src, lowerThreshold=lowervalue, upperThreshold=uppervalue, insideValue=255, outsideValue=0) 图像二值化
10、image1 = sitk.ReadImage() 对sitk的image1处理完后恢复到世界坐标系
image2 = sitk.GetArrayFromImage(image1)
origin = image1.GetOrigin()
spacing = image1.GetSpacing()
direction = image1.GetDirection()
image2 = sitk.GetImageFromArray(image2)
image2.SetOrigin(origin)
image2.SetSpacing(spacing)
image2.SetDirection(direction)
11、sitk_src_gaus = sitk.DiscreteGaussianImageFilter() 图像高斯滤波
sitk_src_gaus.SetVariance(3)
sitk_src_gaus.SetMaximumError(0.2)
sitk_src_gaus = sitk_src_gaus.Execute(sitk.ReadImage())
12、sitk.BinaryMorphologicalOpening(sitk.ReadImage() != 0, kernelsize) 图像的形态学操作:开、闭、膨胀、腐蚀
sitk.BinaryMorphologicalClosing(sitk.ReadImage() != 0, kernelsize)
sitk.BinaryDilate(sitk.ReadImage() != 0, kernelsize)
sitk.BinaryErode(sitk.ReadImage() != 0, kernelsize)
13、sitk_xorop = sitk.XorImageFilter() 图像的逻辑运算:异或、非
sitk_mask1 = sitk_xorop.Execute(imag1, imag2) image1和image2是sitk图像的二值化结果
sitk_notop = sitk.NotImageFilter()
sitk_mask2 = sitk_notop.Execute(image) image是sitk图像的二值化结果
14、sitk.BinaryFillhole(sitk的二值化图像)去除二值化图像内的孔洞
dicom文件:
dicom是一个存储患者所拍摄医学影像的某一层断面图和相关信息的文件。
mhd文件与raw文件的区别:
Raw文件,意为“未处理的文件”,其保存的是纯像素信息。常常是一个病人的所有dicom文件中的图像提取出来放在一个raw文件里。也就是说,一个病人对应一个raw文件,其中存储的是该病人的图像信息。(可以理解为将该病人不同的dicom切片图像都叠到一起,形成了一个三维图像)。一个raw通常有几百兆,对应的mhd文件只有1kb。mhd文件需要借助python的SimpleITK包来处理。
上面已经提到,dicom文件除了包含切片图像外,还包含其他的一些信息。那么在文件格式转换后,图像信息被raw文件提取,非图像信息则存储在mhd头文件中。简单来说,mhd头文件是存储关于一个病人的所有dicom文件中的非图像信息。
由上述关系可以知道:raw文件与mhd文件是一一对应的,且它们的数量小于等于(实际中一定是小于)dicom文件数量
因为DICOM图像通常是一个序列,普通的dcm格式的图像序列可以直接使用DICOM图像查看软件打开进行查看;但mhd格式的3D图像却无法方便地查看。
File "D:/RStudio/data/TumorType-WGS-master/CT_MHD/Mhd_Visualization.py", line 12, in <module>
im = cv2.cvtColor(im, cv2.COLOR_GRAY2RGB)
cv2.error: OpenCV(4.4.0) c:\users\appveyor\appdata\local\temp\1\pip-req-build-iw3y3ir8\opencv\modules\imgproc\src\color.simd_helpers.hpp:94: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<1,-1,-1>,struct cv::impl::A0x4107568d::Set<3,4,-1>,struct cv::impl::A0x4107568d::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)'
> Unsupported depth of input image:
> 'VDepth::contains(depth)'
> where
> 'depth' is 3 (CV_16S)
参考该链接:https://blog.csdn.net/rocking_struggling/article/details/104825407
Dicom文件转mhd,raw文件格式
https://www.cnblogs.com/XDU-Lakers/p/10781321.html