DCMTK修改文件DCM文件的数据

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

        本专栏“DICOM医学图像处理”受众较窄起初只想作为自己学习积累和工作经验的简单整理。前几天无聊浏览了一下发现阅读量两极化严重,主要集中在“关于BMP(JPG)与DCM格式轉换”和“DICOM 通讯协议”尤其是许久前的第一篇博文。因此在2014年底前打算写几篇关于DCM格式转换的文章此次主要聚焦“如何将BMP、JPG等常规图潒保存成DCM文件”,以DCMTK库为基础给出简单的实例。

        这几篇博文采用倒叙的方式先给出可直接运行的源码,然后重点讲解其中易犯的错误最后是知识点补充。

代码中的DicomUtils类是一个方法类提供了一个静态方法AddDicomElement构造DICOM基本元素,代码如下:


2)图像信息显示错误:



3)图像色彩显示錯误:


*PBITMAPFILEHEADER类似于DCM中的DcmMetaInfo;2)图像描述信息块,该部分记录了图像信息块的大小、图像的宽度、高度、图像通道数(即Plane)、像素位数(即后面DICOM標准中的SamplesPerPixel)、图像压缩方式、图像数据区大小等等;3)颜色表即调色板。该部分与DICOM标准中的COLOR PALETTE随着像素位数不同颜色表大小也不同,当潒素位数为24或更大即SamplesPerPixel=3时,像素数据本身就可以代表颜色因此不需要颜色表;4)图像数据区,即文件中存储的真正的像素信息【注】:这里有一个坐标转换,标准的BMP文件像素存储顺序是由左到右、由下到上即坐标原点为图像左下角;而DICOM标准存储顺序为从左到右,从上箌下坐标原点为图像左上角,因此在自己读取时需要进行反转

        了解了BMP文件的具体格式,可以利用常用的二进制操作方式直接从文件Φ提取像素数据。这种代码网上也很多可参考:。

        另外我在博文中给出的源码是结合了CxImage和DCMTK两种开源库这也是常见的一种组合方式,具體细节可参考我的GitHub上的源码

image】,就像PhotoShop中的通道每个通道表示一种颜色(除了RGB三个通道以外,也会存在第四个通透性通道)对于灰度圖像(monochrome或gray)和颜色表图像(palette,就是BMP格式中介绍的有调色板的BMP文件)该标签值为1,RGB图像或其他色彩模式图像该标签值为3。本实例中使用嘚BMP图像是RGB格式的因此SamplePerPixel=3,起初的文件格式错误就是由于该字段设置为1所致

COLOR就是BMP中提到的调色板图像,此时需要SamplesPerPixel字段为1,;RGB是常见的R(红)、G(绿)、B(蓝)三通道彩色图像此时SamplesPerPixel字段值为3,这就是我们实例中使用的图像除此以外DICOM3.0标准中还给出了YBR_FULL、HSV、ARGB、CMYK等方式,此处就不详細介绍了


至此将多幅BMP图像写入DCM文件的任务顺利完成了,其实将多幅图像写入DCM文件与写入单幅BMP图像是完全相同的只需要将多张BMP图像(此時要求每张BMP图像的宽度和高度相同)像素数据首尾相接的写入DCM中的PixelData标签下,即(7FE0,0010);此时将NumberofFrames标签赋值为图像张数DCM文件编辑器就可自动识别提取各张图像。

多幅JPEG图像数据存入DCM文件

我要回帖

更多关于 修改文件 的文章

 

随机推荐