我想你可以寫一個複合過濾實現這一目標。你可以有更多的相關信息的ITK軟件指南:http://www.itk.org/ItkSoftwareGuide.pdf
閱讀第8章,第6節
基本上,你必須創建一個新的過濾器類,則必須建立在構造函數中的管道您過濾。在你的情況下,它將是一個由GradientImageFilter和NormalizedMutualInformation組成的管道。輸入到這個新的過濾器應被傳遞到梯度過濾器,並從normalizedmutual取作手冊輸出表示:所需要的複合材料過濾器的「的輸入和輸出上要被接枝到頭部和尾部(分別)的 組件過濾器「。)
下面是一個完整的代碼示例:http://www.itk.org/Doxygen46/html/Filtering_2CompositeFilterExample_8cxx-example.html
例子的有趣的部分是複合濾波器的構造,其中所述管道的組件參與:
template <class TImageType>
CompositeExampleImageFilter<TImageType>
::CompositeExampleImageFilter()
{
m_Threshold = 1;
m_GradientFilter = GradientType::New();
m_ThresholdFilter = ThresholdType::New();
m_ThresholdFilter->SetInput(m_GradientFilter->GetOutput());
m_RescaleFilter = RescalerType::New();
m_RescaleFilter->SetInput(m_ThresholdFilter->GetOutput());
m_RescaleFilter->SetOutputMinimum(
NumericTraits<PixelType>::NonpositiveMin());
m_RescaleFilter->SetOutputMaximum(NumericTraits<PixelType>::max());
}
然後GenerateData
方法,其中該魔術發生:
template <class TImageType>
void
CompositeExampleImageFilter<TImageType>::
GenerateData()
{
m_GradientFilter->SetInput(this->GetInput());
m_ThresholdFilter->ThresholdBelow(this->m_Threshold);
m_RescaleFilter->GraftOutput(this->GetOutput());
m_RescaleFilter->Update();
this->GraftOutput(m_RescaleFilter->GetOutput());
}
嘿,如果在您插入'Gradien tImageFilter',考慮製作一個管道。 –