如何从iOS上的DICOM文件提取像素数据?

有谁知道我怎么能从DICOM文件中提取像素数据并将其传递给iOS上的图像查看器?

对不起,如果这是一个简单的问题,但它似乎是我打开的一大堆蠕虫的主要组成部分。

我在iOS上使用GDCM。 我还没有努力,但迄今为止工作得很好。 我基本上遵循了在ITK上这篇优秀文章中黑客XCode项目在iOS中运行的指导。

以下是我如何为iOS编译:

  1. 从sourceforge下载源代码,通过端口安装cmake。 你需要最新版本的cmake(我正在使用2.8.2)
  2. 如果源文件夹位于名为gdcm-2.0.17 /的文件夹中,则在该级别创build另一个目录(例如gdcmbin),cd到该目录,然后在terminal窗口中inputccmake -GXCode ../gdcm-2.0.17/ 。 这创build了XCode项目。 当我这样做,我没有创build任何示例程序或创build共享库(这不会在iOS中工作)。 只需运行默认值。
  3. 按照ITK文件中有关更改构build选项的说明(第4页上的步骤#7)。
  4. 然后使用Clint Harris的博客上的精彩说明将GDCM链接到您的项目中
  5. 当您在项目中将标题searchpath设置为GDCM时,您必须input两个path: blah /gdcm-2.0.17/Source/**和blah / gdcmbin / **。 第一个path的尾部“/ Source”是必须的 – 否则你会得到不适合你的架构的头文件。
  6. 一个小故障(烦人,但还没有花时间弄清楚):当你从模拟器切换到设备(或反之亦然)时,你会得到一堆链接错误。 这是因为gdcm项目不会将输出放到不同目标的不同目录中。 所以 – 当你切换时,在gdcm项目中运行一个干净的并且重build的东西。 我很快就会被这个问题困扰着去改变它:-)。

下面简单介绍一下如何调用库并将结果放在Objective-C字典中:

NSMutableDictionary * imageDictionary = [[NSMutableDictionary alloc] initWithCapacity:40]; // The output of gdcm::Reader is a gdcm::File gdcm::File &file = reader.GetFile(); // the dataset is the the set of element we are interested in: gdcm::DataSet &ds = file.GetDataSet(); const Tag studyInstance(0x0020,0x000d); // Study Instance UID const DataElement &dicomVal = ds.GetDataElement(studyInstance); std::string stringVal( dicomVal.GetByteValue()->GetPointer(), dicomVal.GetByteValue()->GetLength() ); NSString *val = [NSString stringWithCString:stringVal.c_str() encoding:[NSString defaultCStringEncoding]]; [imageDictionary setObject:val forKey:@"studyInstanceUID"]; 

(注意:这是一个混合了C ++和ObjectiveC的* .mm文件)

如果您想查找DICOM软件,请查看医学影像软件清算所idoimaging.com 。 你可以select你的平台,input格式,输出格式,语言等。iOS没有被列为格式,但列出的许多软件都可以使用源代码,可用于库的forms,可用于MacOS X.例如我select了:

  • input格式:DICOM
  • 平台:Macintosh
  • 语言:C

并发现了几个包。 鉴于MacOS和iOS之间的相似之处,以及其中一些与源代码跨平台的事实,让其中一个在iOS上工作不应该太困难。