Назад в библиотеку

Инструментальные средства для компьютерной обработки изображений

Автор: Кисловская Я.О., Землянская С.Ю.
Источник: Информационные технологии и автоматизированные системы управления. Сборник материалов X международной научно-технической конференции (студенческая секция) 22-24 мая 2019 года. - Донецк, ДонНТУ - 2019. – 495с., с. 149-155, [Ссылка]

Аннотация

Кисловская Я. О., Землянская С. Ю. Инструментальные средства для компьютерной обработки изображений. В статье рассмотрены критерии оценки качества изображения. Исследованы существующие инструментальные средства для обработки изображений, а также предложена технология создания нового интегрального средства обработки, которое обрабатывает изображение в соответствии с предпочтениями пользователя.

Постановка проблемы

Компьютерная обработка изображений актуальна в любой области деятельности.

При компьютерной обработке изображений решаются такие задачи, как улучшение качества изображений, измерение параметров, распознавание изображений, сжатие изображений, а также фильтрация и восстановление изображений.

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

Кроме того, само понятие приемлемости (качественности) изображения – часто довольно субъективно и значение критериев оценки могут существенно отличаться у разных пользователей.

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

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

Обзор исследований по теме

Цифровое изображение A(m,n) представлено в дискретном двумерном пространстве, где m – номер строки, n – номер столбца, а элемент на пересечении m-ой строки и n-го столбца называется пиксель, содержащий в себе код, обычно идентифицирующий цвет [1].

Существуют типы изображений с различной глубиной цвета: черно-белые штриховые, в оттенках серого (полутоновое), с индексированным цветом, полноцветные. Так, исходя из этого, существует большое количество форматов таких изображений: bmp, tiff, gif, psd, png, jpeg, ico, raw.

Формат JPEG (Joint Photographic Experts Group) предназначен для сохранения растровых файлов со сжатием. Для применения различных методов обработки в данной работе будут использоваться цифровые растровые изображения различных типов формата jpeg, так как они обеспечивают высокую точность передачи градаций цветов и полутонов.

Обработка изображения, основанная на обработке соответствующих сигналов, предусматривает внесение в формируемое изображение тех или иных изменений по сравнению с оригинальным изображением, а именно:

Применение методов обработки влияет на параметры изображения:

Возможны два подхода к оценке качества изображений: количественная оценка с помощью математических методов и субъективная оценка на основе экспертных оценок. Кроме этого они могут быть абсолютными или сравнительными [2].

Во всех рассматриваемых критериях оценивания качество изображений определяется числом, которое вычисляется по исходному изображению. Для расчета оценок используются следующие количественные критерии качества:

1. Для оценки яркости изображения применяется корректное построение гистограммы распределения яркостей элементов изображения. Гистограммой цифрового изображения с уровнями яркости в диапазоне [0, L-1] является дискретная функция h(rk) = nk, где rk есть k-й уровень яркости, а nk – число пикселей на изображении, имеющих яркость rk.

Значения нормализованной гистограммы вычисляются по формуле:

pic1

где k = 0, 1, ..., L-1.

p(rk) – оценка вероятности появления пикселя со значением яркости rk

По горизонтальной оси гистограммы отложены значения уровней яркости rk, а по вертикальной – значения гистограммы h(rk) = nk или p(rk) = nk/n, если они нормализованы.

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

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

pic2

где σ - среднеквадратическое отклонение,

Ymax – максимально возможное значение яркости.

C изменяется в диапазоне pic3, а его значение должно стремиться к 1 для наилучшего повышения визуального восприятия. Значение 0 соответствует однотонному изображению, значение 1 – максимально контрастному.

3. Для оценки резкости изображения вычисляется мера эксцесса двумерного спектра Фурье.

Алгоритм определения резкости изображения.

pic4

где μ2 – второй центральный момент, μ4 – четвертый центральный момент, σ – стандартное отклонение.

