de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 Csabi
Csabi
Вопрос

Как ускорить приложение Android-openCV?

Я реализовал приложение openCV, где я использую дескриптор SURF. Он отлично работает, код выглядит следующим образом:

Я уменьшаю размер входного видеопотока, чтобы ускорить его.

            capture.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, display.getWidth());
            capture.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, display.getHeight());

            capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);

            try{

          //-- Step 1: Detect the keypoints using SURF Detector

            surfDetector.detect( mRgba, vector1 );

            for (KeyPoint t : vector1)
                Core.circle(mRgba, t.pt, 10, new Scalar(100, 100,100));    

          //-- Step 2: Calculate descriptors (feature vectors)
            //extractor.compute(mRgba, vector1, descriptor1);

          //-- Draw matches
            //Mat img_matches;
            //drawMatches( mRgba, vector1, mRgba, vector1, matches, img_matches );


            }catch(Exception e){
                Log.e( "ERROR", e.toString());

            }

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

Thanks for your time & answers

17 2011-10-27T13:32:22+00:00 2
Программирование
android
opencv
MobileCushion
5-го ноября 2011 в 3:41
2011-11-05T15:41:56+00:00
Дополнительно
Источник
Редактировать
#56789315

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

Реальный ответ на этот вопрос гораздо ближе к «не так много, что вы можете сделать!» чем чем-либо еще. Мы должны признать, что мобильные телефоны еще не обладают такими мощными возможностями обработки, как любой рабочий стол. Большинство телефонов Android в мире по-прежнему используют предыдущие версии системы и, что самое главное, это одноядерные устройства, они синхронизируются со скоростями ниже 1 ГГц, они имеют ограниченную память, bla bla ...

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

Теперь я также вычисляю OpenCV SURF на GalaxyS, и у меня частота кадров 1,5 кадра в секунду для 200 функций с hessian порогом в 1500 на 320x240 изображении. Я признаю, что это дрянная производительность, но в моем случае мне приходится вычислять функции каждый раз в то время, так как я измеряю оптический поток для целей отслеживания. Однако очень странно, что вы можете получить только 1 кадр каждые 4-5 секунд.

1) Во-первых, мне кажется, что вы используете VideoCapture для получения кадров камеры. Ну, я не. Я использую реализацию камеры Android. Я не проверял, как VideoCapture реализован в Java-порту OpenCV, но, похоже, он медленнее, чем использование реализации в некоторых учебниках. Тем не менее, я не могу быть уверен в этом на 100%, так как я его не тестировал. Не так ли?

2) Сократить нативные вызовы до минимума. Явные вызовы Java OpenCV являются дорогостоящими. Кроме того, следуйте всем рекомендациям, приведенным в странице лучших практик Android-OpenCV . , Если у вас несколько внутренних вызовов, присоедините их все в одном вызове JNI.

3) Вы также должны уменьшить размер изображения и увеличить порог hepsian SURF. Это, однако, уменьшит количество обнаруженных функций, но они будут более сильными и более надежными с точки зрения распознавания и сопоставления. Вы правы, когда говорите, что SURF - более надежный детектор (он также самый медленный, и он запатентован). Но, если это не мертвый замок для вас, я бы рекомендовал использовать новый детектор ORB, вариант BRIEF, который лучше работает с точки зрения вращения. ORB имеет недостатки, хотя, например, ограниченное количество обнаруженных ключевых точек и плохую инвариантность шкалы. Это очень интересный отчет о сравнении алгоритмов детекторов признаков. Это также говорит о том, что детектор SURF медленнее в новой версии OpenCV 2.3.1, вероятно, из-за некоторых изменений в алгоритме, для повышения надежности.

4) Now the fun bits. The ARM processor architecture (in which most of the Android phones are based) has been widely reported for its slowness handling floating point calculations, in which feature detector algorithms rely heavily. There have been very interesting discussions about this issue, and many say you should use fixed-point calculations whenever possible. The new armv7-neon architecture provides faster floating point calculations, but not all devices support it. To check if your device does support it, run adb shell cat proc/cpuinfo. You can also compile your native code with NEON directives (LOCAL_ARM_NEON := true) but I doubt this will do any good, since apparently few OpenCV routines are NEON optimized. So, the only way to increase speed with this, is to rebuild the code with NEON intrinsics (this is completely unexplored ground for me, but you might find it worth looking). In the android.opencv group it was suggested that future OpenCV releases will have more NEON-optimized libraries. This could be interesting, however I am not sure if it is worth working on it or wait for faster CPUs and optimized systems using GPU computing. Note that Android systems < 3.0 do not use built-in hardware acceleration.

5) Если вы делаете это в академических целях, убедите свой университет купить вам лучшее устройство ^^. В конечном итоге это может быть лучшим вариантом для более быстрого обнаружения функции SURF. Другой вариант - переписать алгоритмы. Я знаю, что некоторые ребята из лабораторий Intel сделали это с некоторым успехом, но, очевидно, они не поделятся этим. Честно говоря, после изучения этой проблемы в течение нескольких недель, я понял, что для моих конкретных потребностей (и поскольку я не инженер компьютерных наук и не специалист по алгоритмам), больше стоит ждать несколько месяцев для лучших устройств, чем удары головой на стене, анализируя алгоритмы и разрабатывая код сбоку.

С наилучшими пожеланиями и удачи!

36
0
Chris
2-го ноября 2011 в 8:27
2011-11-02T08:27:07+00:00
Дополнительно
Источник
Редактировать
#56789314

Вам нужно использовать функцию/дескриптор SURF для вашего приложения? SURF привлекателен, так как он подходит очень хорошо, но, как вы выяснили, он несколько медленный. Если вы просто отслеживаете точки через видео, вы можете сделать предположение, что точки не будут сильно отличаться от кадра к кадру, поэтому вы можете обнаружить и сопоставить углы Harris/FAST, а затем фильтровать совпадения, чтобы они были действительными только в том случае, если они находятся внутри радиус x-пикселя исходной точки?

OpenCV имеет (хотя и несколько ограниченный) выбор детекторы функций и экстракторы дескрипторов и дескрипторы , было бы интересно исследовать параметры, если вы еще этого не сделали.

2
0
Похожие сообщества 19
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
18 324 пользователей
Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. Размещение бесплатное. 📌 ВАЖНО: Правила публикации и правила канала: 📌 Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-12-10
Открыть telegram
StartAndroid Ru Chat
StartAndroid Ru Chat
2 928 пользователей
Android чат сайта startandroid.ru Канал - @startandroid
Открыть telegram
Android Architecture
Android Architecture
2 780 пользователей
Русскоязычный чат для обсуждения архитектуры Android приложений. У нас атмосфера взаимопомощи и уважения друг к другу! Общий чат по Android: @android_ru Чат для вакансий: @mobile_jobs Подробнее: https://telegra.ph/Android-Architecture-06-02
Открыть telegram
AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
1 656 пользователей
Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно 1раз в 2 недели ставьте в тексте тег #vacancy. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov Флудить тут @pogromista
Открыть telegram
Android Declarative
Android Declarative
1 634 пользователей
Чат русскоязычного android-сообщества, посвященный декларативным UI-фреймворкам: Jetpack Compose, Anko, Anvil, Litho, Splitties за оффтопик пожизненная ссылка в @android_ru @jetpack_compose - новости https://bit.ly/32pRDWm - примеры компонентов
Открыть telegram
Android ROM Development
Android ROM Development
1 606 пользователей
Discussion about Android ROM development and testing. App development group: 🖥 https://t.me/joinchat/CiGS0z9LkBPQ_8gjz3eAdA
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 5 дней назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией