【发布时间】:2014-02-18 13:21:44
【问题描述】:
在 C# 项目中,我使用 SimpleITK 中提供的AddImageFilter 时出错。尝试使用此过滤器添加两个图像时是否会发生常见错误?例如,可能有一个规则the images should be both double or int。
我得到的错误是:
AddImageFilter 的 Image2 的类型或尺寸不匹配!
【问题讨论】:
标签: c# image visual-studio add itk
在 C# 项目中,我使用 SimpleITK 中提供的AddImageFilter 时出错。尝试使用此过滤器添加两个图像时是否会发生常见错误?例如,可能有一个规则the images should be both double or int。
我得到的错误是:
AddImageFilter 的 Image2 的类型或尺寸不匹配!
【问题讨论】:
标签: c# image visual-studio add itk
在某种意义上,你的假设是对的。我无法找到您遇到的确切错误,但我找到了这个sitkAddImageFilter implementation on GitHub。如果您查看第 33 行的 AddImageFilter::Execute() 函数,您会发现抛出了这个异常:
std::cerr << "Both image for add filter don't match type or dimension!" << std::endl;
这似乎与您的有关(也许细微的差异只是与 ITK 的不同版本有关)。每当验证这一点时,就会抛出该异常:
if ( type != image2->GetDataType() || dimension != image2->GetDimension() )
因此,AddImageFilter 的一个条件是两个维度必须相同,并且与图像关联的元数据必须一致。这是有道理的,因为矩阵加法只有在它们的维度匹配时才可行(当然,当它们包含相同类型的信息时)。
如果您尝试添加两种不同类型的图像(例如:带有 TIFF 的 DICOM),我建议至少转换其中一个,以便将它们都放在同一个“元数据空间”中”。
【讨论】:
错误信息有点模糊,应该改进。
许多将多张图像作为输入的过滤器期望像素类型、尺寸、大小、间距和方向相同。您收到的错误消息表明像素类型或大小不匹配。可能来自生成的代码是行:
https://github.com/SimpleITK/SimpleITK/blob/master/TemplateComponents/ExecuteNoParameters.cxx.in#L8
我建议将您的两个图像打印为字符串,以检查元数据以确定差异。
【讨论】: