Компьютерное Зрение На Java Для Android. Обзор Библиотеки Boofcv

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

А некоторые даже писали hello word с помощью opencv, который тоже был портирован на Android. К сожалению, если мы захотим написать что-то серьёзное, то обнаружим, что набор библиотек с уже реализованными функциями Computer Vision не так уж и велик, особенно для платформы Android. Чаще всего для этих целей используют opencv, написанный на C++, или пишут свои велосипеды, что в целом тоже неплохо, но не так быстро, как хотелось бы с точки зрения реализации.

Однако не все так плохо.

Есть такой замечательный проект БуфCV , представляющая собой библиотеку компьютерного зрения, написанную на чистой Java. Последние две буквы в названии библиотеки означают именно то, что вы думаете.

А в последней версии появилась долгожданная поддержка Android. Ниже мы рассмотрим основные преимущества, предоставляемые библиотекой, на конкретном примере.



BoofCV — краткое описание

Итак, BoofCV — это библиотека компьютерного зрения с открытым исходным кодом, написанная на чистой Java. Используемые внутри алгоритмы хорошо оптимизированы и, как показывает практика, в ряде случаев по скорости не уступают реализации на C++ opencv. Основные возможности библиотеки: • Работа с видео и веб-камерами; • 3D компьютерное зрение; • Фильтры (размытие, градиент), удаление шума (с помощью вейвлетов); • Бинаризация, морфологические операции; • Определение границ (Кэнни, Собел); • Поиск точек интереса; • Поиск линий, отрезков, прямоугольников; • Стереоизображения.

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

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

Для экспериментов возьмем вот такую картинку:

Компьютерное зрение на Java для Android. Обзор библиотеки BoofCV

Во-первых, давайте попробуем размытие по Гауссу:

Компьютерное зрение на Java для Android. Обзор библиотеки BoofCV

Для получения такого изображения воспользуемся функцией BlurImageOps.gaussian: //Здесь и далее изображение — исходное изображение типа ImageUInt8

  
   

ImageUInt8 blurred = new ImageUInt8(image.width,image.height) ImageUInt8 blurred = new ImageUInt8(image.width,image.height); BlurImageOps.gaussian(image,blurred,-1,5,null);

Теперь давайте добавим шум к исходному изображению и отфильтруем его:

Компьютерное зрение на Java для Android. Обзор библиотеки BoofCV



Компьютерное зрение на Java для Android. Обзор библиотеки BoofCV

Добавление и удаление шума:

Random rand = new Random(234);

Теги: #boofcv #компьютерное зрение #java #Android #java #Обработка изображений
Вместе с данным постом часто просматривают: