УСТРОЙСТВО ДЛЯ ОПРЕДЕЛЕНИЯ РАССТОЯНИЯ И СКОРОСТЕЙ ОБЪЕКТОВ НА ОСНОВЕ СТЕРЕОПОДХОДА
DEVICE FOR DETERMINING DISTANCE AND SPEED OF OBJECTS BASED ON STEREO APPROACH

Изобретение относится к вычислительной технике, применяемой в области машинного (компьютерного) зрения, анализа изображений, и может быть использовано для определения расстояний до различных объектов и их скоростей на транспорте, в строительстве, машиностроении и других областях.
В настоящее время существуют множество эффективных способов для распознавания объектов, в основе которых лежит возможность использования данных об удаленности элемента изображения (далее - буфер глубины) объектов относительно некоего датчика.
Наиболее распространенными способами получения буфера глубины являются радары, в том числе и лазерные, а также сенсоры различных видов. Например, Патент №2092869 «Радар безопасности движения автомобильного транспорта» (RU), Патент №113398 «Комплекс скорости движения и координат транспортных средств» (RU), Патент №112118 «Устройство защиты пешехода при наезде на него автомобиля» (RU), Патент №96951 «Навигатор, совмещенный с радаром» (RU), Патент №2452033 «Системы и способы наблюдения в ночное время» (RU), Патент №2449375 «Устройство для определения способности к предвидению у автомобиля» (RU) и др. Все известные решения требуют обязательного облучения исследуемого объекта. Основными недостатками таких технических решений можно назвать: чувствительность к фоновой засветке (яркое солнце и т.д.) - в зависимости от интенсивности засветки функциональность снижается; чувствительность к наличию рядом аналогичной системы (интерференция) - система ловит засветку от соседней системы и также снижает свою функциональность.
Другим направлением в распознавании объектов является стереоподход для получения буфера глубины. В этом случае буфер глубины восстанавливается на основе двух и более синхронных изображений объекта. Буфер глубины позволяет разделять объекты по глубине, но сам по себе не позволяет предсказывать их движение, для этого необходимо иметь представление о скорости объектов. Скорость может быть восстановлена путем обработки оптического потока изображения - перемещения объектов в пространстве изображения от кадра к кадру.
Наиболее близким техническим решением - прототипом - является схема, описанная в статье «Dense, Robust, and Accurate Motion Field Estimation from Stereo Image Sequences in Real-time»/» Плотные, надежные и точные оценки движения в реальной обстановке на основе стерео последовательности изображений в реальном времени» (http://www.6d-vision.de/9-literatur/rabe_eccv10/rabe10_eccv10.pdf?attredirects=0&d=1). Система позволяет определять перемещения объектов на основе информации со стереопары камер. Данная система состоит из следующих блоков: блок камер (а), блок дешифровки изображения (б), блок ректификации (в), блок вычисления диспаритета (расстояние между образом объекта в первом и втором изображении ректифицированной стереопары) (д), блок вычисления движения точек изображения (е), блок сглаживания шумов (ж), управляющий модуль (д). Система реализована в качестве программного прототипа с использованием ресурсов современных видеокарт.
Недостатком вышеописанной системы является то, что определение объектов и дальности до них производится только на основе сопоставления всех кадров, что занимает крайне много вычислительных мощностей и не позволяет реализовать систему в реальном времени на встроенной аппаратной платформе (ПЛИС), только на видеокарте. Не все использованные алгоритмы позволяют обеспечить высокую степень распараллеливания, что ограничивает возможности по ускорению работы системы и усложняет возможность разработать компактное устройство, работающее в реальном времени.
Задача изобретения - это создание компактного устройства для определения расстояния и скоростей объектов на основе стереоподхода, позволяющее преодолеть недостатки указанных технических решений, в частности возможность работы в реальном времени за счет реализации более оптимальных вариантов алгоритмов и разработки альтернативных подходов в блоках устройства, а также увеличение эффективности определения расстояния и скоростей объектов как за счет ускорения обработки информации, так и за счет устойчивости к изменениям условий освещенности, работающего полностью в пассивном режиме. Большая устойчивость к условиям освещенности в сравнении с доминирующими на рынке активными системами, достигается за счет пассивности работы (не требуется облучение исследуемого объекта), и использования камер с хорошо технологически отработанными классическими CMOS и CCD сенсорами.
Техническим результатом является повышение эффективности устройства за счет увеличения скорости определения расстояния и скоростей объектов на основе стереоподхода.
Технический результат достигается тем, что предлагается устройство для определения расстояния и скоростей объектов на основе стереоподхода (далее - Устройство), характеризующийся тем, что оно включает блок видеокамер, состоящий по крайней мере из двух видеокамер, направленных на анализируемый объект (1); первый интерфейсный блок, предназначенный для конверсии интерфейса блока видеокамер (1) в данные для переработки (2); блок нормализации и ректификации изображений (3); блок хранения корректирующей информации (4); блок извлечения признаков (5); блок ранжирования признаков (6); первый блок реорганизации признаков (7); блок сопоставления кадров (8); первый блок формирования гипотез (9); первый блок фильтрации (10), блок посторганизации признаков (11), блок сопоставления признаков (12), второй блок формирования гипотез (13), второй блок фильтрации (14), блок улучшения буфера (15), блок уточнения стерео (16); блок уточнения оптического потока (17); блок триангуляции (вычисление расстояния до объекта по диспаритету, фундаментальной матрице и стереобазе) (18); блок ректификации (19); блок хранения информации и признаках предыдущих кадров; (20); второй интерфейсный блок (21) (см. Фиг. 1).
Основные связи блоков выглядят следующим образом:
- Блоки 1 и 2 имеют асимметричную двустороннюю связь. Блок 1 передает в блок 2 информацию с пары видеокамер в формате, выдаваемом камерами, и получает от него корректирующие настройки, синхросигналы камер;
- Блок 3 получает от блока 2 информацию с пары видеокамер уже преобразованную во внутренний формат;
- Блок 3 получает от блока 4 в просчитанные вектора смещения для ректификации и сохраняет их в оперативной памяти;
- Блок 5 получает от блока 3 информацию с камер, уже преобразованную во внутренний формат;
- Блок 6 получает от блока 5 набор признаков и передает блоку 5 управляющую информацию;
- Блок 7 получает от блока 6 набор ранжированных признаков в бинаризированном виде;
- Блок 8 получает информацию от блока 2 (видеокадры) и таблицы признаков от блока 7;
- Блок 9 получает от блока 8 сопоставленную пару строк из правого и левого кадров;
- Блок 10 получает гипотезы от блока 9;
- Блок 11 берет таблицы признаков от блока 7;
- Блок 12 берет объединенные таблицы признаков от блока 11 и кадры от блоков 2 (текущий кадр) и 20 (предыдущий кадр);
- Блок 13 получает от блока 12 сопоставленные позиции в предыдущем и текущем кадре;
- Блок 14 получает гипотезы от блока 13;
- Блок 15 принимает от блока 14 отфильтрованные гипотезы;
- Блок 16 берет из блока 15 информацию о точках с проставленным диспаритетом у соседних точек;
- Блок 17 берет из блока 15 информацию о точках с проставленным диспаритетом у соседних точек;
- Блок 18 берет из блока 15 информацию о точках с проставленным диспаритетом у соседних точек;
- Блок 19 берет из блока 15 информацию о точках с проставленным диспаритетом у соседних точек;
- Блок 20 получает от блока 11 объединенные таблицы признаков;
- Блок 21 получает от блока 3 результат компенсации дисторсий оптической системы и ректификации, а также метаинформацию (отметки времени, настройки сенсоров, статистика о кадрах).
В описанном устройстве блок видеокамер (1) воспроизводит двумерные изображения анализируемого объекта. Первый интерфейсный блок (2) обеспечивает конверсию интерфейса блока (1) в структуры данных, удобные для обработки, также выдает камерам синхросигналы, если они поддерживают такую возможность. Блок нормализации, геометрической коррекции искажений, вносимых оптической системой, и ректификации (3), получая на вход стереоизображение, выдает на выходе ректифицированное (выравненное) изображение, те изображения, в которых образ одного объекта в правом и левом кадре находятся в строках с одним и тем же номером. Блок хранения корректирующей информации (4) хранит информацию о сферических искажениях и эпиполярных ограничениях. Блок извлечения признаков (5) производит операции с окрестностями отдельных пикселей, рассчитывая для каждой один или несколько векторов признаков, как содержимое набора признаков, так и каждый отдельный признак могут зависеть от параметров, введенных оператором или адаптивно вычисленных на основе статистической информации. Вектора признаков, обрабатываемые данным алгоритмом, эффективно обрабатываются в случае, если их информационная насыщенность составляет десятки бит (16-64). Такие вектора признаков могут эффективно храниться внутри машинного представления 32х, 64х, 128х (в дальнейшем и более) битного числа, разрядность структуры данных является параметром алгоритма и влияет на отношение робастность/точность/производительность. Алгоритм, способный напрямую выдавать такие признаки, это, например, преобразование Ценсуса (Census transform), им, однако, такие алгоритмы не ограничиваются. Для большого числа широко известных, но более информационно насыщенных признаков, таких как отклики на вейвлеты, свертки с классическими фильтрами Гаусса, Собеля и прочими, возможно использовать методы проекции и бинаризации для уменьшения их информационной насыщенности.
Блок ранжирования признаков (6), на основе статистической информации о признаках текущего и предыдущих кадров, проводит разделение признаков на три группы - первичные, вторичные и несущественные. Критерием может выступать популярность вектора признаков, его части или его свойств (принадлежность определенному подпространству) в предыдущих кадрах, однако устройство способно использовать произвольный критерий, который окажется вычислительно эффективным. После бинаризации вектора признаков передаются в первый блок реорганизации признаков (7). Первый блок реорганизации признаков (7) получает на вход вектора ранжированных признаков, а также информацию о координатах точек, откуда они были получены. Информация от последовательных наборов строк изображения обрабатывается отдельно, упомянутую последовательность первый блок реорганизации признаков (7) организует в таблицы по первичным признакам. Каждую из этих таблиц упорядочивает по вторичным признакам. В сценах с доминирующими вертикальными линиями, например лесу, первичными признаками могут быть свертки с градиентами, изменяющимися сверху вниз (горизонтальными), а вторичными - свертки с вертикальными градиентами. Разделение признаков на первичные и вторичные является важным фактором, что привносит вычислительные преимущества, поскольку частота встречаемости первичных признаков влияет на размер таблиц, оптимальным вариантом является идентичность размеров таблиц, а также алгоритмические преимущества, поскольку наиболее оптимально использовать в качестве первичных признаков наиболее явные, отчетливые признаки, которые однозначно различаются на изображениях. Предположим, что окрестностей с вертикальной границей очень много, тогда наличие/отсутствие свертков с горизонтальными границами позволят сразу различить окрестности и именно их логично использовать как первичные признаки.
После обработки блока (7) внутренние структуры данных раздельно хранят данные для блоков строк. В одной структуре лежат данные от строк с номерами [ni-1; ni), [ni; ni+1), [ni+1; ni+2) (в дальнейшем блоки строк). Параметры ni являются входными для алгоритма и влияют на отношение производительность/робастность. Блок сопоставления кадров (8) берет информацию о последовательных строках левого кадра и о последовательных строках правого кадра и, выбрав таблицы, соответствующие одному и тому же набору первичных признаков, сопоставляет ее по вторичным признакам, используя эффективные метрики (дискретные, расстояние хемминга, l_1, l_inf и подобные) и некое пороговое значение сопоставленную пару блок передает первому блоку формирования гипотез (9). Алгоритм, реализуемый блоком, позволяет выбрать структуры данных «левого» кадра, содержащие признаки из блока строк (с l по m), а из правого всех блоков, содержащих хоть одну строку с l по m. Это позволяет эффективно снизить пространство сопоставления признаков каждой строки со всего кадра до нескольких строк, что в геометрическом смысле означает поиск соответствий только в небольшой окрестности эпилинии. Это обеспечивается тем, что после ректификации эпилинии исходной конфигурации камер выстроились вдоль строк левого и правого изображений.
Первый блок формирования гипотез (9) отбрасывает вектора признаков и складирует только пары координат. Пара координат, сопоставленных на этом этапе с высокой вероятностью, является образом одного и того же объекта, зафиксированного двумя разными камерами, и такую пару мы называем гипотезой о диспаритете (там, где невозможна двойная трактовка - просто гипотезой). Гипотеза может также, кроме пары точек, содержать дополнительную информацию, явно (в переделах одно структуры данных) или неявно (в виде ссылки или индекса в другой структуре). Первый блок фильтрации (10) удаляет ложноположительные и корректирует ошибочные соответствия путем анализа гипотез о диспаритете, применения механизмы голосования, а также информацию от анализа изображений уменьшенного разрешения и информации с предыдущих кадров. Блок посторганизации признаков (11) берет данные, полученные от первого блока реорганизации признаков (7), и сливает таблицы для всех последовательных наборов строк, соответствующие одному набору первичных признаков в одну. Одна копия результата отправляется в блок сопоставления признаков (12), вторая копия сохраняется в базе второго блока выходного интерфейса (21) для использования на следующем кадре. Блок сопоставления признаков (12) аналогичен блоку сопоставления кадров (8), но работает не с информацией о последовательных строках правого и левого кадров, а с информацией о текущем и предыдущем кадрах целиком, поскольку для оптического потока нет эпиполярного ограничения. Второй блок формирования гипотез (13) функционально аналогичен первому блоку формирования гипотез (9), но получает на вход пары записей, содержащих координату и вектор признаков, а на выход выдается пара координат. Эта пара с высокой вероятностью является образом одного и того же объекта, зафиксированного камерой в предыдущем и текущем кадре, такую пару мы также будем называть гипотезой, в тех случаях, когда оба типа гипотез - о диспаритете и об оптическом потоке будут встречаться вместе будем явно указывать, о какой гипотезе идет речь. Подобно гипотезе о диспарителе, гипотеза о потоке может содержать дополнительную информацию, явно (в пределах одной структуры данных) или неявно (в виде ссылки или индекса в другой структуре).
Второй блок фильтрации (14) функционально аналогичен первому блоку фильтрации (10), но работает с гипотезами об оптическом потоке. В силу своего функционального сходства блоки (14) и (10) могут иметь общую реализацию. Блок улучшения буфера (15), используя отфильтрованные (выбранные) гипотезы о диспаритете, присваивает диспаритет соседним точкам. Блок уточнения стерео (16), используя результаты блока улучшения, субпиксельно (относящийся к измерениям, точнее, чем в один пиксель изображения), уточняет значение диспаритета используя KLT или сходный метод субпиксельного трекинга. Блок уточнения оптического потока (17), используя результаты блока улучшения (15), субпиксельно уточняет значение векторов оптического потока, используя KLT или сходный метод субпиксельного теркинга (отслеживание объектов и характерных точек изображения при смене кадров или при переходе от правого кадра к левому). Блок триангуляции (18) преобразует диспаритеты в глубины буфера (то есть информацию о распознанных точках объекта). Блок ректификации (19) на основании данных, полученных от блока улучшения буфера (15) в фоне работы цепочки основных блоков, реконструирует существенную и фундаментальную матрицы стереопары и вносит изменения в базу данных ректифицирующих преобразований. Блок хранения информации и признаи предыдущих кадров (20) содержит сведения о признаках, связанных с точками на предыдущем кадре. Второй интерфейсный блок (21) позволяет передать сформированные буферы глубины и оптического потока для дальнейшей обработки, а также получить настройки всех блоков.
Таким образом, поток обрабатываемых данных в Устройстве в значительной мере линеен, что позволяет большинство вычислений организовать с использованием подхода конвейеризации вычислений, что существенно ускоряет обработку данных и увеличивает быстродействие Устройства, что и приводит к достижению технического результата.
Предложенное Устройство может быть реализовано различными способами, как на процессорах общего назначения, таких как х86 и ARM, на специализированных массово параллельных процессорах, в частности процессорах, поддерживающих OpenCL, а также на разработанном специализированном процессоре (существующем в виде отдельной микросхемы или в виде программного ядра с возможностью встраивать в другие процессоры). В качестве источников данных могу использоваться как камеры оптического, так и ИК-диапазона, самых различных ценовых и качественных уровней - от популярных и дешевых веб-камер до высокочувствительных камер профессионального уровня, а также камер дальнего инфракрасного (теплового) и ближнего инфракрасного зрения.
Ниже представлен пример аппаратной реализации Устройства на базе ПЛИС (электронный компонент, используемый для создания цифровых интегральных схем) с сопроцессором на базе ядра ARM или PowerPC. Реализация Устройства на ПЛИС несет целый ряд преимуществ перед аналогичными системами, поскольку архитектура Устройства позволяет, с одной стороны, сильно распараллеливать поток вычислений, добиваясь высокой производительности и, за счет этого, работы в реальном времени с высокой эффективностью; а с другой стороны, некоторые составляющие блоки Устройства функционально схожи, что позволяет использовать для их реализации одни и те же физические ресурсы ПЛИС, экономя физические ресурсы ПЛИС и уменьшая энергопотребление и стоимость конечного устройства.
Управлением потоком данных и конфигурацией и переключением блоков занимается встроенное ядро, объемные пересылки данных реализуются через статическую или динамическую оперативную память.
Блоки (2), (3), (5), (6), (10), (14), (15), (16), (17), (18) обрабатывают изображения последовательно каждый раз, производя результат, зависящий от небольшой окрестности внутри обрабатываемого буфера. Это позволяет использовать одинаковую конвейерную архитектуру блоков.
Блок (2) реализуется в виде абстракции, которая скрывает за собой контроллер интерфейса камеры (CameraLink, GigE, UVC/USB и др.) или устройства симулирующего поток кадров, воспроизводимых из файлов.
Блок (2) принимает кадры, опционально декодирует их, собирает статистику о яркости и контрастности, отсылает корректирующие настройки обратно в блок (1), также в блок (1) посылаются синхросигналы для камер.
Блок (3) выбирает из хранилища вектора смещений для вычисления прообразов пикселей, скорректированных буферов (правого и левого кадра), и в соответствии с ними заполняет ректифицированные буфера, используя в зависимости от масштабного коэффициента и необходимого отношения производительность/качество, различные методы интерполяции и усреднения. На этом этапе единой операцией производится компенсация дисторсий оптической системы и собственно ректификация. Результат вычисления и метаинформация (отметки времени, настройки сенсоров, статистика о кадрах) передаются во второй блок интерфейса (21).
Блок хранения корректирующей информации (4) находится в оперативной памяти и компактно хранит предварительно просчитанные вектора смещения для ректификации.
Блок (5) исследует окрестность каждого пикселя каждого из буферов и вычисляет набор признаков (единицы десятков), каждый признак - это в общем случае вещественное число (в зависимости от целевой архитектуры можно представить его как целое, с плавающей или фиксированной точкой). Примерами признаков могут быть свертки с вейвлетами Хара, Габора или коэффициенты Фурье-разложения. Размер окрестности может выбираться адаптивно, чтобы обеспечить достаточную информационную насыщенность.
Блок (6) исследует статистику (текущего или для экономии времени предыдущего кадра) распределения признаков, выбирает наиболее информационно насыщенные и устойчивые к шуму. Единицы (1-5) самых значимых признаков называются первичными, следующие за ними - вторичными. Остальные отбрасываются. В качестве оптимизации блок (6) может дать команду блоку (5), самые слабые признаки в следующий раз не вычислять. Далее блоком (6) производится операция упаковки вектора признаков. Выбирается для каждого признака несколько последовательно возрастающих порогов и признак сравнивается с ними. Номера первых порогов, которые оказались больше очередного признака упаковываются затем в битовый вектор, становясь его элементами. Блок (6) стремится выбирать пороги так, чтобы во всем буфере для каждого признака элементы, в которые они были преобразованы, содержали отдельные кластеры значений, и одновременно каждый элемент встречался более-менее равномерно. К упакованному вектору первичных признаков и упакованному вектору вторичных признаков добавляется точка, в которой эти вектора были получены.
Блок (7) для небольших неперекрывающихся диапазонов строк строит таблицы по первичным признакам. Генерируется по одной таблице для каждого возможного значения вектора первичных признаков. Информация от наборов строк изображения заносится в данные таблицы. Каждая из этих таблиц далее упорядочивается по вторичным признакам. В таблицах также сохраняется значение вторичных признаков и координат. Таблицы могут далее обрабатываться параллельно. Блок (6) может быть спроектирован так, чтобы таблицы имели более-менее одинаковый размер.
Блок сопоставления стереокадров (8) берет последовательно информацию о диапазоне строк левого кадра, например строках [ni;ni+1) и три (или один в зависимости от точности ректификации), диапазона строк правого кадра [ni-1;ni), [ni;ni+1), [ni+1;ni+2), и, выбрав из диапазонов таблицы соответствующие одному и тому же набору первичных признаков, потом сопоставляет их по вторичным признакам, используя эффективные метрики (дискретные, расстояние хемминга, l_1, l_inf и подобные) и некое пороговое значение. Архитектура ПЛИС позволяет эффективно проводить сравнения параллельно, не увеличивая задержку на этом этапе. Менее производительные платформы могут быть ограничены дискретным точным сравнением, и использовать сортировку по вторичному признаку для ее осуществления. Блок (9) отбрасывает слишком популярные вектора признаков, а среди всех точных совпадений выбирает пару, основываясь на какой-нибудь эвристике, например - минимизации диспаритета или априорном знании ожидаемого диспаритета. В качестве эвристики можно использовать и грубые результаты работы описанного устройства на картинках уменьшенного размера и т.п. Сопоставленную пару блок передает блоку (9) для формирования блока гипотез.
Блоки (9) и (13) функционально идентичны и производят формирование гипотез, отбрасывает вектора признаков и складирует только пары координат, эффективным выходным представлением для этих блоков является буфер, содержащий координаты и соответствующий, например, правому кадру. Ячейки буфера заполнены специальными значениями там, где совпадения не найдено, а там, где оно найдено, хранятся его координаты.
Блоки (10) и (14) также функционально идентичны, принимая на вход буфер соответствий, они должны рассмотреть его как буфер гипотез о соответствии и убрать из него шум - неподкрепленные гипотезы. Для этого они исследуют окрестность каждого элемента буфера в поисках сходных гипотез, если подкреплений гипотезы оказывается достаточно, то она принимается. Пороги и настройки задаются в этом блоке пользователем на момент конфигурации системы.
Следует отдельно сказать, что для блока (14) под окрестностью можно понимать и окрестность по временной координате, то есть гипотезу о движении точки может поддержать тот факт, что не очень удаленная точка в прошлом двигалась со сходной скоростью в сходном направлении.
Блок (11) берет данные, полученные от блока (7), и сливает таблицы для всех последовательных наборов строк, соответствующие одному набору первичных признаков в одну. Одна копия результата отправляется в блок (12), вторая сохраняется в базе блока (21) для использования на следующем кадре. Эта операция может также выполняться параллельно для всех таблиц. На выходе блок (11) объединяет информацию о признаках со всего кадра.
Блок сопоставления оптического потока аналогичен блоку (8), но работает с информацией о текущем и предыдущем кадрах. Вычисления в этом блоке также могут выполняться параллельно, что позволяет его реализовать как внутри одной микросхемы ПЛИС, так и в нескольких микросхемах ПЛИС.
Блок улучшения буфера, опираясь на отфильтрованные гипотезы, пытается присвоить диспаритет соседними точкам. Для этого может использоваться триангуляция и интерполяция значений диспаритета, или простой перебор. Для проверки - верно ли сделано - предположение можно использовать кросс-корелляцию, метрику взаимной информации, сравнение векторов признаков или SAD. Последние два варианта наиболее вычислительно эффективны, но SAD требует точно сведенной яркости и контрастности двух изображений, что не всегда достижимо.
Блок уточнения оптического потока, используя результаты блока улучшения, субпиксельно уточняет значение векторов оптического потока, используя KLT или сходный метод субпиксельного трекинга. Следует отметить, что в зависимости от выбранных признаков, точность буферов до этого этапа составляет 1-2 пикселя, то есть трекер должен быть способен скорректировать такую ошибку.
Блок 19 получает карту двухмерных рассогласований и пытается подобрать оптимальную существенную или фундаментальную (в зависимости о нашем знании о модели камер) матрицу, робастно оптимизируя невязку. Вычислив существенную матрицу, блок (19) формирует ректифицирующее преобразование и преобразует его в матрицу сдвигов, сохраняя затем в базе 4.
В зависимости от требований к подвижности камер блок (19) может выполняться как каждый кадр, так и в фоновом, корректирующем режиме. Во втором случае блок (19) может выполняться на встроенном ядре, пока то простаивает.
Интерфейсный блок позволяет передать сформированные буфера глубины и оптического потока, передать для дальнейшей обработки по высокосортным интерфейсам таким, как USB 2.0, 3.0, Ethernet, PCI-E, а также получить настройки блоков.
Таким образом, предложено компактное «Устройство для определения расстояния и скоростей объектов на основе стереоподхода», позволяющее получать поток стереоизображений, проводящее их ректификацию и коррекцию, после чего извлекающее из изображений вектора признаков для каждой точки, затем эффективно сопоставляющее их внутри эпилиний для получения стереорассогласования и между следующими и предыдущим кадрами для получения оптического потока, позволяет получить высокую скорость определения расстояния и скоростей объектов, повысить эффективность распознавания объектов, жестов, вести контроль периметра, предупреждать столкновения транспортных средств между собой и с неподвижными препятствиями, картировать ландшафт, помещения и объекты, использоваться как датчик для автономных роботов и БПЛА (Беспилотный Летательный Аппарат) - производственных линий и подобного, включаться в системы помощи людям с ограниченными возможностями.