【发布时间】:2016-05-09 23:34:58
【问题描述】:
应用 ITK 过滤器管道后,如何将结果写回要使用的缓冲区(ITK 外部)?
Insight Software Guide 有一个示例Book 1:第 4.1.7 章:“从缓冲区导入图像数据”,WikiExamples 中也有相同的示例。
它展示了如何通过使用 ImportImageFilter 对象将 ITK 指针包装在 C++ 数组周围以进一步使用它。
但是,此示例随后使用 Writer 对象将过滤后的结果写入文件。
如何将过滤后的结果写入另一个 C++ 数组?或者如何覆盖我用作输入的数组?
本质上,我有一个应用程序,它在缓冲区 (localBuffer) 中包含一个图像,我可以按照示例代码包装它:
[...]
const bool filterOwnsBuffer= false;
importFilter->SetImportPointer( localBuffer, size[0]*size[1], filterOwnsBuffer );
然后我可以在任何 itk 管道中使用它并在某个阶段“更新”它:
[...]
FilterType::Pointer filter = FilterType::New();
filter->SetInput( importFilter->GetOutput() );
filter->Update();
我现在如何确保localbuffer 具有过滤值?或者,或者,如何为输出值设置不同的resultbuffer?我是否必须手动使用图像迭代器并在我的缓冲区上“循环”?或者我可以更直接地使用filter->GetOutput()吗?
非常感谢您提供一个小代码示例或指向相应示例的链接。 (简单的“将图像数据导出到缓冲区”相当于给定的导入示例。)
【问题讨论】: