Интерполяция между двумя изображениями с разным размером пикселей

Для моего приложения я хочу интерполировать между двумя изображениями (от CT до PET). Поэтому я сопоставляю их между собой так:

[X,Y,Z] = ndgrid(linspace(1,size(imagedata_ct,1),size_pet(1)),...
                linspace(1,size(imagedata_ct,2),size_pet(2)),...
                linspace(1,size(imagedata_ct,3),size_pet(3)));
new_imageData_CT=interp3(imagedata_ct,X,Y,Z,'nearest',-1024);

Размер моего нового изображения new_imageData_CT похож на изображение ПЭТ. Проблема в том, что данные моего нового изображения неправильно масштабированы. Так что это сжато. Я думаю, что причина этого в том, что размер пикселей между двумя изображениями различен и не связан с интерполяцией. Так, например:

  • Размер изображения CT: 512x512x1027
  • Размер вокселя КТ [мм]: 1,5x1,5x0,6
  • Размер изображения ПЭТ: 192x126x128
  • Размер вокселя ПЭТ [мм]: 2,6x2,6x3,12

Так, как я мог заботиться о размере вокселя относительно интерполяции?

3 ответа

Необходимо выполнить сопоставление в системе координат пациента, но нужно учитывать не только разрешение и размер вокселя. Вам нужно синхронизировать положения (и, возможно, ориентации, но это маловероятно) двух томов.

Вы можете найти эту ветку полезной, чтобы узнать, какие теги DICOM описывают объем и как рассчитать матрицы преобразования, чтобы использовать их для преобразования между пациентом (x, y, z в миллиметрах) и объемом (x, y, z в столбце, строке, номер среза).

Вы должны убедиться, что позиции объема сопоставимы, так как позиции срезов в CT и PET не обязательно относятся к одному и тому же источнику. Самый простой способ сделать это - сравнить UID Frame Of Reference атрибута DICOM (0020,0052) срезов CT и PET. Для всех срезов, которые используют один и тот же UID Frame Of Reference, позиция среза в заголовке DICOM относится к одному и тому же источнику. Если наборы данных не содержат этого тега, это будет намного сложнее, если вы просто не введете его в качестве предположения. Существуют методы, позволяющие выводить совпадающие срезы двух разных томов из содержимого данных пикселей, называемых "регистрацией", но это отдельная наука. Смотрите ссылку от Hugues Fontenelle.

Кстати: в вашем примере вы не найдете подходящего вокселя в обоих томах для каждой позиции, поскольку тома имеют разный размер. Например, для направления х:

КТ: 512 * 1,5 = 768 мм

ПЭТ: 192 * 2,6 = 499 мм

Я дам кому-то еще ответить на вопрос, но я думаю, что вы спрашиваете не тот. Конечно, мне не хватает контекста, но на первый взгляд Matlab не подходит для работы.

После того, как вы сделали этот шаг регистрации, вы можете экспортировать полученные изображения (теперь с одинаковым размером и интервалом) и продолжить интерполяцию в Matlab, если хотите (или с теми же инструментами).

В слайсере есть набор инструментов под названием PETCTFUSION, который выравнивает сканирование ПЭТ по КТ-изображению. Вы можете установить его в новой версии Slicer. На панели "Дисплей" модуля, показанной ниже, предусмотрены параметры для выбора схемы окраски для набора данных PET: серый цвет обеспечит цветопередачу от белого к черному, а черный - наивысшие значения счетчика. Тепло обеспечит теплую цветовую шкалу с темно-красным наименьшим, а белый - наивысшими значениями. Spectrum обеспечит теплую цветовую гамму, которая становится более холодной (темно-синей) на конце низкого счета и белым на самом высоком. Эта панель также предоставляет средства для настройки окна и уровня громкости ПЭТ и КТ.

PETCT SLICER

Я обычно использую инструмент resampleinplace после регистрации. Вы можете найти его в пакете: зарегистрируйтесь, а затем повторите образец изображения.

Посмотрите на скриншот здесь: resampleinplace

Если вы хотите узнать больше о PETCTFUSION, есть ссылка ниже: https://www.slicer.org/wiki/Modules:PETCTFusion-Documentation-3.6

Поскольку slicer совместим с python, вы также можете использовать его для запуска собственного кода.

И дайте мне знать, если у вас возникнут проблемы

Другие вопросы по тегам