单张或多张jpg格式图像转换成dcm图像格式 。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nijiayan123/article/details/81168418

在进行医学图像操作时,可以发现医学图像格式一般为dcm 或者nii格式的3D图像。因为dcm文件包含的信息比一般的jpg文件多很多。

这里可以发现单个dcm文件中包含了很多病人的信息。但是我们在进行深度学习或者进行图像处理时。只需要处理里面Image的信息。在一个完整的dcm文件中可以包含多张图像,组成一个3D的图像。我们可以直接使用这个3D的图像进行操作。但是在实际情况下计算机性能有限。我们选择了对单张的图像进行操作。这样就得到了单张图像的结果。这样一个新的问题就出现了。它给我们的是一个dcm 文件里面包含着各种信息。我们计算得到的结果只是单张或者多张jpg图像。所以我们需要把单张jpg或者多张Jpg图像转换成dcm 文件。我在网上也搜了相关的操作,发现往往都比较复杂。于是我想到既然dcm里其他的信息不变。我为什么对dcm里的图像信息进行替换一下不就可以了呀。于是我进行以下操作。

img = load_img("H:\\dicomdata\\test1label\\0.jpg")
      
data2=img_to_array(img)
data2=cv2.cvtColor(data2,cv2.COLOR_BGR2GRAY) 

ds = pydicom.dcmread("H:\\dicomdata\\train\\1\\IM-0001-0243.dcm")

data2=data2.astype('int16')
#data1=data1.reshape(400,400)
ds.PixelData = data2.tostring()
ds.Rows, ds.Columns = data2.shape

data1=ds.pixel_array
plt.imshow(data1,"gray")
ds.save_as("testdicom.dcm")  

 上述代码使用了0.jpg替换了ds.pixdata里的数据。这里有一个小的细节就是 data2=data2.astype("int16")这行代码。因为dcm 里面保存的是int16格式的。而jpg里面保存的float32格式。所以需要在这里进行一下转换。这样最后保存一下dcm文件就可以得到dcm 文件了。

猜你喜欢

转载自blog.csdn.net/nijiayan123/article/details/81168418
今日推荐