В. В. КОМАРОВ, А. Н. ПРОНИЧЕВ
Московский инженерно-физический институт (государственный университет)
РАЗРАБОТКА СРЕДСТВ ВИЗУАЛИЗАЦИИ ПАНОРАМНЫХ
ИЗОБРАЖЕНИЙ СВЕРХВЫСОКОГО РАЗРЕШЕНИЯ
О разработке специализированных средств для анализа изображений медицинских препаратов
В задаче автоматизации анализа гистологических препаратов (в том числе при проведении телемедицинских консультаций) одним из требований к разрабатываемой системе является обеспечение формирования обзорного изображения с возможностью детализации выбранной для анализа зоны. Из-за сверхбольшого разрешения панорамных изображений (порядка 12000х8000 пикселов и более, 24 бит/пиксел) использование классических методов при обеспечении возможности анализа таких изображений пользователем, а равно использование стандартных средств отображения (таких, как Windows Picture and Fax Viewer) крайне неэффективно - пользователю необходимо ожидать по 5-20 секунд при каждой попытке изменить масштаб просмотра.
В данной ситуации для реализации вывода на экран уменьшенных экземпляров панорамного изображения нельзя использовать метод отброса лишних пикселов из-за потери информативности конечного изображения. Допускается использовать исключительно цветовое усреднение, то есть обработку всех пикселов исходного изображения. Время выполнения такой операции, в отличие от упомянутой выше, пропорционально размеру исходного изображения (а не размеру конечного, как в случае отбрасывания пикселов), что намного более значительно загружает процессор. В частности, не подходят методы VCL TCanvas::StretchDraw (только режим отбрасывания пикселов) и WinAPI StretchBlt (оба режима). Второй метод, даже в режиме усреднения, не подходит сразу по двум причинам – низкого быстродействия (пользователю придется ожидать десятки секунд при каждой попытке изменить масштаб просмотра), и невозможностью работы с объектами ядра в фоновом потоке (если таковые созданы в главном).
В основу решения задачи была положена модель, проводящая интенсивные предварительные вычисления. Само построение уменьшенных копий изображения производится в фоновых потоках. Причем сразу при загрузке исходного изображения последовательно строятся уменьшенные копии изображения в масштабах 1/16, 1/8, 1/4, 1/2. Указанная последовательность аргументируется тем, что сначала специалисту нужно представить максимально уменьшенное (обзорное) изображение препарата, на котором он далее будет выбирать области для увеличения. Все уменьшенные копии начинают строиться в памяти с момента загрузки исходного изображения, и не выгружаются оттуда до завершения анализа. Несмотря на то, что данная операция повышает необходимый объем ОЗУ не более чем на 34% относительно объема исходного изображения – то есть 470 МБ ОЗУ при объеме изображения в 350 МБ, она позволяет не проводить никаких вычислений впоследствии. Как только создается уменьшенная копия 1/16, она немедленно выводится на экран, а в фоновом потоке начинает строиться копия 1/8, и так далее. Наиболее вероятно, что все копии будут достроены за тот период времени (несколько секунд), когда пользователь рассматривает обзорную копию 1/16.
Кафедрой 46 МИФИ была проведена работа по реализации модуля, обеспечивающего работу с панорамными изображениями на основе указанной выше модели. Конечный модуль был реализован в виде визуального компонента C++Builder 6, и может быть использован при создании любых программ в данной среде разработки.
Модуль обеспечивает практически мгновенную (сотые доли секунды) реакцию на запросы пользователя «увеличить/уменьшить» масштаб просмотра, а также имеет инструмент «рука» для перемещения области просмотра с помощью мыши и реакцию на события мыши, определяемую программистом, использующим модуль.
В ходе решения поставленной задачи была реализована собственная функция масштабирования, работающая с изображениями как с памятью (а не объектами ядра Windows). Функция производит уменьшение масштаба изображения в N раз (N кратно степени 2), с полным цветовым усреднением по RGB-компонентам. Отличительной особенностью данной функции является сильно оптимизированная, реализованная на ассемблере часть, использующая SIMD-расширения процессоров семейства x86 – MMX, SSE, SSE2 и SSE3. Прирост быстродействия по сравнению с использованием средств WinAPI для масштабирование составляет 1000% и более, в зависимости от фактора уменьшения масштаба. Данную функцию, в отличие от стандартных средств, можно использовать в фоновых потоках.
Как показал эксперимент по оценке быстродействия разработанного модуля, даже если допустить маловероятный вариант, что пользователь попытается увеличить изображение, ранее, чем будет достроена очередная копия, ожидать ему придется не более 1-2 секунд. Для обеспечения такой схемы – «вычисление всего заранее в фоновом потоке» и «реакции на действия пользователя, и выполнения действий только тогда, когда будут сделаны лишь необходимые для этого вычисления» был использован механизм синхронизации потоков с помощью критических секций Win32 и хэшированных ассоциативных контейнеров C++ STL.
Таким образом, разработка специальных средств визуализации панорамных изображений позволила значительно ускорить процесс анализа данных изображений специалистом, полностью исключив влияние недостаточного быстродействия на время анализа, что особенно актуально при проведении экспресс-диагностики (во время операций). Данные результаты были получены при использовании компьютера Intel Pentium 4 1,6 GHz, 1,0 GB RAM.


