Pavia00
-
Количество публикаций
108 -
Зарегистрирован
-
Посещение
-
Days Won
15
Сообщения, опубликованные пользователем Pavia00
-
-
Если будете использовать cvUndistort2, то да должны получить. Причём строго.
А вот почему Smorodov сопротивляется не понятно. Хотя зерно разума есть, длины до точек то разные. Поэтому при выводе теоретического расчёта надо быть аккуратным. Но cvUndistort2 устраняет "не сферичность" и надо считать проекцию параллельной.
- 1
-
Линза в камере вносит не линейные изменения. Поэтому разные фрагменты контура имеют разные масштабы.
Калибровка поможет. Только учти что под калибровкой иногда понимают более частный случай -получение пространственных координат и угла. Что не относится к искажениям вносимой линзой.
-
Классическая схема распознавания.
Берём изображение выделяем признаки.
Затем берётся прямоугольник который накрывает некоторое под пространство.
Сверяя значение координат признаков и их количество в этом подпространстве происходит классификация. Принадлежит ли этот набор признаков к заданному классу. То есть мы решаем является этот набор признаков нашим объектом.
Идёт перебор координат прямоугольника.
Так вот в каскаде используется не нейронная сеть, а двоичные деревья решений.
Где каждый узел либо принимает объект к классу либо отвергает. Если отвергает, то остальные условия не проверяются. Переходим к следующий позиции.
Это значительно ускоряет обработку по сравнению с НС. И качество распознавания не сильно страдает, можно сказать практически не страдает.
Могу и ошибаться так как сам до конца не разбирался, но как-то так.
Использовать можно для любого объекта. Вернее в большинстве случаев оно вам подойдёт.
- 1
-
Виола-Джонес должен быстро искать. Примерно так высота изображения умножить на ширину умножить на 2 умножить на время обработки одного пикселя думаю не должно привишать ~100-150 тактов вот это всё поделить на частоту процессора. Если код раскидать по ядрам, то ещё поделить на число ядер.
У меня для одного ядра с частотой 2.5 ГГц получилось примерно 0.1-0.15 секунд. А да если там качество регулируется, то время пойдёт в верх.
Алгоритм на видео карту хорошо ложится.
Ускорить можно если обрабатывать не всю картинку, а сделать детектор движения и использовать для поиска только изменившуюся часть изображения.
- 1
-
dasg. Мне бы ваши проблемы.
Давно интересует тест производительности OpenCV и GPU.
Cuda не пользуюсь так как карта AMD.
Но у меня на GPU Собель раз в 10 быстрее считался, правда эксперимент был не совсем чистым.
По поводу скорости. Зависит от процессора.
Ну вот считай CPU, у меня Core 2 Due T7500 2 ядра. Каждое ядро может обрабатывать одновременно 2 команды SSE. Каждая команда SSE имеет 4 блока данных(128/32; 32 бита берём float) а если брать не флоат, а слова 128/16=8 блоков данных.
Частота процессора 2.4 ГГц
Итого:2*2*4*2.4=38,4 операций/с
Видео карта, У меня ATI HD3470. 40 ядер каждое ядро содержит 5 алу. Но из этих 5 алу только четыре выполняют основные операции, а пятый считает сложные операции такие как Sin, sqrt. Каждое АЛУ работает над вектором из 4 чисел. Частота 680 МГц
Итого=40*4*4*0.680=435,2 операций/с
Видео карта Geforce 9600M GS. Число ядер 32 частота 1035 МГц каждое ядро способно выполнять кучу операций параллельно, примерно столько же сколько и ATI .
Итого 32*4*4*1.035=529,92 операций/с
-
Выравнивание это. Каждая строка для 32 битного режима должна быть выравнена на границе 4 байт. А так как пиксель 3 байта, то при нечётной длине строки имеем неправильный размер.
- 1
-
Для ускорения используй отсечения. К примеру считаешь среднюю сумму по окрестности 20х20 пикселей. И сравнивай эталонным значением плюс допуска.
Думаю что да - надо придумывать.другое придумывать?ИХМО OpenCv обычно за максимальной скоростью не гонится, но в основном достаточно быстро работает.
-
Ошибка в статье.
Как получить масштаб для плоского объекта?
в OpenCV
Опубликовано · Report reply
Да, да для такого случая мы будем иметь ещё и перспективные искажения. Нарисовал схему.
На схеме правда не показано, откуда берутся бочкообразные и подушкообразные искажения.