Программу Для Просмотра Снимков Мрт

Posted By admin On 18.07.19

Добрый день, уважаемое хабра-сообщество! Сегодня мне бы хотелось пролить свет на одну из самых неосвещённых тематик на хабре. Речь пойдёт о визуализаторе медицинских радиологических изображений или DICOM Viewer'е.

Благодаря развитию медицины, грыжа позвоночника может эффективно устраняться с помощью новых методов лечения. Раннее обнаружение проблемы способствует скорейшему выздоровлению пациента. Sante Dicom Viewer 4.0 – отличная программа для просмотра DICOM файлов. Работает со снимками, полученными на КТ, МРТ и УЗИ. Программу можно скачать бесплатно на официальном сайте, но доступ ко многим важным функциям открывается только после покупки лицензии. Преимущества программы. Бесплатный доступ; совместимость с Windows XP, Windows 10 / 8.1 / 8/7 и Vista; просмотр группы снимков и серий; экспорт снимков в формат JPG; возможность увеличить (приблизить) снимки. Полный интерфейс программы доступен только после ее покупки. Feb 16, 2014 - Простой DICOM Viewer. Программа для работы с КТ изображениями под MacOS. Worklist вижу, но сами снимки не загружаются.

Планируется написать несколько статей, в которых поговорим об основных возможностях DICOM Viewer'а — в том числе возможности воксельного рендера, 3D, 4D, рассмотрим его устройство, поддержку протокола DICOM и др. В этой статье я расскажу о воксельном рендере и его устройстве. Всем заинтересовавшимся добро пожаловать под кат. Компания, в которой я работаю, имеет большой опыт в сфере разработки программного обеспечения медицинской направленности. С некоторыми проектами мне довелось работать, поэтому хотелось поделиться накопленным опытом в этой области и показать, что у нас получилось. Также хотелось бы воспользоваться случаем и получить обратную связь от врачей-ренгенологов по использованию Viewer'а. Одним из наших продуктов является DICOM Viewer — просмотрщик медицинских изображений формата DICOM.

Он умеет рендерить 2D изображения, строить 3D модели на основе 2D слайсов, а также поддерживает операции как для 2D изображений, так и для 3D моделей. Об операциях и возможностях Viewer'а я напишу в следующей статье.

В конце статьи будут указаны ссылки на сам DICOM Viewer с полным функционалом, который описан в статье и на данные для проб. Но всё по порядку. Представление изображений в медицине Чтобы представлять как построить 3D-модель, например, головного мозга, из 2D DICOM-файлов, нужно понимать как представлены изображения в медицине. Начнём с того, что все современные томографы (МРТ, КТ, ПЭТ) не производят готовых изображений. Вместо этого формируется файл в специальном формате DICOM, который содержит информацию о пациенте, исследовании, а также информацию для отрисовки изображения.

Фактически каждый файл представляет срез (slice) произвольной части тела, в какой-либо плоскости, чаще всего в горизонтальной. Так вот каждый такой DICOM-файл содержит информацию об интенсивности или плотности тканей в конкретном срезе, на основе которой строится итоговое изображение. На самом деле интенсивность и плотность — это разные понятия. Компьютерная томография сохраняет в файлах рентгеновскую плотность, которая зависит от физической плотности тканей.

Кости имеют большую физическую плотность, кровь меньшую и т.д. А магнитно-резонансный томограф сохраняет интенсивность обратного сигнала. Мы же будем применять термин плотности, обобщая таким образом выше описанные понятия. Информацию о плотности в DICOM-файле можно представить в виде обычного изображения, у которого есть разрешение, размер пикселя, формат и другие данные. Только вместо информации о цвете в пикселе храниться информация о плотности тканей. Диагностическая станция производит не один файл, а сразу несколько для одного исследования. Эти фалы имеют логическую структуру.

Файлы объединяются в серии и представляют собой набор последовательных срезов какого-либо органа. Серии объединяются в стадии. Стадия определяет всё исследование. Последовательность серий в стадии определяется протоколом исследования.

2D-рендер Информация о плотности тканей в DICOM-файле является основой для его отрисовки. Чтобы отрисовать изображение нужно значениям плотности сопоставить цвет. Это делает передаточная функция, которую в нашем viewer'е можно редактировать. Кроме того есть множество готовых пресетов для отрисовки разных по плотности тканей разными цветами. Вот пример передаточной функции и результат отрисовки: На графике обозначены две точки белого цвета на концах белой линии, что говорит о том, что будет рисоваться только белый цвет.

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

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

