Как выполнить преобразование для каждого среза индивидуально? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть серия рентгеновских изображений цилиндрической части.Благодаря этому я могу создавать и визуализировать том, но данные выглядят как стек фрагментов от -Z до Z, что ожидается.Я хочу, чтобы вращал каждое изображение среза с инкрементным углом вдоль оси Y , чтобы сделать весь объем цилиндрическим.Что-то вроде следующего кода C ++.

Я пробовал vtkImageReslice , но он преобразует данные целого тома, а не каждый срез в пошаговом порядке.Как я могу выполнить этот вид преобразования для каждого среза индивидуально?Любое решение в ВТК или в ИТК?

Спасибо,

void RotateEachSliceImage(VtkSliceImages& images) 
{ 
        int countImages = images.size(); 

        double incrementalAngle = 360.0 / countImages;  // incremental angle for 
each image 

        double angle = incrementalAngle; 

        for (int i = 1; i < countImages; i++) 
        { 
                images[i].rotate(angle, 1); // along Y axis 

                angle = angle + incrementalAngle; 
        } 
} 

int main() 
{ 
        VtkSliceImages slices(2400); 
        RotateEachSliceImage(slices); 
        RenderToVtk(slices); 

        return 0; 
} 

1 Ответ

0 голосов
/ 23 мая 2019

Попробуйте пересчитать объемный срез по срезу.Вместо использования Reslice Mapper, попробуйте использовать фильтр Resample, например ResampleImageFilter ITK .

...