itk OtsuMultipleThresholdsImageFilter 不处理

itk OtsuMultipleThresholdsImageFilter does not process

我正在尝试在项目中使用 ITK 的 OtsuMultipleThresholdsImageFilter 过滤器,但没有输出。

我的目标是在 OpenCV 和 ITK 之间建立一个简单的接口。 为了将我的数据从 OpenCV 的 Mat 容器转换为 itk::Image,我使用 ITK 的 OpenCV 桥,我可以检查数据是否正确发送到 ITK。 多亏了 QuickView,我什至能够显示。

但是当我根据 this 示例设置过滤器时,方法 GetThresholds() 返回的对象是空的。

这是我写的代码:

   typedef itk::Image<uchar,2> image_type;
    typedef itk::OtsuMultipleThresholdsImageFilter<image_type, image_type> filter_type;

    image_type::Pointer img = itk::OpenCVImageBridge::CVMatToITKImage<image_type>(src);

    image_type::SizeType size = img->GetLargestPossibleRegion().GetSize();

    filter_type::Pointer filter = filter_type::New();


    filter->SetInput(img);

    filter->SetNumberOfHistogramBins(256);
    filter->SetNumberOfThresholds(K);

    filter_type::ThresholdVectorType tmp = filter->GetThresholds();

    std::cout<<"CHECK: "<<tmp.size()<<std::endl;

src 是 OpenCV 的 CV_8U(C1) 类型的 Mat。

使用 ITK 的一个基本概念是它是一个流水线架构。您必须连接输入和输出,然后更新管道。

您已连接管道但尚未执行。您必须致电 filter->Update().

请阅读 ITK 软件指南以了解 ITK 的基础知识: https://itk.org/ItkSoftwareGuide.pdf