Абсолютная передаточная функция строится для всех возможных плотностей. Для КТ это (от -1000 до 3000). Плотность равная -1000 соответствует воздуху, плотность, равная 400, соответствует костям, нулевая плотность соответствует воде. Для плотностей по шкале Хаунсфилда верно следующее утверждение: каждая плотность соответствует определённому типу ткани. Однако для МРТ это утверждение не верно, поскольку МР-томограф для каждой серии генерирует собственный набор плотностей. То есть для двух серий одна и та же плотность может соответствовать разным тканям тела.

В абсолютной передаточной функции аргументы соответствуют абсолютным значениям плотности. Относительная передаточная функция строится на основе так называемого окна, которое указывает какой именно диапазон плотностей нужно отрисовывать. Окно определяется параметрами Window Width (W) и Window Center (L), рекомендуемые значения которых задаются томографом и сохраняются в файлы-снимки в соответствующих DICOM-тэгах. Значения W и L могут быть изменены в любой момент. Таким образом, окно ограничивает область определения передаточной функции.

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

В этом случае все плотности, которые попадают справа от передаточной функции принимают значения самого правого значения передаточной функции, а плотности слева — самого левого значения передаточной функции соответственно. Пример абсолютной передаточной функции, в которой плотность задана в абсолютных значениях по шкале Хаунсфилда: Вот пример более сложной передаточной линейной функции, окрашивающей плотности в несколько цветов: Как и на предыдущем рисунке прозрачность имеет линейную характеристику. Однако для конкретных плотностей заданы цвета. Помимо цвета каждая из этих точек определяет прозрачность (в соответствии с белой линией на графике). В случае 3D-модели каждая из точек также хранит отражательные компоненты. Между конкретных точек производится интерполяция отдельно для каждой компоненты, включая прозрачность, RGB, отражательные компоненты, получая таким образом значения для остальных плотностей. Прозрачность в передаточной функции не обязательно должна быть линейной.

Она может быть любого порядка. Пример передаточной функции с произвольной прозрачностью: Помимо прочего, на каждом 2D-изображении отрисовывается информация об изображении.

В правом нижнем углу рисуется куб ориентации, по которому можно понять как расположен пациент в данном изображении. H – head (голова), F – foot(ноги), A – anterior (анфас), P – posterior(спина), L – left(левый бок), R – right(правый бок). Эти же буквы дублируются в середине каждой из сторон. В левом нижнем и правом верхнем углах для врачей-ренгенологов отображается информация о параметрах томографа, с которыми было получено данное изображение. Также справа рисуется линейка и масштаб одного деления соответственно. Воксельный рендер Что это?

Посколько воксельный рендер является основой для нескольких наших проектов, он представлен в виде отдельной библиотеки. Она называется VVL(анг. Volume Visualization Library). Она написана на чистом С без использования каких-либо сторонних библиотек. VVL предназначена для рендеринга трёхмерных моделей, построенных из данных DICOM-сканеров (МРТ, КТ, PET). VVL использует все преимущества современных многоядерных процессоров для realtime-отрисовки, поэтому может работать на обычной машине, а также имеет реализацию на CUDA, что даёт гораздо более высокую производительность, чем на CPU.

Загрузочной

Вот пара изображений, полученного рендером на основе данных компьютерной томографии. В VVL реализован весь процесс отрисовки, начиная с построения модели и заканчивая генерированием 2D изображения. Есть такие фишки как ресэмплинг, антиалиасинг, полупрозрачность. Воксельная модель изнутри Воксель — это элемент объёмного изображения, содержащего значение элемента в трёхмерном пространстве. В качестве значения вокселя в общем случае может выступать что угодно, включая цвет.

В нашем случае в качестве значения вокселя выступает плотность. Что касается формы вокселя, то в общем случае воксели могут быть кубическими, или представлять собой параллелепипед. У нас воксели представлены в виде кубов для упрощения и удобства работы. Координат воксели не хранят, они вычисляются из относительного расположения вокселя. По сути, воксель является полным аналогом пикселя в 3D. Picture element) — элемент изображения,Voxel (англ.

Volume element) – элемент объёма. Практически все характеристики пикселя переносятся на воксель, поэтому можно смело проводить аналогии, учитывая размерность. Таким образом, воксели используются для представления трёхмерных объектов: На скриншоте можно разглядеть маленькие кубические воксели. Для хранения плотности в вокселе используется 2х байтовое число. Поэтому можно вычислить размер модели: 2 байта на плотность.

количество вокселей. Некоторые воксельные рендеры, помимо сказанного, хранят в вокселе информацию для рендеринга, что требует дополнительной памяти. Практически нами было установлено, что это нецелесообразно и нужные данные выгоднее вычислять «на лету», чем хранить лишние байты. Представление модели в памяти Входными данными для воксельного рендера является DICOM-серия, т.е. Несколько изображений, представляющих какую-либо область тела. Если изображения одной серии наложить друг на друга в той последовательности и в той плоскости, в которых они были сделаны, можно получить 3D-модель.

