После применения конвейера фильтра ITK, как мне записать результат обратно в буфер, который будет использоваться (вне ITK)?
В Insight Software Guide есть пример Книги 1: Глава 4.1.7: Импорт данных изображения из буфера, и тот же пример также можно найти в WikiExamples.
Он показывает, как можно обернуть указатель ITK вокруг массива C ++, чтобы использовать его в дальнейшем, используя объект ImportImageFilter
. Однако в этом примере затем используется объект 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()
напрямую?
Мы были бы очень признательны за небольшой пример кода или ссылку на соответствующий пример. (Просто Экспорт данных изображения в буфер, эквивалентный данному примеру импорта.)