Эксцесс определяется как отношение четвертого центрального момента и квадрата второго центрального момента (стандартное отклонение в четвертой степени). Результат вычисления должен стремиться к максимальному значению, так как более резкому изображению соответствует большая величина эксцесса.

Обзор существующих систем и библиотек

Для обработки цифровых изображений существует большое количество инструментальных средств, например, онлайн фоторедакторы, прикладные программы, а также некоторые технологии и открытый исходный код для создания новых программных продуктов.

Все инструментальные средства дают возможность применить различные методы обработки изображений, такие как: контрастность, устранение шумов и размытие, регулировка яркости и насыщенности, увеличение резкости и четкости, изменение размера изображения, наложение фильтров и многое другое.

Также есть несколько вариантов для интеграции со сторонними системами [3]:

1. Взаимодействие с помощью SDK

Естественным развитием первого описанного подхода к интеграции стала разработка многочисленных SDK. SDK – комплект средств разработки, используемый разработчиками программного обеспечения. В состав этого комплекта входит набор полезных утилит, исходные коды и библиотеки.

Большинство методов обработки цифровых изображений уже разработаны и оформлены в виде различных библиотек с открытым исходным кодом, таких как: MatLab, OpenCV, JAI, ImageMagick, CamanJS, VTK, VIPS и многие другие, которые можно отнести к варианту интеграции с помощью SDK.

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

Далее рассмотрим подробнее некоторые из перечисленных выше библиотек.

OpenCV (Open Source Computer Vision Library) является библиотекой различных алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C#/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков. Библиотека открывает доступ к различным методам цифровой обработки изображений, таким как: считывание и вывод изображения, преобразование в различные цветовые модели, построение гистограммы яркости, выравнивание гистограммы, применение фильтров, сегментация изображений и др.

MatLab – это высокоуровневый язык и интерактивная среда для программирования, численных расчетов и визуализации результатов. Для него имеется возможность создавать специальные наборы инструментов, расширяющие его функциональность. Один из таких инструментов – пакет Image Processing Toolbox для моделирования и исследования методов обработки изображений.

ImageMagick – это кроссплатформенный консольный редактор изображений. Поддерживает множество графических форматов. Данное программное обеспечение доступно как в открытом коде, так и в виде API на многих языках программирования. В их число входят самые разнообразные интерпретаторы и компиляторы, начиная от PHP, Perl и до Java, Python и C++.

2. Взаимодействие через API

Следующий вариант программной интеграции – реализация производителем набора программных запросов (методов или точек входа), позволяющих взаимодействовать с программными и аппаратными средствами в формализованном виде, – API. Фактически это набор готовых процедур (библиотек, функций), предоставляемых для использования во внешних программных продуктах, легко подключаемых и используемых с любым современным языком программирования. Обмен информацией происходит посредством вызова неких функций, что позволяет организовать динамический обмен данными между приложениями.

Технология API – это определенный инструмент интеграции, с помощью которого выполняется мгновенное подключение к серверам других ресурсов.

API подразделяют на типы:

Идея вызова удалённых процедур состоит в расширении механизма передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть.

SOAP (Simple Object Access Protocol) является стандартизированным протоколом передачи сообщений между клиентом и сервером. Обычно он используется совместно с HTTP(S), но может работать и с другими протоколами прикладного уровня (например, SMTP и FTP). SOAP использует несколько языков разметки: XML, XSD, WSDL.

REST (RESTful) – это общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP. Особенность REST в том, что сервер не запоминает состояние пользователя между запросами – в каждом запросе передаётся информация, идентифицирующая пользователя (например, token, полученный через OAuth-авторизацию) и все параметры, необходимые для выполнения операции.

Всё взаимодействие с сервером сводится к 4 операциям:

Операция получения данных не может приводить к изменению состояния сервера [4].

Для каждого типа операции используется свой метод HTTP-запроса: получение – GET, добавление – POST, модификация – PUT, удаление – DELETE.