Представить это можно как-то так: Поскольку протоколом DICOM чётко не декларируется, в каком тэге хранится величина расстояния между изображениями в серии, приходится вычислять расстояние между изображениями по другим данным. Так, каждое изображение имеет координаты в пространстве и ориентацию. Этих данных достаточно, чтобы определить расстояние между изображениями. Таким образом имея разрешение изображения и расстояние между ними в серии, можно определить размер вокселя. Разрешение изображения по X и Y, как правило, одинаковое, т.е. Пиксель имеет квадратную форму.

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

В случае, если размер пикселя меньше расстояния между слайсами, то мы добавляем слайсы (supersampling), а если размер пикселя больше, то убираем слайсы (downsampling). Таким образом размер пикселя становится равным расстоянию между слайсами и мы можем построить 3D-модель с кубической формой вокселя. Проще говоря, мы подгоняем расстояние между изображениями к разрешению изображения.

Полученные воксели хранятся в структуре, представляющей собой массив, оптимизированный под доступ в произвольном направлении движения, в случае отрисовки на процессоре. Массив разбит логически на параллелепипеды, хранящиеся в памяти непрерывным куском размером 1,5кб при размере вокселя 2 байта, что позволяет поместить несколько близко расположенных параллелепипедов в кэш процессора первого уровня. Каждый параллелепипед хранит 5х9х17 вокселей. Исходя из размера такого параллелепипеда рассчитываются координаты смещений в общем массиве вокселей и сохраняются в 3 отдельные массива xOffset, yOffset, zOffset. Поэтому обращение к массиву происходит так: mxOffestx + yOffsety + zOffsetz. Таким образом, начиная читать данные в параллелепипеде, мы заставляем процессор положить весь параллелепипед в кэш процессора первого уровня, что ускоряет время доступа к данным.

В случае рендеринга на GPU используется специальная трёхмерная структура в графической памяти видеокарты, называемая 3D-текстурой, доступ к вокселям в которой оптимизируется средствами видеоадаптера. Рендеринг Рейтрейсинг — как способ рендеринга. Перемещаемся по лучу с некоторым шагом и ищем пересечение с вокселем и на каждом шаге проводим трилинейную интерполяцию, где 8 вершин представляют середины соседних вокселей. На CPU используется окто-дерево в качестве оптимальной структуры для быстрого пропуска прозрачных вокселей. На GPU для 3D-текстуры трилинейная интерполяция выполняется автоматически средствами видеокарты.

На GPU не используется окто-дерево для пропуска прозрачных пикселей, поскольку в случае 3D-текстуры иногда оказывается, что быстрее учитывать все воксели, чем тратить время на поиск и пропуск прозрачных. В качестве модели освещения используется, которое позволяет сделать изображение объёмным и даёт хорошую картинку и в то же время не мешает работать врачам-ренгенологам. Рейтрейсинг производится с учётом прозрачности вокселей, что позволяет рендерить полупрозрачные ткани. Рендер поддерживает режимы перспективной и параллельной проекций Перспективная проекция более реалистична.

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

Добавить метки Пометьте публикацию своими метками Метки необходимо разделять запятой. Например: php, javascript, андронный коллайдер, задача трех тел. Принцип заключается, если упрощенно в следующем: Объект неподвижен между источником и приемником. Источник и приемник вращаются вокруг объекта.

Повернулся на долю градуса — измерил поглощение, повернулся еще на долю градуса — еще раз измерил. А потом с помощью злого матанализа вычисляется распределение «поглощающих элементов» на сканируемой площади. При этом сканер и источник представляют собой вертикальную линейку, что позволяет обычно делать 256 срезов за один проход. В конусно-лучевом варианте луч не плоский, а конусный)). Процесс построения интегрированной сети радиология+УЗИ+PACS+Worklist довел до того, что пришлось делать свои фильтры для Wireshark, чтобы разбирать, например, почему аппарат A не берет Workilist из PACS (в то время, когда все остальные жуют без проблем), потому как ни PACS ни аппарат логов и спецификаций не предоставляют. Буйство проприетарных велосипедов в полный рост. Отдельно выражаю благодарность тому «гению» менеджерско-технической мысли, который додумался в аппарат УЗИ (с рентгенами и прочим — аналогично) стоимостью несколько миллионов ставить ровно один SOHO (для дома и малого офиса)-винт под внутреннее ПО и архив исследований.

