Реализация интерфейса получения изображения с web-камеры на основе Java Media Framework. Новиков А.В. Сыпин Е.В. В промышленности большое количество технологических процессов связано с необходимостью дистанционного наблюдения. Аварийные ситуации или нарушения технологических режимов должны быть своевременно обнаружены и зафиксированы и устранены, в противном случае они могут повлечь за собой катастрофические последствия. Одним из направлений, развитие которого может дать существенное повышение уровня безопасности при сравнительно небольших затратах, является внедрение автоматизированных систем видеонаблюдения. Чтобы разработать эффективную и не слишком дорогую автоматизированную систему, необходима технологическая инфраструктура, которая была бы достаточно стойкая и долговечная. В настоящее время появляется все больше и больше разнообразных устройств и операционных систем, которые в корне отличаются друг от друга по возможностям и методам проектировки, вполне логично, что инфраструктура не должна зависеть от какого-либо устройства, либо операционной системы. Учитывая эти требования, было принято решение при проектировании интерфейса получения изображения с web-камеры использовать преимущества Javaтехнологий, так как это обеспечит трансплатформенность и независимость от аппаратного обеспечения разрабатываемой системы. В итоге в качестве устройства наблюдения было предложено использовать web-камеру, как сравнительно простое и недорогое устройство. Существует два базовых метода для доступа к визуальным данным из автоматизированной системы на базе Java-технологии. Самый быстрый и простой метод – это использование интерфейса TWAIN. TWAIN начинал свое существование, как интерфейс для соединения сканнеров и персональных компьютеров, но теперь он расширен с тем, чтобы дать программистам возможность работать с такими устройствами, как web-камеры. На данный момент создан интерфейс Java/TWAIN, что позволяет получать изображения из TWAIN-устройства и создавать из него изображение Java AWT, которое впоследствии можно легко обработать. Но, будучи простым в использовании, интерфейс TWAIN представляет телевизионный пользовательский интерфейс, оставляя множество параметров изображения, которые невозможно менять путем программирования. Плюс к этому, TWAIN первоначально спроектирован для получения одиночных изображений. Наиболее богатый по возможностям и гибкий для программирования метод управления web-камерами – это метод с использованием Java Media Framework (JMF). Изначально, JMF был спроектирован для того, чтобы обеспечить возможность проигрывания различного типа медиа-информации без привязки к какой-либо конкретной платформе. Но совсем недавно он был расширен и теперь включает возможность проигрывания, захвата изображений, передачи, транскодирования, а также множество различных кодеков (компрессор/декомпрессор). Поскольку JMF куда больше поддается программированию, можно получить более полный контроль над получаемым изображением, включая управление размером, контрастом, глубиной цвета и многим другим. Первый шаг к использованию JMF – это определить положение конкретной webкамеры, как устройства, используя CaptureDeviceManager. Следующим шагом необходимо получить источник данных через MediaLocator и потом установить желаемый формат изображения (зависит от устройства). Следовательно с помощью JMF можно осуществлять более полный контроль над процессом получения изображений. Далее необходимо создать Processor, являющийся сущностью JMF, который, фактически, передает изображение программе. После этого создается источник данных PushBuffer. Как только эта операция завершена, может быть создан поток PushBufferStream через PushBufferDataSource и читать буферы, которые представляют реальные фреймы из камеры. Эти изображения можно конвертировать в AWT-изображения с помощью метода BufferToImage. Далее полученное изображение можно конвертировать в RGB с помощью класса PixelGrabber, так как растровое изображение может быть легко обработано и проанализировано (например, на предмет определения цвета и границ). Для этого применимы два средства: – Java 2D API – средство для простых способов обработки и анализа изображения (определения границ/краев); – Java Advanced Imaging API – применимо для более сложных операций анализа. Таким образом имеестя возможность выбора, в зависимости от поставленной задачи. Следует отметить, что важно между источниками данных PushBufferDataSource в JMF и USB-web-камере имеется принципиальное различие. PushBufferDataSource начнет выдавать изображения от камеры, как только он будет создан. Поэтому, если необходимо получать изображения в реальном времени, необходимо использовать PullBufferDataSource. Согласно тому, как работает USB-web-камера, невозможно получить PullBufferDataSource. В этом случае нужно писать отдельную нить (поток), которая постоянно получала бы изображения из камеры. И как только понадобится получить изображение, осуществляется очередной запрос к созданной нити. Таким образом, в соответствии с поставленной целью, был разработан интерфейс получения изображения с web-камеры на основе Java Media Framework (серверная и клиентская части), структурная схема которого представлена на рисунке 1. Web-камера посредством USB интерфейса подключена к компьтеру-серверу, на котором установлена серверная часть программного обеспечения. Рисунок 1 – Структурная схема интерфейс получения изображения с web-камеры на основе Java Media Framework Роль клиентской части программы выполняет java-апплет, который может подсоединяться к серверной программе и передавать и получать параметры управления. Список использованных источников 1 Ноутон П., Шилдт Г. Java 2: Пер. С англ. – СПб.:БХВ-Пелербург, 2001. – 1072 с.:ил. 2 Иванова Е.Б., Вершинин М.М. Java 2, Enterprise Edition. Технология проектирования и разработки. – СПб.:БХВ-Пелербург, 2003. – 1088 с.:ил. 3 Capture Video from Camera with Java JMF [Электронный ресурс]. – Sun Developer Network. – Режим доступа: http://java.sun.com/developer/technicalArticles/Media/mediaframework/index.htm 4 Using Java Technology to Build Robots That Can See, Hear Speak, and Move [Электронный ресурс]. Sun Developer Network. – Режим доступа: http://java.sun.com/developer/technicalArticles/Programming/robotics/index.html