【问题标题】:AddImageFilter error in SimpleITKSimpleITK 中的 AddImageFilter 错误
【发布时间】: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


    【解决方案1】:

    在某种意义上,你的假设是对的。我无法找到您遇到的确切错误,但我找到了这个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),我建议至少转换其中一个,以便将它们都放在同一个“元数据空间”中”。

    【讨论】:

      【解决方案2】:

      错误信息有点模糊,应该改进。

      许多将多张图像作为输入的过滤器期望像素类型、尺寸、大小、间距和方向相同。您收到的错误消息表明像素类型或大小不匹配。可能来自生成的代码是行:

      https://github.com/SimpleITK/SimpleITK/blob/master/TemplateComponents/ExecuteNoParameters.cxx.in#L8

      我建议将您的两个图像打印为字符串,以检查元数据以确定差异。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多