Программа компьютерной томографии для 3D объектов

автор: Виктор Кон (Курчатовский институт) , 14-07-2022.

Введение

Метод компьютерной томографии (КТ) состоит в том, чтобы получить распределение плотности в горизонтальном сечении 3D объекта на определенной высоте по набору проекций, измеренных под разными углами, в каждой из которых записана интегральная вдоль лучей проектирования плотность. Метод очень широко используется при просвечивании объектов рентгеновским излучением. Он является неразрушающим и получил исключительно широкое распространение в медицине. Авторы применения метода А. Кормак и Г. Хаунсфилд даже получили в 1979 году Нобелевскую премию по физиологии и медицине.

Справедливости ради следует отметить, что математический алгоритм для КТ разработал И. Радон еще в 1917 году, но тогда не было ни хороших рентгеновских источников, ни компьютеров. Метод КТ также широко используется в физике для диагностики структуры различных материалов. Существует несколько алгоритмов реализации метода. Наиболее распространены метод FBP (filtered back projection) и алгебраический метод. Все методы томографии давно и хорошо описаны, например, в книге
Avinash C. Kak, Malcolm Slaney "Principles of Computerized Tomographic Imaging", IEEE Press, 1988
C 1999 года книгу в просканированном виде как серия pdf файлов можно было бесплатно скачать в интернете. Но сейчас ссылка больше не работает. Причина, видимо, в том, что она снова продается, уже в электронном виде. По данным сайта Google Академии эта книга на момент написания статьи цитировалась 10490 раз. Я скачал книгу в то время, когда это было возможно, и у меня она есть. Есть также другая книга о том, как КТ делается в программе Matlab. Программа Matlab снова платная и я ее не использую. Если кому книга нужна, пишите мне на электронную почту и я ее вышлю, или дам ссылку для скачивания.

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

В то время программа так и не была использована, и работа оказалась невостребованной. Через какое-то время после этого (несколько лет) я переписал программу под другой набор данных в виде tiff файлов, и программа стала использоваться на Курчатовском источнике синхротронного излучения. Позже я решил включить ее в набор готовых программ интерпретатора vkACL, и заодно оптимизировать как методы работы, так и внешний вид, а также протестировать на разных моделях. В таком виде она и существует в настоящее время.

Одной из наиболее широко известных коммерческих программ КТ является программа Октопус (Octopus). Возможно, одной из первых научных публикаций о ней была эта . Статья вышла в 2004 году. Программа с тех пор развивалась, потом стала продаваться за деньги и до сих пор продается, но уже не так удобно как раньще. Учитывая сложившуюся к 2022 году ситуацию получить ее из России стало весьма проблематично, хотя и раньше было не просто.

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

Краткое описание работы программы

Программа написана на языке ACL, который я сам придумал для себя. Этот язык исполняется интерпретатором, то есть другой программой, написанной на языке Java, главный файл которой называется vkACL.jar. Эта программа сделана так, что она не только исполняет код языка ACL, но и является менеджером (диспетчером) большого числа программ, написанных на этом языке. Программа имеет свой сайт . Там сказано как ее скачать и установить. Научные программы сейчас вместе с интерпретатором не скачиваются. Для этого я сделал репозиторий, и каждый может скачать себе ту программу, которая его интересует. Среди этих программ находится и программа КТ. Сейчас она имеет свое стандартное меню, в котором кроме основного модуля, есть еще дополнительные модули.

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

Хотя очень легко можно сделать внешний вид программы в виде отдельного и независимого окна, я специально не стал этого делать. Программа является модулем более общей программы, в которой можно использовать много других модулей. И это реально бывает полезно при выполнении любой работы. Ну и сам факт показа других возможностей является как рекламой этих возможностей. Как уже сказано, интерпретатор vkACL.jar написан на языке программирования Java и для его работы необходимо также установить на компьютер виртуальную машину этого языка, которая называется JRE. Можно использовать стандартный способ, а можно сделать так, как написано вот в этой моей статье . Правда статья уже немного устарела и ссылка не работает. Вот правильная ссылка на скачивание JRE . Ну и программа vkUtility уже на пенсии и устарела. После того, как все файлы записаны на ваш компьютер, запускаем программу, выбираем кнопку [Science], а затем кнопку [CT].

