Простейшая обработка рентгеновских снимков
Здравствуйте, господа химики). Ни для кого не секрет, что от зрения мы получаем около 84% всей воспринимаемой информации. «На глаз» мы определяем длину, испорченность предмета или красоту проходящих мимо дам/юношей. Но возникают такие задачи, в которых принципиально не обойтись различного рода измерительными приборами, а самый точный прибор — это человеческий глаз. Одной из таких задач является анализ рентгеновских изображений (рентгенограмм). Качество рентгенограммы будет зависеть от множества факторов: монохроматичности падающего излучения, качества приёмника (например ПЗС-матрицы или рентгеновской плёнки), а также от величины просвечиваемого объекта или того, что мы хотим увидеть на снимке. Сегодня я предлагаю немного окунуться в магический мир обработки рентгеновских изображений).
Начнём, пожалуй, с вопроса о том, как же формируется рентгеновское изображение? Ну, сперва нам нужен источник РИ. Источники РИ разделяют на три типа: рентгеновская трубка, изотопные источники и излучение различных установок (типа синхротронного излучения или излучение лазера на свободных электронах).
Рентгеновская трубка представляет из себя вакуумный диод (или иногда триод).


Сначала накаляется катод, а затем между анодом и катодом создаётся большое напряжение (от 1 до 100 кВ). Электроны с бешеной скоростью несутся на анод и в нём тормозятся, при этом излучая энергию. Эта энергия и есть рентгеновское излучение. Так как электроны тормозятся в аноде, такой спектр называют тормозным. У электрона, попавшего в анод, отныне существует три судьбы: он может сразу врезаться в атом и остановиться, может медленно затормозить и постепенно излучать энергию, а может пролететь насквозь и вообще не провзаимодействовать (хотя последний вариант, конечно, номинальный). В первом случае он единоразово испустит квант РИ с максимальной энергией, равной, как известно, eU. В остальных случаях он будет частично излучать, а частично нагревать материал анода. Тормозной спектр описывается законом Крамерса:



I — это сила тока в трубке, Z — атомный номер материала анода (а точнее мишени), k — это некоторый коэффициент пропорциональности (нас пока не сильно он волнует). Чем выше напряжение, тем правее будет спектр, а чем сильнее ток, тем он выше — всё просто).
Из-за того, что электроны сильно стукаются в анод, анод сильно нагревается. Максимальный КПД рентгеновской трубки всего 5%, поэтому от анода требуется сильно отводить тепло. Для этого придумали стрелять пучком в тугоплавкий материал (например, в вольфрам), а материал вставить в оболочку из хорошего теплоотводителя (например, медь). Тогда медь — это основной анод, а вольфрам — мишень. Вместе с этим, всю байду усиленно охлаждают водой, маслом или воздухом, иначе там к чертям всё расплавится.
Стоит учесть, что в мишени РИ формируется не на поверхности, а в объёме и в процессе излучения низкоэнергетическая часть спектра тормозного излучения сильно поглощается. Из-за этого спектр превратится в тот, что изображён на рис. 4. Также, начиная с определённого момента, в мишени начнут возбуждаться атомы и совершать квантовые переходы, излучая при этом на строго определённой длине волны. Так как это излучение разное для разных материалов и как бы характеризует его, такой спектр назвали характеристическим (рис. 5). Вот с помощью такой страшной крокозябры нам и предстоит получать рентгеновские снимки).
Также трубки можно разделить по типу анодов. Как я сказал, анод может быть сделан из мишени и теплоотвода. Это рентгеновские трубки с массивным анодом. Если нам требуется наименьшее поглощение в материале и мы готовы пожертвовать интенсивностью, то анод можно сделать очень тонким. В этом случае РИ будет выходить наружу с обратной стороны анода. Это трубки с прострельным анодом. Также если нам не хочется охлаждать трубки, то мы можем анод заставить вращаться — это трубки с вращающимся анодом.