Каждый раз, когда пользователь посещает какую-либо страницу в сети, он взаимодействует с API удалённого сервера. API – это составляющая часть сервера, которая получает запросы и отправляет ответы.

Когда компания предлагает своим пользователям API, это означает, что она создала ряд специальных URL, которые в качестве ответа возвращают только данные. Такие запросы часто можно отправлять через браузер. Так как передача данных по протоколу HTTP происходит в текстовом виде, браузер всегда сможет отобразить ответ.

Большинство онлайн сервисов предоставляют свой API для использования другими разработчиками бесплатно, но с ограничениями (например, доступ к методам на 30 дней или до 100 запросов в день). Для полноценного доступа необходима покупка подписки. В каждом из данных вариантов сервис выдает определенные ключи для доступа к готовым методам: открытый ключ (APP_ID) и закрытый ключ (KEY).

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

Для разработки программного модуля для улучшения качества изображения применение взаимодействия как с помощью SDK, так и с помощью API Rest является наиболее подходящим. Поэтому рассмотрим пример применения этих технологий.

Примером онлайн фоторедактора, который может предоставить свой API со всеми методами обработки является сервис «Editor.Pho.to». Среди методов, содержащихся в Pho.to API выделено несколько категорий:

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


<image_process_call>
    <image_url>http://developers.pho.to/img/girl.jpg</image_url>
    <methods_list>
        <method order="1">
            <name>desaturation</name>
        </method>
    </methods_list>
</image_process_call>

Далее приходит ответ на запрос с информацией об успешности или неудаче выполнения.


<image_process_response>
    <request_id>REQUEST_ID</request_id>
    <status>OK</status>
    <description>DESCRIPTION</description>
    <err_code>0</err_code>
</image_process_response>

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

http://opeapi.ws.pho.to/getresult?request_id=:REQUEST_ID

Так же, как и после первого запроса, необходимо получить ответ об успешности и обесцвеченное изображение.

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

Используя вышеописанный подход, в разрабатываемой системе будут реализованы такие методы обработки: коррекция экспозиции и контрастности, регулировки яркости и насыщенности, устранения шумов и размытия. Дополнительно с помощью подключаемых библиотек PhotoEditor SDK, CamanJS и PSX будет также реализовано применение различных фильтров и некоторых аналогичных методов, используемых через API.

Кроме этого будет сформирована библиотека различных изображений, обработанных с разным качеством. Пользователь получит возможность выбрать то изображение, которое наиболее соответствует его представлениям о качественном изображении. Затем он сможет загрузить собственное изображение для обработки, и оно будет обработано системой в соответствии с параметрами, которые установлены для выбранных пользователем изображений. Если же результат в чем-то не будет соответствовать предпочтениям пользователя, то он сможет откорректировать некоторые параметры при помощи инструментов обработки, предоставляемых разрабатываемой системой.

Выводы

Были исследованы различные инструментальные средства и технологии обработки изображений. А также рассмотрены критерии оценки качества изображения. Принято решение создать систему, которая будет интегрировать в себе различные функциональные подсистемы обработки изображений через технологию API, применяя различные методы обработки, также будут использованы обрабатывающие алгоритмы различных SDK библиотек для веб-разработки. Для взаимодействия с API планируется использование веб-разметки HTML и языка JavaScript. С помощью этой системы будет происходить предварительное обучение на существующих изображениях и вычисление параметров изображения, предпочтительных для пользователя, после чего пользователю предоставится возможность загрузить свое изображение и далее выполнится обработка в соответствии с параметрами, полученными при обучении.

Список использованной литературы

  1. Компьютерная обработка изображений. http://aco.ifmo.ru/el_books/image_processing/1_01.html
  2. Ю.И. Монич, В.В. Старовойтов «Оценки качества для анализа цифровых изображений» «Искусственный интеллект» 4’2008. Стр. 376-386.
  3. Варианты протоколов для интеграции со сторонними системами в современных СКУД. http://www.techportal.ru/196160
  4. Введение в REST API. https://myrusakov.ru/rest-api-introduction.html