Inobitec corporate blog
Algorithms
Image processing
Mathematics
Software
Comments 15
0
Во-вторых, с учетом того, что исследования обычно имеют размер примерно 512х512х512 вокселей, размер памяти, требуемой для хранения результатов сглаживания, в среднем будет занимать около 5 Гб. Чтобы сократить количество расходуемой памяти мы воспользовались пирамидой (scale space pyramid).

Не вполне понимаю, каким образом сократили расход памяти? Неужели древообразная ссылочная структура с листовыми узлами на разных уровнях? Мне это не кажется хорошим решением — ссылки сами по себе занимают объём, дико фрагментируют память и т.д.
Мы разрабатывали т.н. "блочные модели" для геологии (по сути, тот же 3D массив). Расход памяти там сокращается за счёт своей системы поблочного свопинга и сжатия данных быстрыми алгоритмами. Пирамида только ускоряет обработку данных, но не особо сокращает расход памяти.


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

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

+1
Не вполне понимаю, каким образом сократили расход памяти?
Пирамида нужна только для хранения результатов сглаживания. Грубо говоря, если сделать в лоб, то нужно памяти: sizeof(float)*512x512x512 (для сглаживания с sigma1) + sizeof(float)*512x512x512 (для сглаживания с sigma2) +… + sizeof(float)*512x512x512 (для сглаживания с sigma10). Ответ там же:
Идея заключается в том, что раз уж после каждого сглаживания значения интенсивности в соседних вокселях размываются и становятся примерно равными, то нет смысла хранить их все. Т.е. чем больше sigma, тем меньше нам потом потребуется просчитанных вокселей, чтобы восстановить сглаживание по всему объему.
В самой пирамиде все хранится по аналогии с рисунком без всяких тонкостей: для sigma1 512х512х512, для sigma2 256х256х256, для sigma3 128х128х128 и т.д. Т.е. сокращение памяти идет за счет того, что само сглаживание имеет некоторые особенности. Scale space pyramid — довольно стандартное решение, можно посмотреть в интернете/википедии. Сжатие самих данных — это уже следующий шаг, но он не потребовался.
0
Мипмапы используются для избегания шума, который возникает, если отрисовать текстуру в уменьшенном виде «пиксель-в-пиксель» на экране. В нашем случае пирамида нужна, чтобы потом получаемые значения производных после сглаживания максимально были приближены к этим же значениям, но получаемым без использования пирамид. Тут никак не участвуют расстояние до камеры или разрешение экрана, но зато нужна точность при вычислении производных, что привносит свои тонкости в построение пирамиды. Хотите, проведите аналогию, но, как мне кажется, она будет довольно грубой.
0

А, ясно. Вы сокращаете память с n*sizeof(float)*512^3 (n>1, n in Z) до (8/7)*sizeof(float)*512^3. Я подумал, что с sizeof(float)*512^3 до величины, меньшей этого значения.

+3
Уж не знаю, как вы так нагрешили раньше, но конкретно эта статья — огонь! Обязательно пишите еще.
0
А теперь все то же самое на бис для ультразвука :) CT/MRT конечно проще…
-1
Делаем небольшой шаг в направлении сосуда и попадаем в новый воксель

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

0
В картинках поясню.
Мы по изображению считали индекс похожести на дорогу, а затем искали путь минимальной стоимости между двумя точками.
Исходное изображение


Индекс похожести на дорогу (чем чернее, тем лучше)


Увеличенный фрагмент дороги


0
Ух ты ж елки-палки, вот где специалисты-то водятся! Я вообще-то сервис-инженер, в частности по исследовательским рентгеновским томографам для мелких лабораторных животных. От человеческих томографов наши отличаются разрешением в единицы микрон на воксель и небольшим сканируемым объемом (труба 80мм диаметром). Иногда пользователи вопрос задают типа «а в какой программе можно мышкой щелкнуть и весь скелет автоматически выделить», да и самому иногда результаты обрабатывать приходится. А программа-то вот она, и не буржуйская :) Сколько оно у вас примерно стоит? А то исследователи обычно небогатые, по сравнению с медиками.
0
У нас несколько версий. Одна из них вообще бесплатная, но функционал также ограничен. Т.к. я не в курсе всех тонкостей, то лучше всего написать на почту (Наш сайт->Компания->Контакты). Ее почти круглосуточно мониторит специальный человек, и он с радостью отвечает на любые вопросы. В идеале надо подробно написать какие именно функционал и возможности вам нужны. Вариант два: просто скачать версию с сайта (она будет полноценной в течение месяца), а когда кончится триальный период, точно также спросить на почте «сколько будет стоить версия с этим и вот тем?».
0
Нет, там на входе сетка и центральная линия ищется за счет контуров. С нашими входными данными делается ровно наоборот: только после построения центральной линии можно найти контуры (стенки) сосуда. Также задача найти контур в объеме нетривиальна и нормально не решается через классический edge detection.
0
Замечательная статья. Метод знаком, но с технической стороны, без названия. Не могли бы Вы дать источник метода?
0
Спасибо! У метода нет общепринятого названия, как вариант: Multi-Scale Vessel Segmentation Using Hessian Matrix Enhancement, ключевые слова Vessel Hessian Matrix. Полноценного источника также не существует: везде дается теория, типа «сглаживайте и стройте матрицу Гессе», но о конкретных реализациях или умалчивают, или они различаются. В итоге нужно перелопатить 100500 сайтов и pdf-фок, чтобы найти рабочее решение для каждого этапа вычислений.
Only those users with full accounts are able to leave comments., please.