КОМПЛЕКСЫ ПРОГРАММ ДЛЯ ЦИФРОВОЙ ОБРАБОТКИ ИЗОБРАЖЕНИЙ
Т.Н. Байбикова
SOFTWARE SYSTEMS FOR DIGITAL IMAGE PROCESSING T.N. Byibikova
Аннотация. В статье проводится сравнительный анализ функциональных возможностей некоторых современных комплексов программ, предназначенных для обработки цифровых графических изображений.
Ключевые слова: комплекс программ, цифровая обработка изображений, библиотека OpenCV, библиотека HALCON.
Abstract. Article focuses on the comparative analysis of functionality of some modern program complexes intended for processing of digital graphical images.
Keywords: program complex, digital image processing, OpenCV library, HALCON.
В течение нескольких последних десятилетий вопросами обработки изображений занимается значительное количество различных организаций и предприятий. Задачи извлечения полезной информации из изображений возникают в самых различных областях знаний: в медицине, радио-, тепло- и гидролокации, исследовании космического пространства, телевидении и т.д.
Столь повышенный интерес к данной отрасли знаний послужил причиной создания многочисленных алгоритмов обработки изображений, которые первоначально создавались стихийно, существовали отдельно друг от друга, но впоследствии стали объединяться в отдельные группы, а также в специализированные пакеты и комплексы программ.
Для лучшего понимания того, что такое комплекс программ и чем он отличается от обычной программы, дадим некоторые определения. В соответствии с ГОСТ 19.101-77 [1] программы делятся на следующие виды:
1. Компонент. В этом случае программа рассматривается как единое целое, выполняет законченную функцию и применяется самостоятельно или в составе комплекса.
2. Комплекс. Такая программа состоит из двух или более компонентов и (или) комплексов, выполняет взаимосвязанные функции и применяется самостоятельно или в составе другого комплекса.
В данной статье под комплексом программ подразумевается программа, удовлетворяющая определению комплекса, указанному п. 2 ГОСТ 19.101-77.
Рассмотрим историю вопроса.
Первые задачи цифровой обработки изображения появились в начале 1960-х гг. в связи с программой освоения космоса [2, с. 28]. Первые разрабатываемые алгоритмы были связаны с улучшением визуального качества изображений, передаваемых космическими аппаратами. В дальнейшем, в конце 1960-х и начале 1970-х гг., область применения данных алгоритмов значительно расширилась, и они начали использоваться в медицине, дистанционном исследовании полезных ископаемых, астрономии, археологии [2, с. 30]. Стали появляться алгоритмы, позволяющие не только улучать цифровое изображение, но также и восстанавливать частично потерянную или искаженную информацию.
Указанные выше задачи обработки изображений (улучшение качества графической информации и восстановление потерянных и искаженных данных) ориентированы на восприятие информации зрительной системой человека. Однако с развитием вычислительной техники появился еще один класс задач, связанных с машинным восприятием графических цифровых объектов. Для них характерно получение таких данных об изображении, как нахождение его разнообразных статистических характеристик, коэффициентов преобразования и т.п. Получение данных характеристик легло в основу методов и алгоритмов «понимания» изображений, что подразумевает нахождение различных пространственных соотношений.
Вопросам цифровой обработки изображений посвящено значительное количество трудов и монографий как отечественных специалистов, так и зарубежных. Различные авторы несколько по-разному классифицируют основные направления цифровой обработки графической информации. Так, известные американские специалисты в данной области Р. Гонсалес и Р. Вудс выделяют следующие основные направления обработки и анализа изображений (видеоинформации) [2, с. 12]:
- основные методы фильтрации и вейвлет-преобразования;
- методы улучшения, восстановления и сжатия черно-белых и цветных изображений;
- сегментация изображений;
- распознавание образов, описание и представление деталей;
- морфологический анализ изображений.
В отечественной литературе данной тематике посвящены труды многих специалистов в области цифровой обработки изображений, в том числе труды В.В. Яншина и Г.А. Калинина [3]. Данные авторы провели ряд значительных исследований в области цифровой обработки изображений, и в своих работах выделяют следующие основные направления и методы обработки цифровых изображений:
- решение задач научного и исследовательского характера, возникающих на этапе предварительной обработки;
- кодирование и сжатие изображений;
- сегментация изображений;
- распознавание образов;
- визуальные реляционные базы данных и базы знаний;
- описание и понимание изображений.
К сожалению, в конце прошлого века и в начале нового в отечественной литературе стал ощущаться значительный спад в издании трудов, отражающих «как фундаментальные основы, так и изменения, происходящие в области цифровой обработки видеоинформации» [2, с. 14]. Тем не менее, в трудах Яншина и Калинина сделан важный шаг к унификации разрабатываемых алгоритмов. Разработанные алгоритмы (на ЯВУ Си) имеют практическую направленность, приводится их подробное описание и особенности применения [3].
Использование отдельными разработчиками унифицированных модулей программ, которые могут быть объединены (или включены) в пакеты (комплексы), дает ряд преимуществ и позволяет:
- облегчить разработку проблемно-ориентированных программных средств, так как разработчики получают возможность сконцентрировать усилия на нестандартной части задачи;
- сравнивать новые решения с уже известными методами, встроенными в программные комплексы, что дает возможность
оценивать некоторые количественные и качественные характеристики разрабатываемых методов и алгоритмов по отношению к существующим, позволяя, таким образом, отказываться от неэффективных решений на ранней стадии реализации требуемых методов и алгоритмов.
Несмотря на то, что подход, использованный отечественными учеными, имеет ряд неоспоримых преимуществ, таких, как возможность получения теоретических сведений о работе предложенных методов и, одновременно с этим, ознакомиться с исходным кодом алгоритмов и реализовать их в работающей программе, однако при этом имеется и ряд недостатков. Недостатки обусловлены тем, что в работах предлагаются листинги отдельных функциональных модулей, связанных друг с другом и использующих в работе данные, полученные в результате обработки другим модулем. При этом разработчику приходится изучить и реализовать весь (или почти весь) комплекс предлагаемых программ, даже в том случае, если ему необходим ограниченный набор функций. Также разработчик вынужден самостоятельно заботиться о модификации реализованных методов и о пополнении своих проектов новой функциональностью. Таким образом, востребованным стал подход, основанный на том, чтобы объединять существующие алгоритмы в программные комплексы. Он получил широкую популярность благодаря тому, что в задачах цифровой обработки изображений многие этапы обработки, а также применяемые методы и алгоритмы, полностью или частично совпадают.
К настоящему моменту разработано весьма значительное количество программных инструментальных пакетов и комплексов программ для обработки цифровых изображений. Некоторые из них предназначены для дизайнеров и архитекторов, например, такие, как Photoshop и CorelDraw, другие используются для научной визуализации и результатов и т.п. Среди последних можно выделить Matlab, Mathcad и др. Перед разработчиками все чаще встает вопрос, каким инструментальным средством лучше воспользоваться для достижения требуемого результата.
Рассмотрим основные возможности способов обработки изображений на примере двух часто используемых инструментариев, предназначенных для обработки цифровых графических изображений, имеющих схожую функциональность, но при этом использу-
ющих несколько различные подходы организации доступа к своим функциональным возможностям.
Библиотека HALCON предназначена для профессиональной обработки цифровых изображений и распространяется по лицензии. Поддерживает значительное количество форматов файлов графических изображений, как повсеместно употребляемых, так и характерных только для данной библиотеки. Среди них можно отметить такие, как AVI, binary, BMP, GIF, PCX, PNG, PNM, JPEG, JPEG-2000, JPEG XR, TIFF, HALCON Iconic Object (HOBJ), Sun-Raster, XWD.
В данной библиотеке чрезвычайно важная роль отводится операциям фильтрации [4], которые разбиты на группы, представленные в табл. 1.
Необходимо отметить, что фильтры, указанные в табл. 1, применяются для обработки цифровых изображений на различных этапах обработки графической информации, а также для решения довольно широкого круга задач.
К основным функциональным возможностям библиотеки HALCON, большая часть которых основана на численных методах, лежащих в основе фильтров, указанных в табл. 1, можно отнести следующие:
1. Выделение границ, контуров и линий. Для данного круга задач широко применяются фильтры пороговой обработки.
2. Субпиксельная обработка контуров.
3. Обработка контуров: аффинные и проекционные преобразования, различные виды сегментации, слияние коллинеарных контуров, операции над множествами (объединение, пересечение, разность), нахождение расстояния, создание различных объектов стандартной формы (окружность, эллипс, линия, прямоугольник).
4. Определение характеристик формы: площадь фигуры, центр, ориентация, кругообразность, компактность, длина контура, выпуклости, оси эллипса, моменты (произвольного порядка), эксцентричность, выделение контуров на основе характеристик формы и т.д.
5. Нахождение местоположения границы объектов. Автоматическое определение границ объектов, автоматические функции оценки критериев определения границ объекта (контуров), измерение стандартных форм (круг, эллипс, линия, прямоугольник) и т.п.
Таблица 1
Основные операции фильтрации, поддерживаемые библиотекой HALCON
Назначение (характеристика) фильтра Краткое описание (область применения) фильтра, примеры фильтров
Улучшение (повышение качества) изображения (Image enhancement) Улучшение контрастности (контрастирование), коррекция освещенности, масштабирование, эквализация выравнивание) гистограммы
Сглаживание изображения (Smoothing) Сглаживание изображения с сохранением информации о границах объектов на изображениях (информации о контурах объектов), сглаживание изображения с дополнительным подчеркиванием границ объектов на изображениях (подчеркиванием контуров объектов), Гауссово сглаживание, биномиальные фильтры, усредняющие фильтры, ранжирующие фильтры (медианные, разделенные медианные, взвешенные медианные), усредняющие ранжирующие фильтры, фильтр среднеквадратического отклонения, фильтр среднего усеченного, фильтры удаления шумов (помех) (такие, как «salt», «pepper»), рекурсивные сглаживающие фильтры
Определение границ (детекторы границ) (Edge filters) Детекторы Кэнни, Дирека, Лансера, Шена, Фрея, Кирха, Робертса, Притта, Робенсона, Собеля, Лапласа, разница Гауссианов, производные Гауссианов, замыкание границ, пиксельная протяженность контуров (карта расстояний)
Выделение характерных деталей (особенностей) на изображениях (Point filters) Детекторы Ферстнера, Харриса, Лепетита и Сойко для извлечения характерных особенностей изображений, позволяющие производить обработку с субпиксельной точностью
Интерполяция изображения (видео) (Inpainting) Восстановление искаженных (утраченных) областей изображений или видео
Текстурные фильтры (Texture) Фильтры, накладывающиеся по определенным правилам (3x3, 5x5, 7x7), девиация, энтропия
©
5 >
го
О
о
0
1
ho о
м
О)
Арифметические фильтры (Arithmetic) Масштабирование, сложение, вычитание, умножение, абсолютное значение, максимум, минимум, инверсия, квадратный корень, тригонометрические функции, логарифм, экспонента, степень
Преобразования цветового пространства (Color transformations) CIElab, HSV, HIS, YIQ, YUV, CIExyz, HLS, HIS и т.д.
Преобразование Фурье (Fourier transform) Чрезвычайно быстрое преобразование Фурье, Гауссиан, производная, энергия изображения, высокочастотные и низкочастотные фильтры, фаза, корреляция по фазе и др.
Преобразование Хафа (Hough transformation) Поиск линий, окружностей
Дополнительные фильтры (Complimentary filters) Пользовательские фильтры, точечные фильтры, фильтры для обработки полутоновых изображений, для получения главных компонент, топографические фильтры, фильтр для построения Гауссовой пирамиды, фильтры преобразования типов и т.п.
6. Блоб анализ. В области компьютерного зрения методы анализа, относящиеся к данной группе, направлены на определение таких областей на цифровых изображениях, которые отличаются от соседних областей некоторыми характеристиками, такими, как яркость или цвет. Довольно часто данные методы используют для нахождения и выделение областей, имеющих округлую форму или форму, близкую к ней.
В библиотеке HALCON данной группе алгоритмов придается большое значение, и указанная функциональная возможность выделена отдельным пунктом. Это объясняется наличием значительного количества прикладных задач, для решения которых данный вид анализа изображений используется на одном из этапов общего анализа графической информации (например, на этапе предварительной обработки):
1. Определение характеристик формы. Для анализа данного вида в библиотеке используются такие алгоритмы, как нахождение расстояния Хэмминга, определение числа Эйлера, определение пространственных соотношений и т.п.
2. Сегментация. Для выполнения этой функции используются следующие подходы: пороговая обработка данных, алгоритм наращивания областей, алгоритмы классификации (с использованием многослойного персептрона нейронной сети, метода опорных векторов, смешанных Гауссовых моделей, ближайших соседей и ряда других алгоритмов). Вариационные модели (в основе которых лежит поиск по шаблону).
3. Морфологическая обработка изображений. Для двоичных изображений: сложение / вычитание Минковского, операции дилатации, эрозии, открытия и закрытия, алгоритмы определения попадания в заданную область, отсечения, утолщения и утончения, составление различных карт расстояний и т.п. Для полутоновых изображений: алгоритмы водораздела, дилатации, эрозии, а также открытия и закрытия с применением субпиксельных масок различного размера.
4. Классификация. Классификатор на основе многослойной нейронной сети; классификатор на основе машины опорных векторов, классификатор k-ближайших соседей и др.
5. Геометрические трансформации. Здесь широко представлены всевозможные геометрические (аффинные преобразования).
6. Сопоставление изображений и 3D сцен. Возможно сопоставление как полутоновых, так и цветных изображений. Данная библиотека позволяет сопоставлять (распознавать) частично искаженные и зашумленные изображения (или отдельные части изображаемых объектов), частично закрытые объекты для 3D-сцен и т.п. Таким образом, используемые алгоритмы обладают свойством робастности.
Библиотека OpenCV (Open Source Computer Vision) представляет собой библиотеку программных функций с открытым исходным кодом, предназначенных, главным образом, для систем компьютерного зрения, работающих в режиме реального времени [5]. OpenCV - это библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков. Может свободно использоваться в академических и коммерческих целях - распространяется в условиях лицензии BSD.
Некоторые основные функциональные возможности библиотеки OpenCV приведены в табл. 2.
Так как библиотека OpenCV хорошо структурирована, довольно часто ее функциональное описание рассматривают в соответствии с ее модульной структурой. Основные модули данной библиотеки относят к четырем группам:
1. Модули core, imgcodecs (в предыдущих версиях highgui). Данные модули реализуют базовую функциональность (выполняют ввод / вывод изображений и видео, ввод / вывод в форматах XML, YAML, базовые структуры данных, математические функции, возможности линейной алгебры, генераторы случайных чисел, быстрое преобразование Фурье, и т.п.).
2. Модули imgproc, features2d. Предназначены для обработки изображений (фильтрация, геометрические (аффинные) преобразования, преобразование цветовых пространств, сегментация изображений, обнаружение особых точек и ребер объектов на изображениях, контурный анализ и т.п.).
3. Модули video, objdetect, calib3d. Производят калибровку камеры, анализ движения, отслеживают объекты, вычисляют положение
объектов в пространстве, строят карты глубины, детектируют объекты, работают с оптическим потоком.
4. Модуль т1. Этот модуль реализует алгоритмы машинного обучения (нейронные сети, метод ближайших соседей, наивный байесовский классификатор, деревья решений, бустинг, градиентный бустинг деревьев решений, случайный лес, машина опорных векторов, и др.).
Таблица 2
Основные возможности библиотеки OpenCV
Сглаживание изображений (Smoothing Images) Операции сглаживания
Эрозия и дилатация (Eroding and Dilating) Операции дилатации и эрозии
Морфологические преобразования (Morphology Transformations) Морфологические трансформации
Пирамида изображений (Image Pyramids) Создание пирамиды изображений
Основные пороговые операции (Basic Thresholding Operations) Основные пороговые операции (сегментация и т.п.)
Добавление границ к изображению (Adding borders to your images) Добавление границ к изображению
Римаппинг (Remapping) Процесс получения значения пикселов изображения и помещение их в другую позицию в новом изображении (поворот, симметричный отображение пикселей относительно какой-либо оси и т.д.)
Вычисление гистограмм (Histogram Calculation) Библиотека OpenCV имеет в своем составе функцию calcHist, позволяющую вычислять гистограмму для набора массивов. Таким образом, имеется возможность строить гистограмму как для всего изображения, так и для набора его битовых плоскостей. Размерность обрабатываемого массива может достигать 32 измерений
Библиотека ОрепСУ реализует, как правило, только базовые операции, необходимые в системах компьютерного зрения. Таким
образом, данная библиотека в целом представляет собой низкоуровневую библиотеку компьютерного зрения. При необходимости решения более сложных задач необходимо на основе предоставленных библиотекой модулей разрабатывать свои собственные приложения.
Подход, используемый для описания библиотеки OpenCV, при котором указывают основные модули и описывают их функциональность, объясняется тем, что, как правило, типичное приложение, предназначенное для таких задач, как системы компьютерного зрения, соответствуют общепринятой схеме обработки графической информации:
- захват изображения (из файла, памяти или из камеры);
- предварительная обработка изображения, которая может заключаться в устранении шумов различной природы, в усилении контраста, выравнивании яркости, удалении теней и т.п.;
- выделение характерных особенностей (данный этап, как правило, является специфичным для различных изображений);
- обработка значений, полученных на предыдущем шаге (здесь может производиться детектирование объектов и т.п.);
- обработка видеопоследовательности (в случае, если производится - анализ данных, полученных на предыдущем шаге) и т.п.
Сделаем выводы. В настоящее время разработка программных средств представляет собой разработку программных модулей, объединенных в программные комплексы или пакеты программ. Для цифровой обработки графических изображений создано значительное количество алгоритмов, объединенных в программные комплексы. Подходы к организации таких комплексов несколько различны, однако функциональные возможности многих из них, наиболее продвинутых, примерно одинаковы. Возможности данного вида программного обеспечения рассмотрены на примере двух широко известных библиотек HALCON и OpenCV.
Несмотря на то, что функциональность двух описанных библиотек примерно одинакова, набор алгоритмов библиотеки HALCON несколько шире, так как в ней содержатся алгоритмы практически на «все случаи жизни». Однако OpenCV представляет собой более гибкий инструмент для обработки цифровых изображений, так как многие функции по обработке изображений могут быть добавлены относительно легко, путем объединения функциональных возможностей отдельно взятых модулей. Недостатком данного подхода
является необходимость владения определенными навыками программирования, что усложняет работу с библиотекой OpenCV.
Еще одним важным моментом, который оказывает влияние на популярность программных средств, является их распространение в условиях лицензии BSD. Здесь преимущество имеют библиотеки, которые, подобно OpenCV, имеют открытый программный код.
Также необходимо отметить, что существует определенная трудность в упорядочивании алгоритмов внутри существующих комплексов программ. Для HALCON более характерно разделять алгоритмы на группы, такие, как фильтры, и давать описание функциональных возможностей существующих фильтров, что затрудняет понимание области применения алгоритмов. Для OpenCV чаще встречается описание выполняемых функций с указанием возможного используемого алгоритма. Данный подход имеет определенное преимущество, однако в одну группу попадают алгоритмы, опирающиеся на различные методы реализации.
Таким образом, в настоящее время имеется достаточно мощный инструментарий для решения задач цифровой обработки графических изображений. Имеется целый ряд программных комплексов, обладающих примерно одинаковой функциональностью. Однако для решения многих частных прикладных задач разработчикам приходится создавать приложения, комбинируя алгоритмы, встроенные в программные комплексы, а иногда добавлять новые, разработанные для решения конкретной задачи. То есть создание новых комплексов программ для решения частных задач остается актуальной задачей.
Библиографический список
1. ГОСТ 19.101-77. Виды программ и программных документов.
2. Гонсалес Р., Вудс Р. Цифровая обработка изображений. М., 2005.
3. Яншин В.В., КалининГ.А. Обработка изображений на языке Си для IBM PC: Алгоритмы и программы. М.: Мир, 1994.
4. MVTec Software GmbH. URL: http://www.halcon.com/ (дата обращения: 12.01.2016).
5. OpenCV (Open Source Computer Vision). URL: http:// http://opencv.org/ (дата обращения: 15.01.2016).
Т.Н. Байбикова
старший преподаватель Национального исследовательского университета «Высшая школа экономики», аспирант Московского финансово-юридического университета МФЮА E-mail: tbaibicova@hse.ru