Основной модуль является вторым. Он показывает окно ввода данных в свою программу, которое показано слева. Под формой для ввода параметров расчета находится 5 кнопок. Среди них есть кнопка [Help]. Надо ее кликнуть и внимательно прочитать весь текст, который там записан. Это необходимо для того, чтобы понимать то, что я вам предлагаю сделать в качестве первых шагов, которые позволят быстрее научиться пользоваться программой. Также важно знать, что программа сделана таким образом, что она работает в сочетании с другими программами, а именно, менеджером файлов и программой показа картинок. Такие программы есть в операционной системе, но можно использовать и любые другие бесплатные программы. В том числе другие строки основного меню программы.

Я сам работаю на компьютере так, что постоянно использую программы Q-dir и FastStone Image Viewer . Про эти программы я даже написал рассказы на сайте Проза.ру, на которые можно попасть кликая указанные кнопки. Копии этих рассказов есть и на моем сайте. Итак, первым делом надо открыть папку нашей программы, которая имеет имя [.../s/vkCT/]. Здесь многоточие означает имя папки, куда вы записали программу vkACL.jar. В этой папке надо открыть новую папку на вариант, с которым мы будем работать. Пусть имя этой папки будет [var010] и записать туда картинку сечения образца.

В качестве такой картинки возьмем фантом Shepp-Logan . Картинку можно получить, кликая указанную ссылку, и копируя ее себе на компьютер. Затем из папки загрузок ее надо переместить в указанную папку [var010]. Далее надо заполнить форму программы, показанную выше. В ней 19 строк, соответственно она вводит два текста и 18 чисел (в одном окне два числа). После ввода значения полей ввода записываются в первую строку файла ct.par, в которой разделителем служит символ вертикальной черты. Ниже я записал все значения, которые надо ввести в форму

var010|z000.tif|0|1|360|512|1|512|1|0|0|1|0 0|0|0|1|2|32500|4|      

Важно, что последнее число равно 4. Это номер операции, по которому программа сгенерирует проекции, которые в эксперименте получаются в детекторе после просвечивания образца в процессе его поворота на разные углы с постоянным шагом. Можно ввести все эти числа в окна, а можно просто заменить первую строку файла ct.par на указанную строку и затем они сразу появятся в окнах. Делаем кто как умеет. И затем надо нажать кнопку [OK]. Программа начнет работать и запишет в папку 360 файлов типа z000.tif, z001.tif и так далее до z359.tif.

Мы получили набор проекций, которые необходимы для работы программы томографии. Обычно они получаются экспериментально, а у нас программа их сгенерировала самостоятельно по образцу в виде картинки. Теперь надо изменить последнее число на 1. И снова запустить программу. А потом изменить его на 2 и снова запустить программу. Все -- программа вычислила сначала синограмму, а потом и томограмму. Результат можно посмотреть в папке с названием [r] внутри папки варианта.

Отдельная папка необходима в том случае, когда обрабатывается трехмерный образец и нужно считать очень много сечений по высоте образца. В нашем примере есть только одно сечение, но программа работает одинаково во всех случаях. Теперь можно посмотреть картинку томограммы и сравнить ее с оригинальной картинкой (образца). Указанным способом можно пробовать программу для самых разных картинок и для разных значений параметров. Можно изучать как значения параметров влияют на результат реконструкции, сколько времени для этого необходимо и так далее. Я сам тоже проделывал такие расчеты и писал про них статьи. Они есть на моем сайте. Вот ссылка на одну из таких статей .

Пока все. Если будут вопросы -- пишите мне в почту, адрес указан на моем сайте.