Наверное, каждый Android-программист хотя бы раз задумывался о том, чтобы написать что-нибудь полезное с использованием компьютерного зрения или дополненной реальности.
А некоторые даже писали hello word с помощью opencv, который тоже был портирован на Android. К сожалению, если мы захотим написать что-то серьёзное, то обнаружим, что набор библиотек с уже реализованными функциями Computer Vision не так уж и велик, особенно для платформы Android. Чаще всего для этих целей используют opencv, написанный на C++, или пишут свои велосипеды, что в целом тоже неплохо, но не так быстро, как хотелось бы с точки зрения реализации.
Однако не все так плохо.
Есть такой замечательный проект БуфCV , представляющая собой библиотеку компьютерного зрения, написанную на чистой Java. Последние две буквы в названии библиотеки означают именно то, что вы думаете.
А в последней версии появилась долгожданная поддержка Android. Ниже мы рассмотрим основные преимущества, предоставляемые библиотекой, на конкретном примере.
BoofCV — краткое описание
Итак, BoofCV — это библиотека компьютерного зрения с открытым исходным кодом, написанная на чистой Java. Используемые внутри алгоритмы хорошо оптимизированы и, как показывает практика, в ряде случаев по скорости не уступают реализации на C++ opencv. Основные возможности библиотеки: • Работа с видео и веб-камерами; • 3D компьютерное зрение; • Фильтры (размытие, градиент), удаление шума (с помощью вейвлетов); • Бинаризация, морфологические операции; • Определение границ (Кэнни, Собел); • Поиск точек интереса; • Поиск линий, отрезков, прямоугольников; • Стереоизображения.Кроме того, библиотека содержит еще множество функций, используемых в компьютерном зрении.
Подключить библиотеку достаточно просто — вы можете скачать исходный код с официального сайта и собрать самостоятельно, а можете скачать уже собранные jar-файлы и просто подключить их к проекту.
Для экспериментов возьмем вот такую картинку:
Во-первых, давайте попробуем размытие по Гауссу:
Для получения такого изображения воспользуемся функцией 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);
Добавление и удаление шума:
Random rand = new Random(234);
Теги: #boofcv #компьютерное зрение #java #Android #java #Обработка изображений
-
Автотест Для Php
19 Oct, 24