КТ проекция (дистанционное управление) оператором реализации?

Я пытаюсь использовать MATLAB для реализации оператора проекции CT (компьютерная томография), A, который, я думаю, также часто называют "системной матрицей".

По существу, для N x N изображения M проекционные данные P могут быть получены путем умножения оператора проекта на изображение:

P = AM

и процедура обратной проекции может быть выполнена путем умножения (сопряженного) транспонирования оператора проецирования на данные проекции:

M = A'P

У кого-нибудь есть идея / пример / пример кода о том, как реализовать матрицу А (например: преобразование Радона)? Я действительно хотел бы начать с небольшого размера матрицы, скажем, 8 x 8 или 16 x 16, если это возможно.

Мой вопрос на самом деле: как реализовать оператор проекции, чтобы, умножив оператор на изображение, я мог получить проекции, а умножив (сопряженную) транспонирование оператора на проекции, я мог получить исходное изображение обратно?,

РЕДАКТИРОВАТЬ:

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

3 ответа

Решение

Насколько я знаю, нет свободно доступных реализаций дистанционно-управляемого проектора / обратного проектора (он запатентован). Вы можете, однако, кодировать его самостоятельно без особых затруднений.

Начните с чтения статей и понимания того, что делает проектор. Есть только несколько ключевых частей, которые вам нужны:

  • Проецирование границ пикселей на ось.
  • Проецирование границ детектора на ось.
  • Ядро перекрытия.

Первые два - простая геометрия. Ядро перекрытия подробно описано (и в основном используется псевдокод) в статьях.

Обратите внимание, что вы не получите фактическую матрицу, которая выполняет проекцию. Система была бы слишком большой для всех, кроме самых крошечных примеров. Вместо этого вы должны написать функцию, которая реализует линейный оператор, соответствующий проекции, управляемой расстоянием.

У вас есть разные примеры:

  • Здесь есть пример Matlab, связанный с 3d Cone Beam. Это может быть хорошей отправной точкой.
  • Здесь у вас также есть другой оператор
  • Здесь у вас есть краткое объяснение дистанционно-управляемого метода. Таким образом, используя первый пример и объяснение в этой книге, вы можете получить некоторые идеи.

Если нет, то вы всегда можете перейти к документу о дистанционном управлении и реализовать его, используя первый пример.

Хотя уже есть много удовлетворительных ответов, я хотел бы упомянуть, что я внедрил метод дистанционно управляемой 2D-компьютерной томографии (КТ) и 3D-цифрового грудного томосинтеза (DBT) в MATLAB.

До сих пор для 2D CT доступны следующие коды:

и для 3D DBT:

Обратите внимание, что:

1 - код для DBT строго для томографии с ограниченным углом; однако это просто, чтобы распространиться на полный угол поворота.

2 - Все коды реализованы для процессора.

Пожалуйста, сообщайте о любых проблемах с кодами, чтобы мы могли продолжать их улучшать.

Проекция с дистанционным управлением не реализована на складе MATLAB. Для прямой проекции есть команды fanbeam() и radon(), в зависимости от того, какую геометрию вы ищете. Я не считаю фанбим очень хорошим. Он демонстрирует нелинейное поведение, начиная с R2013a, подробности см. Здесь

Что касается сопоставления транспонирования, то для него нет функции ни для веерного луча, ни для параллельной геометрии. Обратите внимание, что iradon и ifanbeam не являются операторными реализациями соответствующей транспонирования. Тем не менее, вы можете рассмотреть возможность использования FUNC2MAT. Это позволит вам преобразовать любой линейный оператор из функциональной формы в матричную, а затем вы сможете свободно перемещать.

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