从DICOM文件中提取原始DICOM数据

时间:2014-02-24 10:41:00

标签: matlab image-processing dicom

我正在处理3D DICOM文件。在读取之后(例如,使用MATLAB),我看到它包含除实际扫描图像之外的一些文本信息。我的意思是当我执行implay()时在图像中可见的文本,而不是DICOM文件中的标题文本。有没有办法只加载没有文本的原始数据?该文本阻碍了我的处理。

编辑:我不能分享我正在处理的图像,因为它是专有的,但我在谷歌搜索后发现了以下图像:
http://www.microsoft.com/casestudies/resources/Images/4000010832/image7.jpeg http://www.microsoft.com/casestudies/resources/Images/4000010832/image7.jpeg

注意左侧的文字是如何与图像重叠的?在我正在处理的图像中有类似的效果。我只需要锥形扫描图像进行处理。

2 个答案:

答案 0 :(得分:2)

如上所述,您需要提供更多信息,因为可以通过多种方式添加叠加层:如果它被刻录到图像中,您通常会运气不好;如果它位于覆盖平面模块(60xx标签组)中,您可以在传入Matlab之前删除它们;如果它存储在未使用的高位(旧的常见方法)中,则必须使用覆盖位位置(60xx,0102)来清除像素数据中的数据。

对于最后一个,类似于这个Java代码的Matlab等效:

int position = object.getInt( Tag.OverlayBitPosition, 0 );
if( position == 0 ) return;

// Remove the overlay data in high-bit specified.
//
int bit = 1 << position;
int[] pixels = object.getInts( Tag.PixelData );
int count = 0;
for( int pix : pixels )
{
   int overlay = pix & bit;
   pixels[ count++ ] = pix - overlay;
}
object.putInts( Tag.PixelData, VR.OW, pixels );

答案 1 :(得分:0)

如果您参考图像顶部蓝色区域中的文字,这些内容会被刻录到图像中。

删除它的唯一解决方法是将遮罩应用于图像的这个区域。

小心,因为这样做是对原始DICOM图像的修改。在某些情况下不允许进行此类修改。