В рентгенах пытались сделать мега-прорыв — ставили RAID1 из двух офисных винтов. Понятно, что в итоге помирали оба сразу. «Великолепные» решения в области хранения жизненно важной информации! С хранением данных в PACS проблем нет — ему организован огромный LUN в нашей SAN, с которого дополнительно снимаются резервные копии на отдельно стоящий массив в другом здании. Проблема дисков в составе аппаратуры не в размере, а в надежности. Один-два бэда на единственном диске радостно кладут весь аппарат в долгий (неделя-месяц-полгода) ремонт, вот в чем трудность.

Если бы там был хотя бы RAID6 или 10, аппарат бы выдавал какую-нибудь ругань, но работал бы, и мог бы продержаться до прибытия сервисного инженера. У меня тоже разные такие картинки есть. Немного занимался подобной визуализацией. Быть может многим будет интересно узнать, что PVS-Studio (вернее тогда ещё Viva64) вырос именно оттуда. Обрабатывая и визуализируя большие объемы данных на 64-битных системах столкнулись с тем, что отсутствовал инструментарий, позволяющий выявить 64-битные ошибки. Торрент diablo 2 model. Фактически всё свелось к вычитыванию глазами наиболее важных мест кода.

И именно потом появилась идея предложить миру инструмент статического анализа. Не хотите попробовать PVS-Studio На своём коде?

Программа Для Создания Загрузочной Флешки

Спасибо за отличную статью — было интересно прочитать про внутреннее устройство DICOM. Сам я с DICOM сталкивался несколько раз — у меня друг работал в фирме, которая делала подобную программу для рендеринга, и несколько раз делал КТ (там тоже был софт для просмотра DICOM). Тогда интересно было почитать про сам формат, но хорошей статьи, которая бы всё объяснила подробным языком, не нашёл.

Собственно, вопросы: 1) А ваша фирма только в Воронеже работает? Есть представительства в других городах? 2) Какой бесплатный DICOM viewer Вы можете посоветовать? Для домашнего использования. А то вот делают снимки и хочется их на компе сохранить, чтобы в случае чего можно посмотреть. Те программы, которые идут с диском заточены под определённую структуру папок, а хочется просто универсальный софт, который открывает DICOM файлы.

3) И какие программы для медицины вы ещё делаете? Я вообще работал в фирме по производству медицинского ПО, но это было ПО для ведения записей и учёта. А вот интересно, из первых рук, какое ещё чисто медицинское ПО создаётся.:). Спасибо Вам за проявленный интерес. 1) Фирма находится в Воронеже. Наши представители иногда бывают в Москве. 2) Могу посоветовать нашу программу.

Мы можем подготовить для Вас урезанную версию с базовыми функциями просмотра. А нам будет приятно получить от Вас обратную связь. 3) Кроме DicomViewer у нас есть собственный PACS-сервер. В порядке аутсорса пишем большую RIS (ИС в радиологии) систему (учёт пациентов, исследований, печать заключений и тд.и т.п.).

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

ПО наше, а другие товарищи делают железо (катетеры). Недавно оформили документы на него об успешном прохождении клинических испытаний. Как-нибудь напишу статью про него. Спасибо за предложение! Но боюсь от меня фидбек не очень будет — мне нужен софт, чтобы просто стоял на компе и при случае можно было посмотреть снимки. Не на постоянной основе:) Про PACS сервер читал в Вашей прошлой статье. Вы же о нём сейчас говорите?

А про «проект по инвазивному картированию сердца для лечения всякого рода аритмий» интересно было бы почитать! Хотя бы в общем виде — как писали, как тестировали. Всё таки разработка очень отличается от большинства софта — цена ошибки очень высока. На Хабре как то статья была про разработку для Боинга — интересно было читать, как разрабатывают такие проекты, когда нельзя просто на компе запустить и проверить, как оно работает. Подскажите, у меня 32-bit система пока ещё, так что я не смог поставить вашу прогу.

Программа Для Просмотра Снимков Мрт

У меня есть диск с КТ, который мне сделали в московском первом меде. Модель оборудования, на котором делали КТ, я разумеется не знаю. На диске нет.dcm файлов. Как я понял, отношение к DICOM на диске имеет только файл DICOMDIR в корне и подпапка DICOM, в которой (ещё в нескольких вложенных папках) лежат файлы срезов без разрешений. Для просмотра всего этого на диске предусмотрена программа Centricity DICOM viewer 3.1. Причём она не работает, если просто тупо скопировать содержимое CD на HDD, файлы удаётся просмотреть только запуская её с CD. Я пробовал InVesalius 3.0, он в моих файлах DICOM вообще не увидел.

Программа Для Обновления Windows 10

И я вот теперь думаю, есть ли мне вообще смысл вашу программу пробовать, она распознает там чё-нить, не подскажете? Скачать новые фильмы через торрент бесплатно.