Изотопные же источники — это все радиоактивные материалы. Их интенсивность мала и присутствует исключительно характеристический спектр, поэтому ими мы просвечивать не будем. Также не будем просвечивать излучением от установок, ведь собирать синхрофазотрон, чтобы просветить зубки — это перебор…
Далее нам требуется обзавестись приёмником рентгеновского изображения. Приёмник — это любая штучка, которая покажет нам изображение, после того, как на него посветить. Исторически первыми приёмниками были рентгеновские плёнки, и они в медицине актуальны до сих пор. Нас же будут интересовать цифровые приёмники — ПЗС-матрицы. ПЗС-матрица — это набор фоточувствительных элементов. Минимальную площадь одного такого элемента мы будем называть пикселем. Когда на пиксель попадает квант РИ, он генерирует импульс тока и говорит: «Ага, квант РИ попал сюда!» Очевидно, что чем больше пикселей на миллиметр, тем чётче будет изображение (НАМ НУЖНО БОЛЬШЕ ПИКСЕЛЕЙ!!!). Любая ПЗС-матрица характеризуется чувствительностью или же динамическим диапазоном. Динамический диапазон — это диапазон от минимальной энергии, способной создать импульс в пикселе до максимальной, которую ещё регистрирует матрица (остальные просто пролетают насквозь). Если мы хотим собрать матрицу с наибольшей чувствительностью, то нам надо сделать её как можно толще. Но при этом если РИ будет регистрироваться в глубине пикселя, то вторичное излучение может создать импульсы в соседних пикселях. Тогда сразу много пикселей скажут, что в них попал квант РИ. В этом случае мы получим размытие картинки. Нам приходится выбирать: или динамический диапазон, или хорошая резкость.
Вот я сказал «резкость», но что это такое? Думаю, интуитивно понятно, что это, когда мы можем чётко видеть какой-либо контур. Это значит, что в соседних точках должен существовать как можно более крутой переход от одной яркости к другой. Таким образом, можно определить резкость, как градиент яркости. Чем больше градиент яркости в некоторой точке, тем эта точка «реще». Вместе с этим вводят понятие контрастности. Контрастность — это диапазон яркости рисунка. Ели разность яркостей в соседних точках максимальна, то это контрастное изображение, если практически неразличима, то неконтрастное. Проще всего эти два понятия можно уяснить из рис. 8.
Также в самой ПЗС-матрице всегда присутствуют тепловые колебания электронов, которые компьютер может считывать как импульсы и что-то нам выдавать в ответ, портя тем самым изображение. Говорят в этом случае о шуме изображения. Шумы — это очень плохие факторы, мешающие проведению исследований. От них можно избавиться, увеличив сопротивление ПЗС-матрицы, но в этом случае и облучать придётся квантами с высокой энергией, а это чревато ухудшением резкости и контрастности (я уж молчу про живые ткани). Таким образом, нам надо выбирать из трёх зол в зависимости от поставленной задачи.
Так как ПЗС-матрица выдаёт на выход импульсы тока в каждом пикселе, то из этой информации мы можем составить матрицу яркости рисунка. В простейшем варианте это чёрно-белый рисунок, в котором все ячейки матрицы заполнены цифрами от 0 до 255. 0 — это наименее яркий (чёрный), а 255 — это наиболее яркий (белый), а всё, что между, — это оттенки серого. Давайте для примера возьмём много-много рентгеновских снимков статуэтки котика:






























Хорошо видно, как при увеличении напряжения на трубке котик становится всё «прозрачнее». Также хорошо видно, что все эти снимки никуда не годятся… Они слишком шумные, и с этим нам предстоит бороться. Мы не зря сделали так много снимков. Так как шум имеет хаотичную структуру, можно его уменьшить, вычислив среднее значение. Для этого каждого котика представим в виде матрицы. В программе MatCAD это можно сделать с помощью функции READBMP («ссылка на рисунок»). Эта функция выведет нам матрицу яркости. Обозначим матрицы изображений латинскими буквами от A до J. А затем просто найдём среднее изображение:
Результатом этого действия будет изображение, усреднённое по шумам.
Если кто-то из вас шарит в программировании, то то же самое можно сотворить на любом другом языке, например, на С или Piton.
Важной характеристикой всякого рисунка является его гистограмма. Гистограмма — это по сути график, показывающий, сколько пикселей имеют определённую яркость. То есть пересчёт: «Один пиксель имеет яркость 215, два пикселя яркость 150, три пикселя яркость 16 и т. д.» К сожалению, у данных рисунков не очень наглядная гистограмма для показания процедуры контрастирования, поэтому мы возьмём другое рентгеновское изображение:
Весьма неконтрастный рисунок, даже не сильно понятно, что тут и где. Давайте взглянем на гистограмму:
Что ж, давайте узнаем минимальную и максимальную яркости данной рентгенограммы. В MatCAD это реализуется с помощью операторов min() и max(). Минимальная яркость вышла 101, а максимальная — 255. Существует много алгоритмов контрастирования, но наиболее простая из них — это линейное контрастирование. При линейном контрастировании мы линейным образом распределим яркости по всей гистограмме. Для этого запишем искомое преобразование в виде обыкновенного линейного уравнения:
y — это яркость преобразованной матрицы, а x — это яркость исходной матрицы. Коэффициенты a и b определяются желаемой яркостью y(min) и y(max). В соответствии с этим мы можем записать систему из двух уравнений:
Школьными методами или методом Крамера можем её решить и найти a и b. В итоге, линейное контрастирование запишется в таком виде:
Мы хотим, чтобы y(max) = 255, а y(min) = 0 для получения максимальной контрастности. В итоге, применительно к нашей рентгенограмме имеем:
Таким образом, мы получим более контрастное изображение:
Теперь диапазон яркости расширился, причём форма гистограммы осталась прежней. Такой приём часто позволяет разглядеть более тёмные участки (например, кисты или опухоли) на фоне более светлых (мягких тканей), если снимок был недосвечен. Согласитесь, на рис. 12 большая белая блямба выглядит куда заметнее, чем на рис. 10.
Что ж, ну вот уже что-то). За сегодня мы с вами научились бороться с шумами и линейно контрастировать рисунки, а это уже большое дело. Дальше нас ещё ждёт много интересных способов улучшения качества рентгеновского снимка, а на сегодня пока всё. Все рентгенограммы, используемые в данной статье, приложены к ней, развлекайтесь). А пока, всем удачки)
