2.3 Работа с видеоинформацией
Разработанная программа, осуществляющая обработку видеоинформации и графической информации, в рамках работы с видеофайлами должна выполнить следующие действия:
- доступ к видеофайлу;
- выборка изображения, соответствующего изображению на видео в заданный момент времени;
- сохранение полученного изображения в файл и в оперативной памяти для дальнейшей обработки.
Для выполнения указанных действий с учетом разнообразия форматов видеофайлов, необходимо было использовать унифицированное средство, позволяющее работать с различными типами видео.
В рамках разработанной программы при обработке видео использовалась библиотека JMF. JMF (Java Media Framework) – библиотека для языка Java, которая позволяет добавлять обработку аудио, видео и другой медиаинформации к приложениям [5]. Эта библиотека является опциональной, т.е. является расширением платформы Java SE (Standard Edition), с ее помощью можно записывать, проигрывать, преобразовывать многие медиаформаты. JMF добавляет технологии Java возможность разработки кроссплатформенных программ, работающих с медиаданными.
2.4 Выделение кадров на видео
Доступ к конкретным кадрам из видеофайла осуществляется с помощью средств, предоставляемых библиотекой JMF. Последовательность действий для выделения кадра из видео является следующей:
1. Создание объекта класса MediaLocator, описывающего расположение в файловой системе медиафайла.
2. Создание обработчика видеофайла (экземпляра класса Processor), с помощью которого осуществляются манипуляции над содержимым видео.
3. Создание экземпляра класса FrameGrabbingControl, которые может осуществлять считывание графической информации из видео по времени кадра.
4. Перенос текущего указателя положения обработчика-экземпляра класса Processor на момент времени, в котором находится необходимый кадр.
5. Сохранение графического содержимого кадра в отдельную область оперативной памяти область, заданную форматом экземпляра класса Image.
При выполнении данного алгоритма также должны быть выполнены определенные подготовительные действия для создания обработчика медиафайла – экземпляра класса Processor, – которые являются стандартным набором операций при работе с источником медиаинформации [5].
2.5 Обработка изображений
В результате обработки видеофайлов в разрабатываемой системе формируется изображение, соответствующее изображению на видео в конкретный момент времени.
Обработка видеоданных заключается в обработке отдельных изображений, полученных из видео.
В программе обработка изображений производится встроенными средствами библиотек Java SE. С помощью существующих функций в программе выполняются следующие действия:
- запись изображения в файл;
- чтение изображения из файла;
- получение цвета конкретного пикселя изображения;
- получение яркости пиксели из RGB-составляющих;
- изменение цвета пикселя в изображении;
Обработка изображений в разработанной программе заключается в поиске границ объектов, представленных на изображении, градиентным методом. Данный метод определяет границу объекта на основе разницы в яркостях соседних пикселей.
Яркость каждого из пикселей находится с помощью метода RGBtoHSB() класса Color. Аббревиатуры цветовых моделей расшифровываются следующим образом:
- RGB – Red, Green, Blue – красны, зеленый, синий;
- HSB - Hue, Saturation, Brightness – тон, насыщенность, яркость.
Из полученного цвета, описанного в рамках цветовой модели HSB выделяется яркость (brightness).
Суть градиентного метода обнаружения границ заключается в дифференцировани яркости, которая рассматривается как функция, заданная в пространственных координатах. Градиент – вектор, ориентированный по направлению наиболее быстрого возрастания анализируемой функции и имеющий длину, пропорциональную максимальной скорости возрастания. Т.к. направления вектора нас не интересует, поиск границ может осуществляться с помощью анализа модуля градиента (длины вектора). В таком случае модуль градиента может быть найден по формуле:
(2.1)
где - два перпендикулярных направления, на которых определеная функция яркости .
В случае цифровых изображений, представленных матрицами значений цветовых составляющих, из которых могут быть получены значения яркости, вместо производных берутся конкретные разности:
(2.2)
где - координаты конкретного пикселя изображения.
Применение градиентного метода поиска границ изображения в качестве входных данных требует указание порогового значения разности яркостей пикселей.
Определение принадлежности пары пикселей границе объекта или самому объекту определяется из соотношения:
(2.3)
где - установленный порог для работы градиентного метода.
Если модуль градиента функции яркости для соседних пикселей больше установленного порога, то оба данных пикселя считаются граничными; в другом случае такие пиксели считаются частью какого-то объекта и граничными не являются.
В случае если пиксель является граничным – он закрашивается белым цветом. Если же пиксель принадлежит объекту на изображении, он закрашивается черным цветом.