Размеры матрицы видеокамеры: Размер матрицы. Что это такое?

Содержание

Выбор камеры видеонаблюдения — общие рекомендации

   Главной составляющей любой системы видеонаблюдения являются камеры, так как именно они создают изображение, передающееся на видеомониторы, мультиплексоры, квадраторы, видеорегистраторы или другое CCTV оборудование. В основном выбор типа камеры наблюдения зависит от требований, предъявляемых к системе видеонаблюдения. Чаще всего в CCTV используются черно-белые камеры, имеющие, в большинстве своем, высокое разрешение и чувствительность. Цветные камеры (как правило, они имеют более низкое разрешение и чувствительность) в системах CCTV используют для наблюдения за объектами, для которых одним из главных требований является наблюдение в цвете, чтобы лучше рассмотреть объект наблюдения. Цветные камеры наблюдения некоторых производителей переключаются в черно-белый режим автоматически при уменьшении освещенности, для повышения чувствительности. Чтобы камера наблюдения не привлекала внимания, можно использовать цветные или черно-белые миниатюрные камеры. Если же Вам нужно совсем скрыть камеру из вида, лучше использовать бескорпусные камеры, которые можно устанавливать в разные предметы интерьера благодаря их малым размерам.

Скоростные купольные камеры применяются для слежения за объектами находящимися в движении, так как они могут быстро менять направление наблюдения. Для передачи изображений на удаленные расстояния по средствам Интернет или локальным сетям в системах видеонаблюдения крупных компаний устанавливаются ip-камеры (цифровые камеры) для передачи данных с территориально удаленных объектов. 

Основные характеристики камеры наблюдения определяют ее назначение, функциональные возможности и цену.

ПЗС-матрица камеры наблюдения

Матрица на приборах с зарядовой связью (ПЗС) — особенно важный элемент каждой современной камеры, именно он формирует изображение. Она является прямоугольной полупроводниковой пластиной, имеющей на поверхности множество пикселей (самостоятельных светочувствительных ячеек). Изображение фокусируется на ПЗС-матрицу объективом камеры, и свет, падающий на полупроводник, активизирует в нем электроны. Активизированные электроны последовательно перемещаются из каждого пикселя в считывающее устройство и образовывают видеосигнал, усиливающийся и обрабатывающийся системой камеры наблюдения в дальнейшем.

Формат ПЗС-матрицы

Правильно выбрать объектив для камеры видеонаблюдения поможет знание её формата. Форматом является округленное значение диаметра передающей трубки (в дюймах). Форматы матриц бывают: 1/4″, 1/3″, 2/3″, 1/2″ и 1″. 1/3″ — чаще всего устанавливают в камеры наблюдения. Чем больше диагональный размер матрицы, тем лучше качество принимаемого видеосигнала и меньше уровень шумов. Форматы 1″ и 2/3″ используются все реже, так как оптика и сама матрица имеет большие размеры и оправу, а также высокую цену.

Разрешение камеры наблюдения

В ТВЛ (телевизионные линии) измеряется разрешение любой камеры. Камеры наблюдения различаются разрешением по вертикали и по горизонтали. Разрешение по вертикали — способ электронного кодирования изображения. В РФ используются стандарты PAL (для цветных камер) и ССIR (для черно-белых камер). Оба этих стандарта имеют 625 строк по вертикали. Разрешение по горизонтали определяется максимальным числом вертикальных линий, которое может передать, например на видеомониторы, камера видеонаблюдения. Определяется это разрешение электронной схемой камеры и количеством пикселей в ПЗС-матрице по горизонтали. Разрешение вычисляется так: 0,75 умножить на число пикселей в строке.

Чувствительность камеры наблюдения

Чувствительность камеры — минимальная освещенность района наблюдения, при которой камерой создается видеосигнал с определенной глубиной модуляции и амплитудой 1 В при определенном отношении сигнал/шум. Оценивая чувствительность нужно принимать в расчет отражательную способность объекта, потому как темные предметы в темноте видны хуже, чем светлые.

Автоматическая регулировка усиления

Не всегда ПЗС-матрица камеры наблюдения вырабатывает сигнал достаточной амплитуды. Наличие АРУ (автоматическая регулировка усиления) в камере дает возможность довести до уровня 1В выходной сигнал. Но, нужно брать во внимание то, что, усиливая видеосигнал с помощью АРУ, так же усиливаются и шумы, сохраняя неизменным соотношение сигнал/шум.

Автоэлектронный затвор и автодиафрагма

В основном камеры наблюдения функционируют в условиях часто изменяющейся освещенности объектов наблюдения. Для получения с камеры видеосигнала хорошего качества нужно поддерживать количество квантов света, которые падают на ПЗС-матрицу в период между двумя последовательными считываниями, на определенном уровне. Автодиафрагма камеры наблюдения изменяет в оптической системе объектива объем входного отверстия, тем самым изменяя степень освещения ее ПЗС-матрицы. Электронный же затвор камеры меняет период, за которое происходит накопление заряда в ПЗС-матрице. При регулировке времени накопления заряда от 1/50 с. до 1/100000 с., можно отрабатывать трансформации освещенности в 2000 раз.

Отношение сигнал/шум

О качестве выходного видеосигнала с камеры говорит баланс сигнала и шума. Он равен: 20, умноженное на десятичный логарифм отношения амплитуды напряжения видеосигнала к среднеквадратичному значению напряжения фона, в децибелах (дБ). Визуально шум можно увидеть на изображении с камеры в виде «снега». Шум почти не заметен при отношении сигнал/шум равному 45 дБ. Качественное видео получается при применении высококачественной матрицы ПЗС, достаточной освещенности объекта наблюдения, светосильной оптики, а также цифровой фильтрацией шумов камерой наблюдения.

Компенсация встречной засветки

Очень часто при проведении видеонаблюдения случается так, что при ярком фоне нужно передать темные участки изображения. Например, в ситуации, когда навстречу камере наблюдения едет автомобиль с зажженными фарами, на съемке будут видны только лишь два ярких пятна от фар. Если же в камере есть функция компенсации встречной засветки, она сможет ликвидировать этот недостаток и позволит увидеть не только свет фар, но и сам автомобиль. Цифровые камеры наблюдения, в отличие от аналоговых, обладают электронным затвором, который выборочно определяет разнообразное время экспозиции для разных элементов изображения. Благодаря компенсации встречной засветки удается получать изображение со всеми деталями и одинаковой яркости.

Как избежать заплывания изображения камеры

Некоторые области ПЗС-матрицы камеры при встречной засветке попадают под сильное освещение. В результате, накопленное в этих областях количество заряда сможет перейти в соседние участки матрицы, что инициирует эффект заплывания изображения. Чтобы не допустить подобной ситуации, начали изготавливаться специальные ПЗС-матрицы, не накапливающие заряд больше установленной величины.

Баланс белого

Баланс белого — система обработки видеосигнала, позволяющая камере наблюдения достоверно передавать цвет объекта, не завися от типа источника освещения объекта. Настройка баланса белого производится как вручную, так и автоматически. При ручной настройке баланса белого пользователь однократно определяет эти параметры, камера при дальнейшей работе использует их автоматически. Камеры наблюдения с автоматической настройкой баланса белого применяют в случаях часто меняющегося освещения в течение суток. Эти камеры сами непрестанно выправляют баланс белого.

Гамма-коррекция

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

Источник stils.ru

Видеокамера JVC Everio GZ-E305 — Обзор на сайте Росконтроль.рф

Тестирование

Спасибо за ваш голос!

977 голосов

осталось собрать, чтобы товар попал
в список тестируемых

 
Проголосуйте за участие товара в тестировании

23 проголосовало

нужно 1000

   

Проголосовать

Пригласите друзей

проголосовать за товар

Где купить

Мы рекомендуем к покупке только проверенные товары


Мы не размещаем информацию о ценах и местах продаж товаров, не прошедших экспертизу, поскольку не можем быть уверены в их качестве и безопасности.

Характеристики: JVC Everio GZ-E305

Основные характеристики

Поддержка Full HD

есть

Максимальное разрешение (видеосъемка)

1920×1080

Тип носителя

перезаписываемая память

Дополнительные характеристики

ЖК-экран

3″, 230000 пикс.

Баланс белого

авто, ручная установка

Дополнительно

запись в H.264, запись в MPEG4

Ночная съемка

есть

Ручной фокус

есть

Сенсорный экран

есть

Стабилизация изображения

электронная

Широкоэкранный режим (видео)

есть

Автоэкспозиция

есть

Матрица

Тип матрицы

CMOS

Число матриц

1

Разрешение матрицы

2.5 Мпикс

Физический размер матрицы

1/5.8″

Объектив

Фокусное расстояние объектива

2.9 — 116 мм

Экспозиция

Значения выдержки

1/4000 — 1/2 сек

Значения диафрагмы

F1.8 — F6.3

Фото-режим

Фото-режим

есть

Широкоэкранный режим (фото)

есть

Интерфейсы, форматы и носители

Поддержка записи на карты памяти

есть

Форматы записи

1080p

Интерфейсы

AV-выход, HDMI-выход, USB-интерфейс

Конструкция и габариты

Размеры (ШхВхГ)

116x57x50 мм

Изготовитель

Обзор и тест компактной камеры Panasonic Lumix DC-FZ1000 II — Выводы

Дата публикации: 20.08.2019

Выводы

Panasonic Lumix FZ1000 II — это хорошая альтернатива покупке системной камеры с оптикой. Кажущаяся высокой цена компакта на поверку не столь уж велика по сравнению даже с одним сменным объективом к зеркалке или беззеркалке. Кроме того, многие другие компакты-суперзумы имеют и бóльшую стоимость. Всё дело во взвешенном наборе характеристик FZ1000 II.

Возможностей 16-кратного оптического зума с эквивалентным фокусным расстоянием 25–400 мм вполне достаточно для любых жанров, равно как и светосилы f/2,8–f/4. В паре с объективом работает матрица формата 1″. Именно она обеспечивает существенно более высокое по сравнению с бюджетными компактами качество картинки.

DC-FZ10002 УСТАНОВКИ: ISO 125, F3.3, 1/10 с, 25.0 мм экв.

Скоростные характеристики высоки, но не содержат фантастических цифр, часто негативно влияющих на стоимость камеры. Lumix FZ1000 II может снимать до 12 кадров/с. Видеовозможности позволяют вести 4K-съёмку с автофокусом, звуком (в том числе от внешнего микрофона), эффективным стабилизатором.

DC-FZ10002 УСТАНОВКИ: ISO 125, F4, 1/160 с, 279.0 мм экв.

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

DC-FZ10002 УСТАНОВКИ: ISO 125, F5.6, 1 с, 175.0 мм экв.

Откровенно слабых сторон у LUMIX DC-FZ10002EE нет. Но не стоит ждать от него невозможного. Качество изображения высоко, но уступит зеркалкам и беззеркалкам с большой матрицей. Равно как и отлично работающий автофокус проиграет репортажным моделям системных камер. FZ1000 II — это фотоаппарат не для решения профессиональных задач, он создан для фотографов-энтузиастов, снимающих прежде всего для себя: в отпуске, путешествии, на прогулке и дома. Здесь он способен заменить целый набор дорогой фототехники, обеспечив достаточное для фотоэнтузиаста качество картинки.

Плюсы:

  • сравнительно большая кратность зума;
  • большая для компакта матрица;
  • сравнительно высокая для зума светосила;
  • высокое качество изображения до ISO 1600;
  • возможность работы с RAW;
  • высокая скорость серийной съёмки и сравнительно большой буфер;
  • очень развитое управление;
  • сенсорный интерфейс;
  • поворотный дисплей;
  • хороший электронный видоискатель;
  • 4K-видеосъёмка и замедленная Full HD съёмка;
  • есть гнездо для внешнего микрофона;
  • Wi-Fi и Bluetooth.

Минусы:

  • нет поддержки SD UHS-II;
  • 4K-съёмка происходит с кропом;
  • большой размер и вес;
  • отсутствие заявленной пыле- и влагозащиты.

Рейтинг Prophotos

Оценка редакции

Оправданность цены

Какой размер матрицы камеры, видеокамеры? Как определить размер матрицы?

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

Почему так важен размер матрицы?

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

Между тем, хороший размер матрицы камеры (не максимальный, а просто хороший) важнее разрешения, потому что от него зависит качество картинки и сколько света попадает на сам сенсор. Разрешение играет роль только тогда, когда вы планируете печатать фотографии на большом носителе.Например, для печати фото в формате А1 нужно большое разрешение, но и здесь 4 мегапикселей будет достаточно. А вот для печати на обычной фотобумаге размером 10 х 15 см разрешение 2 Мп, не более. Как правило, большинство пользователей загружают фотографии в социальные сети, где они проходят предварительное сжатие.

Какой размер матрицы?

Это соотношение реального размера матрицы камеры к стандартному размеру пленки, который составляет 35 мм. Уточним: современные камеры имеют кадрированные (обрезанные) матрицы, поэтому их размер зачастую не равен половине стандартного.Однако оно всегда указывается дробным числом (например, 1 / 3,2 «), и покупатель в конечном итоге запутывается.

Часто люди видят большую ценность и думают, что это хорошо, но на самом деле большое значение в знаменателе имеет Ведь чем она будет больше, тем меньше размер матрицы фотоаппарата или фотоаппарата, а значит и качество снимков будет хуже.

Типовые размеры

В зависимости от того, насколько дорогая или хорошая камера , размер матрицы может быть малым, средним или большим.Ниже мы представим типичные размеры, которые встречаются чаще всего.

Начнем с самых маленьких матриц:

  1. 1 / 3.2 «- матрицы с таким размером самые маленькие. Хуже всего на рынке быть не может. Видя такой параметр в характеристиках камеры, покупать не стоит. Физические размеры здесь составляют 3,4 х 4,5 квадратных миллиметра, и ни одна более-менее приличная камера не будет оснащаться такой маленькой матрицей.
  2. 1 / 2,7 «- это размер тоже небольшой (4 х 5.4 квадратных миллиметра) и встречается только в дешевых фотоаппаратах.
  3. 1 / 2,5 «- физический размер матрицы при таком соотношении составляет 4,3 х 5,8 кв. Мм. Такими датчиками оснащены большинство современных« мыльниц »среднего ценового диапазона. Можно сказать, что это стандарт даже для современных беззеркальных и дешевых зеркальных фотоаппаратов.
  4. 1 / 1.8 «- геометрический размер сенсора составляет 5,3 х 7,2 квадратных метра. мм. Отсюда начинается категория более-менее достойных фотоаппаратов. Дорогие зеркальные фотоаппараты среднего класса могут быть укомплектованы сенсором с такими геометрическими параметрами.Также такие матрицы могут быть в простых небольших мыльницах.
  5. 2/3 «- соотношение, при котором физический размер будет равен 6,6 х 8,8 квадратных миллиметра. Датчики с этим параметром используются в дорогих зеркальных и компактных фотоаппаратах со сменной или несменной оптикой.
  6. 4/3″ — матрицы с таким соотношением используются исключительно в дорогих фотоаппаратах. Здесь размер 18 х 13,5 кв. мм.
  7. DX, APS-C. Редко размер обозначается буквами. Если вы видите такой параметр, это означает, что матрица в камере больше предыдущего формата, а ее размер составляет 24 х 18 мм.Это соответствует полурамке в 35 мм. Эти матрицы довольно популярны и часто встречаются в полупрофессиональных фотоаппаратах. Они дешевы в изготовлении, а размер пикселя в этом случае остается большим даже при разрешении 11-12 Мп.
  8. Полнокадровые матрицы. По размерам они соответствуют классической рамке в 35 мм, а их размер составляет 36 х 24 квадратных метра. мм. На рынке мало фотоаппаратов с такими матрицами. Это профессиональные модели, которые стоят очень дорого. Сами матрицы сложно изготавливать, что объясняет высокую стоимость камер на основе этих сенсоров.

Как определить размер матрицы?

Сделать это несложно. Это всегда указывается в технических характеристиках любой камеры. Но это можно сделать даже визуально. Например, цифровые фотоаппараты с матрицей размером 1 / 2,7 дюйма будут маленькими, легкими. А вот фотоаппараты с матрицей 1 / 1,8 дюйма при прочих равных будут немного больше и тяжелее.

Размер влияет на вес и объем камеры, поскольку размеры оптики тесно связаны с геометрическими параметрами датчиков.Профессиональные фотографы могут «на глаз» определить, какой размер матрицы используется в той или иной камере.

Шумы

Зернистость на фото — это один из самых частых дефектов, которые могут быть на фото. Если в камере маленькая матрица, то и света на ней становится мало. Из-за этого при ограниченном освещении (например, в помещении) такие камеры делают фотографии с детализацией (шумами). В тех же условиях камера с матрицей 1 / 1,8 дюйма сделает снимок с меньшим шумом по сравнению с камерой 1/2.Модель с 3-х дюймовой матрицей. Конечно, в появлении шумов также присутствуют внутренние электрические процессы, дефекты или нагрев матрицы, но это уже не относится к нашей теме.

Заключение

Помните, что камера с разрешением 20 мегапикселей и размер матрицы 1 / 2.3 «сделают фото хуже, чем камера с разрешением 8 мегапикселей, но матрица размером 1 / 1.8». Так что дело тут вовсе не в разрешении, который влияет только на размер изображения.Это вообще в нынешней ситуации не имеет значения, потому что в основном люди «выкладывают» свои фото в соцсети, где никто не откроет исходный размер.

Помните: размер матрицы — это физический реальный размер используемого датчика, который имеет наибольшее влияние на качество изображения. При выборе камеры в первую очередь обращайте внимание на геометрические размеры сенсора, которые всегда указываются в характеристиках. И только потом посмотрите остальные параметры, включая разрешение.

p >>

Резекция камеры | Смешанная реальность вики

Шаблон: Контекст

Обратная засечка камеры (часто называемая калибровкой камеры ) — это процесс определения истинных параметров камеры, которая произвела данную фотографию или видео. В основном параметры камеры были представлены в матрице, называемой Camera matrix.

Параметры модели камеры []

Часто мы используем положение 2D точки в пиксельных координатах.используется для представления положения трехмерной точки в мировых координатах. Примечание: они были выражены в расширенной записи однородных координат, которая является наиболее распространенной записью в робототехнике и преобразованиях твердого тела. Что касается модели камеры-обскуры, матрица камеры используется для обозначения проективного отображения мировых координат в пиксельные координаты.


Внутренние параметры []

Внутренняя матрица, содержащая 5 внутренних параметров.Эти параметры включают фокусное расстояние, формат изображения и главную точку. Параметры и представляют фокусное расстояние в пикселях, где и — масштабные коэффициенты, относящиеся к расстоянию между пикселями. [1]

Искажение объектива — важный параметр камер, но не включается в матрицу внутренних параметров. Многие современные алгоритмы калибровки камеры оценивают эти коэффициенты искажения.

Внешние параметры []

— это внешние параметры, обозначающие преобразование этой системы координат из мировых координат в координаты камеры.Эти параметры характеризуют преобразование, при котором 3D-точки сцены отображаются в 2D-точки в плоскости камеры.

Калибровка камеры часто используется на ранней стадии компьютерного зрения, особенно в области дополненной реальности. Когда используется камера, свет из окружающей среды фокусируется на плоскости изображения и фиксируется. Этот процесс уменьшает размеры данных, принимаемых камерой, с трех до двух (свет от 3D-сцены сохраняется на 2D-изображении). Таким образом, каждый пиксель на плоскости изображения соответствует лучу света от исходной сцены.Обратное засекание камеры определяет, какой входящий свет связан с каждым пикселем результирующего изображения. В идеальной камере-обскуре для этого достаточно простой проекционной матрицы. В более сложных системах камер ошибки, возникающие из-за смещения линз и деформаций их структур, могут привести к более сложным искажениям в конечном изображении. Матрица проекции камеры выводится из внутренних и внешних параметров камеры и часто представляется серией преобразований; е.грамм. матрица внутренних параметров камеры, матрица вращения 3×3 и вектор смещения. Матрица проекции камеры может использоваться для связывания точек в пространстве изображения камеры с местоположениями в трехмерном мировом пространстве.

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

Некоторые люди называют это калибровкой камеры, но многие ограничивают термин калибровка камеры только оценкой внутренних или внутренних параметров.

Алгоритмы []

Существует множество различных подходов к вычислению внутренних и внешних параметров для конкретной настройки камеры.

  1. Метод прямого линейного преобразования (DLT)
  2. Классический подход — это алгоритм Роджера Ю. Цая. Это двухэтапный алгоритм, вычисляющий позу (трехмерная ориентация, перемещение по осям x и y) на первом этапе. На втором этапе он вычисляет фокусное расстояние, коэффициенты искажения и перемещение по оси Z.
  3. Чжан Чжэнью «Новая гибкая техника калибровки камеры», основанная на плоской шахматной доске. Он основан на ограничениях на гомографию

Метод Чжана []

Шаблон: развернуть раздел Метод [2] калибровки камеры Чжана использует абстрактные концепции, такие как изображение абсолютной конической и круговых точек .

Вывод []

Предположим, у нас есть гомография, которая сопоставляет точки на «плоскости зонда» с точками на изображении.

Круговые точки лежат как на нашей плоскости зонда, так и на абсолютной конике. Лежать на них, конечно, означает, что они также проецируются на изображение абсолютной коники (IAC), таким образом и. Круговые точки проектируются как

.

Фактически мы можем игнорировать, заменяя наше новое выражение следующим образом:

который при разделении действительной и мнимой частей дает нам

Так как коники являются симметричными матрицами, и…

См. Также []

Внешние ссылки []

Список литературы []

LiftPose3D, основанный на глубоком обучении подход для преобразования двухмерных поз в трехмерные у лабораторных животных

  • 1.

    Pereira, T. D. et al. Быстрая оценка позы животных с использованием глубоких нейронных сетей. Нат. Методы 16 , 117–125 (2019).

    CAS Статья Google ученый

  • 2.

    Матис, А.и другие. DeepLabCut: безмаркерная оценка позы определенных пользователем частей тела с помощью глубокого обучения. Нат. Neurosci. 21 , 1281–1289 (2018).

    CAS Статья Google ученый

  • 3.

    Günel, S. et al. DeepFly3D, основанный на глубоком обучении подход для трехмерного отслеживания конечностей и придатков у привязанной взрослой особи Drosophila . eLife 8 , 3686 (2019).

    Артикул Google ученый

  • 4.

    C. Bala, P. et al. Автоматическая безмаркерная оценка позы у свободно движущихся макак с помощью OpenMonkeyStudio. Нат. Commun. 11 , 4560 (2020).

    Артикул Google ученый

  • 5.

    Ньюэлл, А., Янг, К. и Дэн, Дж. Наборные сети песочных часов для оценки позы человека. В Proc. Европейская конференция по компьютерному зрению (ECCV) (2016).

  • 6.

    Graving, J. M.и другие. Deepposekit, программный инструментарий для быстрой и надежной оценки позы животных с использованием глубокого обучения. eLife 8 , e47994 (2019).

    CAS Статья Google ученый

  • 7.

    Fang, H.-S., Xie, S., Tai, Y.-W. & Лу, C. RMPE: Оценка позы нескольких человек по регионам. В Proc. Международная конференция IEEE по компьютерному зрению (ICCV) (2017).

  • 8.

    Вэй, С.-Э., Рамакришна, В., Канаде, Т., Шейх, Ю. Машины для сверточной позы. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2016).

  • 9.

    Цао, З., Саймон, Т., Вэй, С.-Э. И Шейх Ю. Оценка двухмерной позы нескольких человек в реальном времени с использованием полей сродства частей. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2017).

  • 10.

    Хартли Р. и Зиссерман А. Множественная геометрия в компьютерном зрении 2-е изд. (Издательство Кембриджского университета, Кембридж, 2003).

    Google ученый

  • 11.

    Домбек, Д. А., Хаббаз, А. Н., Коллман, Ф., Адельман, Т. Л. и Танк, Д. В. Визуализация крупномасштабной нейронной активности с клеточным разрешением у бодрствующих мобильных мышей. Нейрон 56 , 43–57 (2007).

    CAS Статья Google ученый

  • 12.

    Seelig, J. D. et al. Двухфотонное изображение кальция от зафиксированной на голове Drosophila во время оптомоторной ходьбы. Нат. Методы 7 , 535–540 (2010).

    CAS Статья Google ученый

  • 13.

    Gaudry, Q., Hong, E.J., Kain, J., de Bivort, B.L. и Wilson, R.I. Асимметричное высвобождение нейротрансмиттера обеспечивает быструю латерализацию запаха у Drosophila . Nature 493 , 424–428 (2013).

    CAS Статья Google ученый

  • 14.

    Machado, A. S., Darmohray, D. M., Fayad, J., Marques, H. G. & Carey, M. R. Количественная структура координации всего тела выявляет специфические недостатки у свободно ходящих атаксических мышей. eLife 4 , e07892 (2015).

    Артикул Google ученый

  • 15.

    Исаков А. и др. Восстановление движения после травмы у Drosophila melanogaster зависит от проприоцепции. J. Exp. Биол. 219 , 1760–1771 (2016).

    Google ученый

  • 16.

    Uhlmann, V., Ramdya, P., Delgado-Gonzalo, R., Benton, R. & Unser, M. Flylimbtracker: подход на основе активного контура для отслеживания сегментов ног у немаркированных, свободно ведущих дрозофил . PLoS ONE 12 , e0173433 (2017).

    Артикул Google ученый

  • 17.

    ДеАнгелис, Б. Д., Заватоне-Вет, Дж.А. и Кларк, Д. А. Многообразная структура координации конечностей при ходьбе Drosophila . eLife 8 , 137 (2019).

    Артикул Google ученый

  • 18.

    Ли, Х.-Дж. И Чен, З. Определение трехмерных поз человеческого тела с одного изображения. Комп. Vis. Graphics Image Proc. 30 , 148–168 (1985).

    Google ученый

  • 19.

    Тейлор, К. Дж. Реконструкция сочлененных объектов из точечных соответствий в едином неоткалиброванном изображении. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2000).

  • 20.

    Chen, C. & Ramanan, D. Оценка позы человека в 3D = оценка позы в 2D + сопоставление. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2017).

  • 21.

    Гупта А., Мартинес Дж., Литтл Дж.Дж. И Вудхэм, Р. Дж. Трехмерная поза из движения для распознавания действий перекрестного обзора с помощью нелинейного циркулянтного временного кодирования. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2014).

  • 22.

    Sun, J. J. et al. Инвариантное по отношению к виду вероятностное вложение для позы человека. В Proc. Европейская конференция по компьютерному зрению (ECCV) (2020).

  • 23.

    Нибали, А., Хе, З., Морган, С. и Прендергаст, Л.Оценка позы человека в 3D с помощью двухмерных тепловых карт. В Proc. Зимняя конференция IEEE по приложениям компьютерного зрения (WACV) (2019).

  • 24.

    Zhao, L., Peng, X., Tian, ​​Y., Kapadia, M. & Metaxas, D. N. Сверточные сети семантических графов для трехмерной регрессии позы человека. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2019).

  • 25.

    Искаков К., Бурков Е., Лемпицкий В., Малков Ю.Обучаемая триангуляция позы человека. В Proc. Международная конференция по компьютерному зрению (ICCV) (2019).

  • 26.

    Канадзава А., Чжан Дж. Й., Фельсен П. и Малик Дж. Изучение трехмерной динамики человека из видео. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2019).

  • 27.

    Mehta, D. et al. XNect: захват 3D-движения несколькими людьми в реальном времени с помощью одной камеры RGB. В Proc. Транзакции ACM на графике (2020).

  • 28.

    Рематас, К., Нгуен, К. Х., Ритчел, Т., Фриц, М. и Туйтелаарс, Т. Новые виды объектов с одного изображения. IEEE Trans. Патт. Анальный. Machine Intell. 39 , 1576–1590 (2017).

    Артикул Google ученый

  • 29.

    Родин, Х., Константин, В., Катирчиоглу, И., Зальцманн, М. и Фуа, П. Разложение нейронной сцены для захвата движения несколькими людьми.В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2019).

  • 30.

    Мартинес, Дж., Хоссейн, Р., Ромеро, Дж. И Литтл, Дж. Дж. Простая, но эффективная базовая линия для трехмерной оценки позы человека. В Proc. Международная конференция IEEE по компьютерному зрению (ICCV) (2017).

  • 31.

    Павлло Д., Фейхтенхофер К., Гранжье Д. и Аули М. Оценка позы человека в 3D на видео с временными свертками и полу-контролируемым обучением.В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2019).

  • 32.

    Лю, Дж., Гуан, Ю. и Рохас, Дж. GAST-Net: графические пространственно-временные сверточные сети внимания для трехмерной оценки позы человека в видео. Препринт на https://arxiv.org/abs/2003.14179 (2020).

  • 33.

    Cai, Y. et al. Использование пространственно-временных отношений для оценки трехмерной позы с помощью сверточных сетей графов. В Proc. Международная конференция IEEE по компьютерному зрению (ICCV) (2019).

  • 34.

    Yiannakides, A., Aristidou, A. & Chrysanthou, Y. Трехмерная реконструкция позы человека и движения в реальном времени из монокулярных видео RGB. Comput. Анимат. Вирт. Миры (2019).

  • 35.

    Card, G. & Dickinson, M.H. Визуально опосредованное двигательное планирование в реакции бегства Drosophila . Curr. Биол. 18 , 1300–1307 (2008).

    CAS Статья Google ученый

  • 36.

    Wosnitza, A., Bockemühl, T., Dübbert, M., Scholz, H. & Büschges, A. Координация между ногами в контроле скорости ходьбы у Drosophila . J. Exp. Биол. 216 , 480–491 (2013).

    Google ученый

  • 37.

    Marshall, J. D. et al. Непрерывная кинематическая запись всего тела в 3D по репертуару поведения грызунов. Нейрон 109 , 420–437.e8 (2021).

    Артикул Google ученый

  • 38.

    Де Боно, М. и Баргманн, С. I. Естественная изменчивость гомолога рецептора нейропептида Y изменяет социальное поведение и пищевую реакцию у C. elegans . Cell 94 , 679–689 (1998).

    Артикул Google ученый

  • 39.

    Будик С.А. и О’Мэлли Д.М. Локомоторный репертуар личинок рыбок данио: плавание, поворот и захват добычи. J. Exp. Биол. 203 , 2565–2579 (2000).

    CAS Статья Google ученый

  • 40.

    Луис, М., Хубер, Т., Бентон, Р., Сакмар, Т. П. и Воссхал, Л. Б. Двусторонний ввод обонятельных сенсоров усиливает хемотаксисное поведение. Нат. Neurosci. 11 , 187–199 (2008).

    CAS Статья Google ученый

  • 41.

    Штраус, Р. и Гейзенберг, М. Координация ног при прямой ходьбе и поворотах у Drosophila melanogaster . J. Comp. Physiol. A. 167 , 403–412 (1990).

    CAS Статья Google ученый

  • 42.

    Кларк К. и Стилл Дж. Анализ походки мыши. Physiol. Behav. 66 , 723–729 (1999).

    CAS Статья Google ученый

  • 43.

    Wiltschko, A. B. et al. Отображение субсекундной структуры в поведении мыши. Нейрон 88 , 1121–1135 (2015).

    CAS Статья Google ученый

  • 44.

    Hong, W. et al. Автоматизированное измерение социального поведения мыши с использованием определения глубины, видеонаблюдения и машинного обучения. Proc. Natl. Акад. Sci. США 112 , E5351 – E5360 (2015).

    CAS Статья Google ученый

  • 45.

    Мендес, К. С., Бартос, И., Акай, Т., Марка, С. и Манн, Р.S. Количественная оценка параметров походки свободно ходящих людей дикого типа и лишенных сенсорной чувствительности Drosophila melanogaster . eLife 2 , 231 (2013).

    Google ученый

  • 46.

    Feng, K. et al. Распределенное управление цепями двигателя для ходьбы назад в Drosophila . Нат. Commun. 11 , 6166 (2020).

    CAS Статья Google ученый

  • 47.

    Альп Гюлер, Р., Неверова, Н. и Коккинос, И. Плотная поза: оценка плотной позы человека в дикой природе. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2018).

  • 48.

    Гюлер Р. А. и Коккинос И. Голопозиция: целостная трехмерная реконструкция человека в естественных условиях. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2019).

  • 49.

    Лопер, М., Махмуд, Н., Ромеро, Дж., Понс-Молл, Г. и Блэк, М. Дж. SMPL: многопользовательская линейная модель без кожи. ACM Trans. Графика (Proc. SIGGRAPH Asia) 34 , 248: 1–248: 16 (2015).

    Google ученый

  • 50.

    Чжан, Дж. Й., Фелсен, П., Канадзава, А. и Малик, Дж. Прогнозирование динамики человека в 3D по видео. В Proc. Международная конференция IEEE по компьютерному зрению (ICCV) (2019).

  • 51.

    Zuffi, S., Канадзава, А., Бергер-Вольф, Т. и Блэк, М. Дж. Трехмерное сафари: обучение оценке позы, формы и текстуры зебры по изображениям «в дикой природе». В Proc. Международная конференция IEEE по компьютерному зрению (ICCV) (2019).

  • 52.

    Шривастава Н., Хинтон Г., Крижевский А., Суцкевер И. и Салахутдинов Р. Отсев: простой способ предотвратить переобучение нейронных сетей. J. Mach. Учиться. Res. 15 , 1929–1958 (2014).

    Google ученый

  • 53.

    Наир В. и Хинтон Г. Э. Выпрямленные линейные блоки улучшают ограниченные машины Больцмана. В Proc. Международная конференция по машинному обучению (ICML) (2010 г.).

  • 54.

    Хе К., Чжан Х., Рен С. и Сан Дж. Глубокое остаточное обучение для распознавания изображений. В Proc. Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2016).

  • 55.

    Кингма, Д. П. и Ба, Дж. Адам: метод стохастической оптимизации.В Proc. Международная конференция по обучающим представлениям (ICLR) (2015).

  • 56.

    Иоффе С. и Сегеди К. Пакетная нормализация: ускорение глубокого обучения сети за счет уменьшения внутреннего ковариатного сдвига. В Proc. Международная конференция по машинному обучению (ICML) (2015).

  • 57.

    Wandt, B., Rudolph, M., Zell, P., Rhodin, H. & Rosenhahn, B. CanonPose: самостоятельная монокулярная трехмерная оценка позы человека в дикой природе. В Proc.Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2021 г.).

  • 58.

    Cao, J. et al. Междоменная адаптация для оценки позы животных. В Proc. Международная конференция IEEE по компьютерному зрению (ICCV) (2019).

  • 59.

    Санакоеу А., Халидов В., Маккарти М. С., Ведальди А. и Неверова Н. Перенос плотной позы на проксимальные классы животных. В Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR) (2020).

  • 60.

    Шридхар, В. Х., Рош, Д. Г. и Гингинс, С. Тректор: автоматическое отслеживание движений и поведения животных на основе изображений. Meth. Ecol. Evol. 10 , 815–820 (2019).

    Артикул Google ученый

  • Как выполнить калибровку камеры с помощью OpenCV — автоматический Addison

    В этом руководстве мы напишем программу для исправления искажения объектива камеры с помощью OpenCV. Этот процесс известен как калибровка камеры .

    Первое, что вам нужно сделать, это убедиться, что на вашем компьютере установлен OpenCV. Если вы используете Anaconda, введите:

     установка conda -c conda-forge opencv 

    Или введите:

     pip установить opencv-python 

    Работа камеры — преобразовывать свет, попадающий на датчик изображения, в изображение. Изображение состоит из элементов изображения, известных как пикселей .

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

    Например, посмотрите на крайний пример искажения изображения ниже.

    Вот то же изображение после калибровки камеры и корректировки искажения.

    Вы понимаете, как это может привести к проблемам… особенно в робототехнике, где важна точность?

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

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

    Двумя наиболее важными формами искажения являются радиальное искажение и тангенциальное искажение.

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

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

    Чтобы получить точное представление о реальном мире на камере, мы должны откалибровать камеру.Мы хотим знать, что когда мы видим объект определенного размера в реальном мире, этот размер преобразуется в известный размер в пиксельных координатах камеры.

    Калибровав камеру, мы можем, например, дать роботизированной руке улучшить координацию «рука-глаз». Вы также позволяете беспилотному автомобилю определять местоположение пешеходов, собак и других объектов относительно автомобиля.

    Калибровка камеры — это процесс использования известного реального образца (например, шахматной доски) для оценки внешних параметров (векторов вращения и сдвига) и внутренних параметров (например, шахматной доски).грамм. фокусное расстояние, оптический центр и т. д.) объектива камеры и датчика изображения, чтобы уменьшить ошибку искажения, вызванную дефектами камеры.

    Эти параметры включают:

    • Фокусное расстояние
    • Центр изображения (т. Е. Оптический) (обычно он не точно равен (ширина / 2, высота / 2))
    • Коэффициенты масштабирования для пикселей по строкам и столбцам
    • Фактор перекоса
    • Искажение линзы

    Калибровка шахматной доски — это стандартный метод выполнения калибровки камеры и оценки значений неизвестных параметров, о которых я упоминал в предыдущем разделе.

    OpenCV имеет библиотеку калибровки шахматной доски, которая пытается сопоставить точки в 3D на реальной шахматной доске с координатами 2D камеры. Эта информация затем используется для исправления искажения.

    Обратите внимание, что можно было использовать любой объект (книгу, портативный компьютер, автомобиль и т. Д.), Но шахматная доска обладает уникальными характеристиками, которые делают ее хорошо подходящей для работы по исправлению искажений камеры:

    • Он плоский, поэтому вам не нужно иметь дело с осью z (z = 0), только с осями x и y.Все точки на шахматной доске лежат в одной плоскости.
    • Имеются четкие углы и точки, что упрощает сопоставление точек в трехмерной системе координат реального мира с точками в двухмерной пиксельной системе координат камеры.
    • Все точки и углы расположены на прямых линиях.

    Официальное руководство от OpenCV находится здесь, на их веб-сайте, но давайте рассмотрим процесс калибровки камеры медленно, шаг за шагом.

    Распечатать шахматную доску

    Первый шаг — достать шахматную доску и распечатать ее на обычной бумаге формата А4.Вы можете загрузить этот PDF-файл , который является официальной шахматной доской из документации OpenCV, и просто распечатать его.

    Измерьте длину квадрата

    Измерьте длину стороны одного из квадратов. В моем случае я измерил 2,3 см (0,023 м).

    Сфотографируйте шахматную доску с разных расстояний и с разных сторон

    Нам нужно сделать не менее 10 фотографий шахматной доски с разных расстояний и ориентаций. Я сделаю 19 фотографий, чтобы у моего алгоритма было много входных изображений, из которых можно выполнить калибровку камеры.

    Приклейте шахматную доску к плоскому твердому предмету.

    Сделайте фотографии и переместите их в каталог на вашем компьютере.

    Вот примеры некоторых фотографий, которые я сделал:

    Нарисуйте углы

    Первое, что нам нужно сделать, это найти и затем нарисовать углы на изображении.

    Убедитесь, что у вас установлена ​​NumPy, библиотека научных вычислений для Python.

    Если вы используете Anaconda, введите:

     conda установить numpy 

    Или введите:

     pip install numpy 

    Напишите следующий код на Python.Вы можете скопировать и вставить этот код в свою любимую IDE. Выберите одно из изображений шахматной доски в качестве тестового примера. Я назову файл draw_corners.py . Этот код нарисует углы на входном изображении шахматной доски, а затем сохранит рисунок в файл изображения.

    import cv2 # Импортируйте библиотеку OpenCV, чтобы включить компьютерное зрение
    import numpy as np # Импортировать библиотеку научных вычислений NumPy
    
    # Автор: Эддисон Сирс-Коллинз
    # https://automaticaddison.com
    # Описание: обнаружение углов на шахматной доске
    
    filename = 'chessboard_input1.jpg '
    
    # Размеры шахматной доски
    number_of_squares_X = 10 # Количество квадратов шахматной доски вдоль оси x
    number_of_squares_Y = 7 # Количество квадратов на шахматной доске по оси Y
    nX = number_of_squares_X - 1 # Количество внутренних углов по оси x
    nY = number_of_squares_Y - 1 # Количество внутренних углов по оси y
    
    def main ():
    
      # Загрузить изображение
      image = cv2.imread (имя файла)
    
      # Преобразовать изображение в оттенки серого
      серый = cv2.cvtColor (изображение, cv2.COLOR_BGR2GRAY)
    
      # Найдите углы на шахматной доске
      успех, углы = cv2.findChessboardCorners (серый, (nY, nX), None)
    
      # Если углы найдены алгоритмом, нарисуйте их
      если успех == Истина:
    
        # Нарисуйте углы
        cv2.drawChessboardCorners (изображение, (nY, nX), углы, успех)
    
        # Создайте имя выходного файла, удалив часть '.jpg'
        size = len (имя файла)
        new_filename = имя файла [: размер - 4]
        new_filename = new_filename + '_drawn_corners.jpg'
        
        # Сохраняем новое изображение в рабочем каталоге
        cv2.imwrite (новое_имя_файла, изображение)
    
        # Показать изображение
        cv2.imshow ("Изображение", изображение)
    
        # Отображать окно, пока не будет нажата любая клавиша
        cv2.waitKey (0)
    
        # Закройте все окна
        cv2.destroyAllWindows ()
    
    главный()
    
     

    Запустите код.

    Вот результат:

    Напишите код Python для калибровки камеры

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

    Вот код. Я поместил свое искаженное изображение в папку с именем «искаженный» внутри рабочего каталога.В эту папку сохраняются неискаженные файлы.

    Не пугайтесь длины кода. Я поместил сюда много комментариев, чтобы вам было легче понять каждую строчку. Просто скопируйте и вставьте код в свой любимый текстовый редактор или IDE. Я назвал файл camera_calibration.py .

    # Автор: Эддисон Сирс-Коллинз
    # https://automaticaddison.com
    # Описание: Выполните калибровку камеры с помощью шахматной доски.
    
    import cv2 # Импортируйте библиотеку OpenCV, чтобы включить компьютерное зрение
    import numpy as np # Импортировать библиотеку научных вычислений NumPy
    import glob # Используется для получения файлов с указанным шаблоном
    
    # Путь к изображению, которое вы хотите отменить
    distorted_img_filename = 'искаженный / chessboard_input12.jpg '
    
    # Размеры шахматной доски
    number_of_squares_X = 10 # Количество квадратов шахматной доски вдоль оси x
    number_of_squares_Y = 7 # Количество квадратов на шахматной доске по оси Y
    nX = number_of_squares_X - 1 # Количество внутренних углов по оси x
    nY = number_of_squares_Y - 1 # Количество внутренних углов по оси y
    
    # Сохранение векторов трехмерных точек для всех изображений шахматной доски (мировая система координат)
    object_points = []
    
    # Сохранение векторов 2D точек для всех изображений шахматной доски (кадр координат камеры)
    image_points = []
    
    # Установить критерии прекращения.Мы останавливаемся либо при достижении точности, либо при
    # мы выполнили определенное количество итераций.
    критерии = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0,001)
    
    # Определить реальные координаты для точек в трехмерной системе координат
    # Точки объекта: (0,0,0), (1,0,0), (2,0,0) ...., (5,8,0)
    object_points_3D = np.zeros ((nX * nY, 3), np.float32)
    
    # Это координаты x и y
    object_points_3D [:,: 2] = np.mgrid [0: nY, 0: nX] .T.reshape (-1, 2)
    
    def main ():
    
      # Получить путь к файлу изображений в текущем каталоге
      images = glob.glob ('*. jpg')
    
      # Просматривайте каждое изображение шахматной доски одно за другим
      для image_file в изображениях:
     
        # Загрузить изображение
        изображение = cv2.imread (файл_образа)
    
        # Преобразовать изображение в оттенки серого
        серый = cv2.cvtColor (изображение, cv2.COLOR_BGR2GRAY)
    
        # Найдите углы на шахматной доске
        успех, corners = cv2.findChessboardCorners (серый, (nY, nX), None)
    
        # Если углы найдены алгоритмом, нарисуйте их
        если успех == Истина:
    
          # Добавить точки объекта
          точки_объекта.append (точки_объекта_3D)
    
          # Найдите более точные угловые пиксели
          углы_2 = cv2.cornerSubPix (серый, углы, (11,11), (-1, -1), критерии)
          
    # Добавить точки изображения
          image_points.append (углы)
    
          # Нарисуйте углы
          cv2.drawChessboardCorners (изображение, (nY, nX), corners_2, успех)
    
          # Показать изображение. Используется для тестирования.
          # cv2.imshow ("Изображение", изображение)
    
          # Отобразить окно на короткое время. Используется для тестирования.
          # cv2.waitKey (200)
    
      # Теперь возьмите искаженное изображение и отредактируйте его
      distorted_image = cv2.imread (имя_файла distorted_img)
    
      # Выполните калибровку камеры, чтобы получить матрицу камеры, коэффициенты искажения, векторы поворота и смещения и т. Д.
      ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera (точки_объекта,
                                                        image_points,
                                                        gray.shape [:: - 1],
                                                        Никто,
                                                        Никто)
    
      # Получить размеры изображения
      высота, ширина = distorted_image.shape [: 2]
    
      # Уточнить матрицу камеры
      # Возвращает оптимальную матрицу камеры и прямоугольную область интереса
      optim_camera_matrix, roi = cv2.getOptimalNewCameraMatrix (mtx, dist,
                                                                (ширина высота),
                                                                1,
                                                                (ширина высота))
    
      # Отменить искажение изображения
      undistorted_image = cv2.undistort (искаженное_изображение, mtx, dist, None,
                                        оптимальная_камера_матрица)
      
      # Обрезать изображение. Раскомментируйте эти две строки, чтобы удалить черные линии.
      # по краю неискаженного изображения.#x, y, w, h = roi
      #undistorted_image = неискаженное_изображение [y: y + h, x: x + w]
    
      # Отображение ключевых параметров выходных параметров процесса калибровки камеры
      print ("Оптимальная матрица камеры:")
      печать (оптимальная_камера_матрица)
    
      print ("\ n Коэффициент искажения:")
      печать (расстояние)
      
      print ("\ n Векторы вращения:")
      печать (rvecs)
      
      print ("\ n Векторы перевода:")
      печать (tvecs)
    
      # Создайте имя выходного файла, удалив часть '.jpg'
      size = len (distorted_img_filename)
      new_filename = искаженное_img_filename [: size - 4]
      новое_имя_файла = новое_имя_файла + '_неискаженное.jpg '
    
      # Сохраняем неискаженное изображение
      cv2.imwrite (новое_имя_файла, неискаженное_изображение)
    
      # Закройте все окна
      cv2.destroyAllWindows ()
    
    главный()
    
     

    Выход

    Вот исходное искаженное изображение.

    Вот неискаженное изображение, которое есть на выходе. Обратите внимание, что искаженное изображение имеет те же размеры, что и неискаженное изображение. Оба изображения имеют размер 600 x 450 пикселей.

    Коррекция довольно тонкая, поэтому ее может быть трудно увидеть (моя камера, должно быть, неплохая!).Это более заметно, когда я переворачиваю оба изображения вперед и назад, как вы видите на гифке ниже.

    Сохранение параметров с помощью Pickle

    Если вы хотите сохранить параметры калибровки камеры в файл, вы можете использовать для этого такой пакет, как Pickle. Он закодирует эти параметры в текстовый файл, который вы позже сможете загрузить в программу.

    Три ключевых параметра, которые необходимо обязательно сохранить: mtx , dist и optim_camera_matrix .

    Вот список некоторых руководств по использованию Pickle:

    Предполагая, что у вас есть import pickle в верхней части вашей программы, код Python для сохранения параметров в файл pickle будет следующим:

    # Сохраните результаты калибровки камеры.
    calib_result_pickle = {}
    calib_result_pickle ["mtx"] = mtx
    calib_result_pickle ["optim_camera_matrix"] = optim_camera_matrix
    calib_result_pickle ["dist"] = dist
    calib_result_pickle ["rvecs"] = rvecs
    calib_result_pickle ["tvecs"] = tvecs
    соленый огурец.дамп (calib_result_pickle, open ("camera_calib_pickle.p", "wb"))
     

    Затем, если позже вы захотите загрузить параметры в новую программу, вы должны использовать этот код:

    calib_result_pickle = pickle.load (open ("camera_calib_pickle.p", "rb"))
    mtx = calib_result_pickle ["mtx"]
    optim_camera_matrix = calib_result_pickle ["optim_camera_matrix"]
    dist = calib_result_pickle ["расстояние"]
     

    Затем, учитывая входное изображение или видеокадр (т.е. искаженное_изображение), мы можем отменить его, используя следующие строки кода:

    unistorted_image = cv2.неискажать (искаженное_изображение, mtx, dist, None,
                                        оптимальная_камера_матрица)
     

    Вот и все. Надеюсь, вам понравилось. Теперь вы знаете, как откалибровать камеру с помощью OpenCV.

    Продолжайте строительство!

    часто задаваемых вопросов и инструкции — документация по DepthAI

    Почему существует DepthAI?

    Пытаясь решить проблему встроенного пространственного ИИ (подробности здесь), мы обнаружили, что, хотя идеальный чип существует, не существует платформы (оборудования, прошивки или программного обеспечения), которая позволяла бы использовать чип для решения такой проблемы пространственного AI и CV.

    Итак, мы создали платформу, известную как DepthAI и OpenCV AI Kit (OAK), которая позволяет людям быстро и легко встраивать эффективный пространственный AI и CV в свои продукты.

    Что такое DepthAI?

    DepthAI — это платформа Embedded, Performant, Spatial AI + CV, состоящая из оборудования, микропрограмм и программного обеспечения с открытым исходным кодом, которая предоставляет под ключ встроенный Spatial AI + CV и компьютерное зрение с аппаратным ускорением.

    Он дает встроенным системам суперсилу человеческого восприятия в реальном времени: что такое объект и где он находится в физическом пространстве.

    Может использоваться со стандартными моделями ИИ (инструкции здесь) или с пользовательскими моделями, используя нашу полностью бесплатную обучающую программу (как здесь).

    Ниже приведен пример специально обученной модели, где DepthAI используется роботом для автономного сбора и сортировки клубники по спелости.

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

    DepthAI также имеет открытый исходный код (включая оборудование).Это сделано для того, чтобы компании (и даже отдельные лица) могли создавать прототипы и производите решения быстро, автономно и с минимальным риском.

    См. Сводку наших (лицензированных MIT) репозиториев Github ниже, которые включают оборудование с открытым исходным кодом, встроенное ПО, программное обеспечение и обучение машинному обучению.

    Что такое SpatialAI? Что такое локализация 3D-объекта?

    Во-первых, необходимо определить, что такое «Обнаружение объекта»:

    Это технический термин для поиска ограничивающего прямоугольника интересующего объекта в пиксельном пространстве (т.е.е. координаты пикселей) в изображении.

    Локализация трехмерных объектов (или обнаружение трехмерных объектов) — это поиск таких объектов в физическом пространстве, а не в пространстве пикселей. Это полезно при попытке измерения в реальном времени или взаимодействия с физическим миром.

    Ниже представлена ​​визуализация, демонстрирующая разницу между обнаружением объектов и локализацией трехмерных объектов:

    Spatial AI представляет собой надмножество таких 2D-эквивалентных нейронных сетей, расширяемых пространственной информацией для придания им трехмерного контекста.Другими словами, это не ограничивается расширением детекторов объектов до локализаторов 3D-объектов. Другие типы сетей также могут быть расширены, включая любую сеть, которая возвращает результаты в пиксельном пространстве.

    Примером такого расширения является использование детектора лицевых ориентиров на DepthAI. С обычной камерой эта сеть возвращается 2D-координаты всех 45 ориентиров лица (контуры глаз, ушей, рта, бровей и т. д.) с использованием этой же сети с DepthAI каждый из этих 45 лицевых ориентиров теперь является трехмерной точкой в ​​физическом пространстве, а не двухмерной точкой в ​​пиксельном пространстве.

    Как используется DepthAI? В каких отраслях он используется?

    DepthAI использовалось практически во всех отраслях, от сельского хозяйства / ранчо до уборки кортов и создания роботов для личного пользования. Вот краткий список некоторых распространенных вариантов использования DepthAI:

    • Визуальная помощь (для слабовидящих, для помощи при работе с вилочным погрузчиком и т. Д.)

    • Воздушные / подводные дроны (обнаружение неисправностей, наведение / обнаружение / маршрутизация на основе ИИ)

    • Электроскутер и микромобильность (запрещение людям ездить на арендованных электросамокатах как придурки)

    • Груз / транспорт / автономность (наполненность, статус, навигация, предотвращение опасностей)

    • Спортивный мониторинг (автоматическое увеличение изображения без потерь)

    • Умное сельское хозяйство (e.g направляющие лазеры для уничтожения сорняков, вредителей или нацеленный полив)

    Что отличает OAK-D от других фотоаппаратов?

    Назначение

    DepthAI — это тесное слияние аппаратно-ускоренной оценки глубины в реальном времени, нейронного вывода и компьютерного зрения в единый, простой в использовании интерфейс. Это эквивалентно объединению камеры 12MP / 4K, стереокамеры глубины и процессора AI в один продукт. И вдобавок он ускорил возможности CV, чтобы связать все это. вместе.

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

    С DepthAI все это делается за вас и доступно в устройстве, которое вы можете купить и подключить к компьютеру (как показано ниже), а также в модуле (здесь) со всеми этими возможности, которые могут быть интегрированы в ваш продукт — чтобы в ваши продукты были встроены эти возможности.

    Как DepthAI обеспечивает результаты пространственного ИИ?

    Есть два способа использовать DepthAI для получения результатов пространственного ИИ:

    1. Монокулярный нейронный вывод, объединенный со стерео глубиной.

      В этом режиме нейронная сеть запускается на одной камере и объединяется с результатами диспаратности глубины. Левая, правая или RGB-камера может использоваться для выполнения нейронного вывода.

    2. Стереонейронный вывод.

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

    В обоих случаях можно использовать стандартные нейронные сети.Нет необходимости обучать нейронные сети на 3D-данных.

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

    Монокулярный нейронный вывод, объединенный со стерео глубиной

    В этом режиме DepthAI запускает обнаружение объектов на одной камере (по выбору пользователя: левая, правая или RGB), и результаты слился с результатами глубины стерео несоответствия.Результаты стерео диспаратности производятся параллельно и в реальном времени. на DepthAI (на основе полуглобального сопоставления (SGBM)).

    DepthAI автоматически объединяет результаты глубины рассогласования с результатами обнаружения объектов и использует эти данные глубины для каждый объект в сочетании с известными внутренними функциями откалиброванных камер для повторного проецирования трехмерного положения обнаруженный объект в физическом пространстве (координаты X, Y, Z в метрах).

    И все эти вычисления выполняются на борту DepthAI без какой-либо нагрузки на другие системы.Этот метод отлично подходит для детекторов объектов, поскольку он обеспечивает физическое местоположение центроида объекта — и использует тот факт, что большинство объектов обычно состоят из множества пикселей, поэтому результаты глубины несоответствия могут быть усредненное значение для более точного определения местоположения.

    Визуализация этого режима ниже.

    В этом случае нейронный вывод (обнаружение объектов 20 классов на здесь) был запущен на камеру RGB, и результаты были наложены на поток глубины. Для демонстрации этого можно использовать эталонный сценарий Python DepthAI ( python3 depthai_demo.py -s metaout depth -bb — команда, используемая для создания видео выше).

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

    Какое максимальное разрешение по глубине стереодискационизма?

    Максимальное разрешение для карты глубины depthai составляет 1280×800 (1 МП), при поиске несоответствия 96 пикселей (по умолчанию) или 191 пиксель (когда включена расширенная диспаратность) и либо полнопиксельный (по умолчанию), либо субпиксельный сопоставление с точностью 32 подпиксельных шага (когда включено субпиксельное несоответствие), в результате максимальная теоретическая точность глубины составляет 191 (расширенный режим поиска диспаратности) * 32 (включен поиск субпиксельного несоответствия) 6 112.Однако субпиксельная и расширенная диспаратность еще не поддерживаются одновременно, но должны быть доступны в ближайшем будущем (Pull Request). Более подробная информация о режимах глубины диспаратности ниже:

    1. По умолчанию (поиск диспаратности 96 пикселей, диапазон : [0..95] ): 1280×800 или 640×400, 96 шагов глубины

    2. Extended Disparity (поиск несоответствия 191 пиксель, диапазон : [0..190] ), здесь: 1280×800 или 640×400, 191 шаг глубины

    3. Subpixel Disparity (32 шага субпикселей), здесь 1280×800 или 640×400, 96 шагов глубины * 32 шага глубины субпикселей = 3072 шага глубины.

    4. LR-Check Disparity, здесь: 1280×800, с разбегом в обоих направлениях, чтобы разрешить повторное центрирование глубины.

    (см. Расширенное несоответствие ниже)

    Стерео нейронный вывод

    В этом режиме DepthAI запускает нейронную сеть параллельно на левой и правой стереокамерах. Затем несоответствие результатов триангулируется с калиброванными внутренними характеристиками камеры (запрограммированными в EEPROM каждого блока DepthAI), чтобы дать трехмерное положение всех обнаруженных функций.

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

    Примеры включают поиск трехмерных местоположений:

    • Ориентиры лица (глаза, уши, нос, края рта и т. Д.)

    • Особенности продукта (отверстия для винтов, дефекты и т. Д.)

    • Суставы на теле человека (например, локти, колени, бедра и т. Д.)

    • Элементы автомобиля (например, зеркала, фары и т. Д.)

    • Вредители или болезнь на растении (т. Е. Элементы, которые слишком малы для обнаружения объектов + глубина стерео)

    Опять же, этот режим не требует обучения нейронных сетей с данными глубины. DepthAI использует стандартные готовые 2D-сети (которые встречаются значительно чаще) и использует этот стереофонический вывод для получения точных 3D-результатов.

    Ниже приведен пример стереонейронного вывода.

    И это действительно интересный случай, поскольку он демонстрирует две вещи на DepthAI:

    1. Стерео логический вывод (т. Е. Запуск нейронных сетей, работающих параллельно на левой и правой камерах)

    2. Многоступенчатый вывод (то есть обнаружение лица перетекало непосредственно в лицевой ориентир непосредственно на DepthAI)

    У нас есть демонстрация триангуляции поколения 2, которая выполняет стереонейронный интерфейс. Вам следует использовать демонстрацию gen2, , поскольку мы фокусируемся только на gen2.

    Если вы хотите использовать (старый) gen1 API, вам необходимо загрузить библиотеку gen1 depthai ( python3 -mpip install depthai == 1.0.0.0 ) и проверить ветку gen1_main репозитория depthai. После этого можно запускать

     python3 depthai_demo.py -cnn face-detection-retail-0004 -cnn2 landmarks-regression-retail-0009 -cam left_right -dd -sh 12 -cmx 12 -nce 2 -monor 400 -monof 30
     

    Где cam указывает запуск нейронной сети на обеих камерах, -cnn указывает сеть первого этапа для run (в данном случае обнаружение лица), -cnn2 указывает сеть второго уровня (в данном случае обнаружение лицевых ориентиров), и -dd отключает выполнение вычислений глубины диспаратности (поскольку они не используются в этом режиме).

    Банкноты

    Стоит отметить, что монокулярный нейронный вывод, объединенный со стерео глубиной, возможен для таких сетей, как лицевые ориентиры. детекторы, средства оценки позы и т. д., которые возвращают однопиксельные местоположения (вместо, например, ограничивающих рамок семантически помеченные пиксели), но стереонейронный вывод рекомендуется для этих типов сетей с лучшими результатами, так как в отличие от детекторов объектов (где объект обычно покрывает много пикселей, обычно сотни, которые можно усреднить для отличная оценка глубины / положения), детекторы наземных ориентиров обычно возвращают однопиксельные местоположения.Так что, если для этого отдельного пикселя не наблюдается хорошего результата стерео-несоответствия, положение может быть неправильным.

    Таким образом, в этих случаях запуск стереонейронного вывода является превосходным, так как он вообще не полагается на глубину стереоразличия, и вместо этого полагается исключительно на результаты нейронной сети, которые надежно предоставляют эти результаты с одним пикселем. А триангуляция параллельных левого / правого выходов приводит к очень точным результатам в реальном времени в трехмерном пространстве.

    Что такое конструктор конвейеров второго поколения?

    ОБНОВЛЕНИЕ

    : Конструктор конвейеров Gen2 теперь является стандартной версией DepthAI.Эта система API Gen2 была спроектирована как программный пакет нового поколения для DepthAI и OAK. Все аппаратные средства DepthAI и OAK работают с программным обеспечением Gen1 и Gen2, поскольку Gen2 — это чисто программная перезапись без изменений оборудования. Gen2 намного более гибок и является результатом всего, что мы узнали из развертываний Gen1 клиентами. Собрав все запросы и потребности пользователей Gen1 в гибкости, мы создали Gen2. Короче говоря, Gen2 допускает теоретически бесконечные перестановки параллельных и последовательных узлов CV + AI (нейронный вывод), ограничен только аппаратными возможностями, тогда как Gen1 ограничивался, например, 2-х последовательным и 2-параллельным нейронным выводом.Полная информация о Gen2 Pipeline Builder находится здесь.

    Несколько примеров Gen2 здесь, а также документы для Gen2 теперь доступны на главной странице документации.

    Что такое megaAI?

    Монокулярная (однокамерная) версия DepthAI — это megaAI. Потому что не все решения встроенных проблем AI / CV требуют пространственной информации.

    Мы назвали его мега , потому что он крошечный:

    megaAI использует все те же аппаратные средства, прошивки, программное обеспечение и обучающие стеки, что и DepthAI (и использует те же репозитории DepthAI Github), это просто крошечный вариант с одной камерой.

    Более подробную информацию, включая 3D-файлы с открытым исходным кодом и схемы, можно найти здесь.

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

    Какую модель мне заказать?

    Embedded CV / AI требует всевозможных форм / размеров / перестановок. И поэтому у нас есть множество вариантов для удовлетворения этих потребностей в нашем магазине. Ниже приведен краткий обзор вариантов с высоты ~ 10 000 футов:

    • USB3C со встроенными камерами и глубиной (OAK-D) — отлично подходит для быстрого использования DepthAI с компьютером.Все камеры встроены, и у него есть соединение USB3C, которое можно использовать с любым хостом USB3 или USB2.

    • USB3C с одиночной камерой (OAK-1) — это как OAK-D, но для тех, кому не нужна подробная информация. Одиночная небольшая камера USB3C AI / CV с функцией plug-and-play.

    • USB3C с модульными камерами (OAK-FFC-3P) — отлично подходит для гибкости прототипирования. Поскольку камеры имеют модульную конструкцию, вы можете размещать их на различных базовых стереосигналах.Эта гибкость приходит с выгодой — вы должны выяснить, как и где вы их смонтируете, а затем после установки выполните калибровку стерео. Это не ТОННА работы, но имейте в виду, что это не «подключи и работай», как другие варианты — это больше для приложений, требующих индивидуального монтажа, нестандартной базовой линии или нестандартной ориентации камер.

    • Модели PoE (OAK-D-PoE) — это эквивалент OAK-D, с PoE вместо USB. Если вам не нужна глубина, у нас есть OAK-1-PoE.

    • All in One Dev. Комплекты (ДУБ-Д-СМ4) — у этого есть встроенный вычислительный модуль Raspberry Pi 4. Вы буквально подключаете его к источнику питания и HDMI, и он загружается, демонстрируя всю мощь DepthAI.

    • Встроенный с WiFi / BT (OAK-D-IoT-40 и OAK-D-IoT-75) — у нас есть две модели, которые имеют дополнительную флеш-память NOR 128 МБ, поэтому они могут загружаться самостоятельно из флэш-памяти NOR, и для запуска не требуется присутствие хоста. Напротив, OAK-D-CM4 может работать и сам по себе, но он все еще загружается через USB с Raspberry Pi.На OAK-D-IoT-40 и OAK-D-IoT-75 Myriad X может работать полностью автономно и без других устройств. Затем встроенный ESP32 обеспечивает простую и удобную поддержку WiFi / BT (подробнее здесь), а также популярные интеграции, такие как поддержка AWS-IoT по принципу plug-and-play, отличные примеры iOS / Android BT и т. Д.

    Еще товары в магазине.

    Более подробную информацию, включая 3D-файлы и схемы с открытым исходным кодом, можно найти в документации по оборудованию.

    Система

    на модулях

    Для разработки продуктов на основе DepthAI мы предлагаем систему на модулях.Затем вы можете разработать свои собственные варианты, используя наши оборудование с открытым исходным кодом. Доступны три системы на модулях:

    1. OAK-SoM — USB-загрузочная система на модуле. Для создания устройств, которые взаимодействуют через USB с хост-процессором под управлением Linux, MacOS или Windows. В этом случае хост-процессор сохраняет все, и OAK-SoM загружается через USB с хоста.

    2. OAK-SoM-IoT — загрузка NOR-flash (также возможна загрузка с USB). Для создания устройств, которые работают автономно или работают со встроенными микроконтроллерами, такими как ESP32, AVR, STM32F4 и т. Д.Может также USB-загрузка, если / по желанию.

    3. OAK-SoM-Pro — NOR flash, eMMC, SD-Card и USB-boot (выбирается с помощью ввода-вывода на 2x 100-контактных разъемах). Для создания устройств, которые работают автономно и требуют встроенной памяти (16 ГБ eMMC) и / или поддержки Ethernet (встроенный интерфейс PCIE через один из двух 100-контактных разъемов в паре с базовой платой с поддержкой Ethernet обеспечивает поддержку Ethernet).

    Дополнительные сведения см. В документации по оборудованию.

    Насколько сложно запустить DepthAI с нуля? Какие платформы поддерживаются?

    Не сложно.Обычно DepthAI запускается / запускается на вашей платформе в течение пары минут (большая часть которых — это время загрузки). Требования — это Python и OpenCV (которые в любом случае отлично подходят для вашей системы!). видеть здесь, чтобы узнать о поддерживаемых платформах и о том, как начать с ними работать.

    Поддерживаются Raspbian, Ubuntu, macOS, Windows, и многие другие, и их легко установить / запустить. Чтобы просмотреть список поддерживаемых платформ (и инструкции о том, как начать работу), щелкните здесь.

    Чтобы начать работу с мощью пространственного искусственного интеллекта на платформе по вашему выбору, всего несколько минут.Ниже показан DepthAI, работающий на моем Mac.

    (Щелкните изображение выше, чтобы открыть видео с YouTube.)

    Команда для получения вышеуказанного вывода:

     python3 depthai_demo.py -s metaout previewout depth -ff -bb
     

    Вот версия с одной камерой (megaAI), работающая с python3 depthai_demo.py -dd (чтобы отключить отображение информации о глубине):

    Легко ли использовать DepthAI и MegaAI с Raspberry Pi?

    Очень. Он разработан для простоты установки и использования, а также для того, чтобы не загружать процессор Pi.

    Смотрите здесь, чтобы быстро приступить к работе!

    Можно ли использовать все модели с Raspberry Pi?

    Да, можно использовать любую модель, в том числе:

    • OAK-D-CM4 — у этого есть встроенный вычислительный модуль Raspberry Pi 4

    • ДУБ-Д

    • ДУБ-FFC-3P

    • ДУБ-1

    • Raspberry Pi HAT (BW1094) — его также можно использовать с другими хостами, так как его интерфейс — USB3

    У нас даже есть базовая поддержка ROS, которую также можно использовать на Pi.

    Работает ли DepthAI на серии Nvidia Jetson?

    Да, DepthAI и megaAI работают на всех сериях Jetson / Xavier, и установка проста. Поддерживаются Jetson Nano, Jetson Tx1, Jetson Tx2, Jetson Xavier NX, Jetson AGX Xavier и т. Д.

    См. Ниже DepthAI, работающее на Jetson Tx2, которое у меня на столе:

    Установка для NVIDIA Jetson и Xavier теперь представляет собой тот же набор инструкций, что и для Ubuntu. См. Здесь и следуя стандартным инструкциям Ubuntu.

    Также не забывайте о правилах udev после их настройки. И обязательно отключите и снова подключите ваш depthai после выполнения следующих команд (это позволяет Linux выполнять модификацию правил USB).

     echo 'SUBSYSTEM == "usb", ATTRS {idVendor} == "03e7", MODE = "0666"' | sudo tee /etc/udev/rules.d/80-movidius.rules
    sudo udevadm control --reload-rules && триггер sudo udevadm
     

    Могу ли я использовать несколько DepthAI с одним хостом?

    Да.DepthAI спроектировано так, чтобы максимально снизить нагрузку на хост. Таким образом, даже с Raspberry Pi вы можете запустить несколько DepthAI с Pi и не перегружать процессор Pi.

    См. Здесь инструкции, как это сделать.

    Совместима ли DepthAI с OpenVINO?

    Да. DepthAI полностью совместим с OpenVINO 2020.1, 2020.2, 2020.3, 2020.4, 2021.1 и 2021.2.

    Могу ли я обучить свои собственные модели для DepthAI?

    Да.

    У нас есть руководство по записным книжкам Google Colab, которое вы даже можете использовать для этого.Смотрите здесь

    Нужны ли мне данные о глубине для обучения моей собственной модели для DepthAI?

    В этом вся прелесть DepthAI. Он использует стандартные детекторы объектов (2D, пиксельное пространство) и объединяет эти нейронные сети с глубиной стереоразличия, чтобы дать вам 3D-результаты в физическом пространстве.

    А теперь можете обучить модель пользоваться информацией о глубине? Да, и, вероятно, будет даже точнее, чем 2D-версия. Для этого запишите все потоки (левый, правый и цветной) и переобучить все из них (что потребовало бы изменения внешнего интерфейса, скажем, MobileNet-SSD, чтобы разрешить 5 слоев вместо 3 (1 для каждой градации серого, 3 для цвета R, G, B)).

    Если я обучаю свою собственную сеть, какие нейронные операции поддерживаются DepthAI?

    См. Раздел VPU здесь.

    Все, что там поддерживается в рамках VPU , будет работать с DepthAI. Стоит отметить, что мы не тестировали все эти перестановки хотя.

    Какие сетевые магистрали поддерживаются DepthAI?

    Все перечисленные здесь сети поддерживаются DepthAI.

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

    Моя модель требует предварительной обработки (например, нормализации). Как мне это сделать в DepthAI?

    Набор инструментов OpenVINO позволяет добавлять эти шаги предварительной обработки к вашей модели, а затем эти шаги автоматически выполняются DepthAI. См. Здесь, чтобы узнать, как этим воспользоваться.

    Например, чтобы масштабировать пиксели кадра до диапазона [0,1], рассмотрите возможность добавления следующих параметров в оптимизатор модели: --data_type = FP16 --scale_values ​​[255,255,255]

    Для масштабирования в диапазоне [-1, 1] необходимо добавить средние значения, например.грамм. для мобильной сети: --scale_values ​​[127.5, 127.5, 127.5] --mean_values ​​[127.5, 127.5, 127.5]

    Другие варианты переоборудования моделей здесь

    Могу ли я запустить несколько нейронных моделей параллельно или последовательно (или и то, и другое)?

    Да. Конструктор конвейеров Gen2 — это то, что позволяет вам это делать. И у нас есть несколько примеров реализаций параллельной, последовательной и параллельной + серии в репозитории depthai -examples. Ярким примером является пример оценки взгляда, здесь, который показывает серию и параллель вместе в одном примере.

    Может ли DepthAI выполнять произвольное кадрирование, изменение размера, миниатюры и т. Д.?

    Да, см. Здесь пример того, как это сделать, с элементами управления WASD обрезанного участка. И смотрите здесь, как расширить кадрирование для непрямоугольных культур и деформировать их, чтобы они были прямоугольными (что может быть полезно для OCR).

    Может ли DepthAI запускать собственный CV-код? Скажите CV-код от PyTorch?

    Да, хотя лично нам еще предстоит это сделать. Но у людей в сообществе есть. Рахул Равикумар — один из них, и было очень приятно описать процесс того, как это сделать, см. Здесь.Затем этот код можно запустить как узел в Gen2 Pipeline Builder, чтобы соединить его с другими узлами CV, нейронным выводом, обработкой глубины и т. Д., Которые поддерживаются на платформе.

    Как интегрировать DepthAI в наш продукт?

    Как интегрировать DepthAI зависит от того, включает ли создаваемый вами продукт:

    1. процессор под управлением операционной системы (Linux, MacOS или Windows) или

    2. микроконтроллер (MCU) без операционной системы (или RTOS, например FreeRTOS) или

    3. нет другого процессора или микроконтроллера (т.е.е. DepthAI — единственный процессор в системе).

    Мы предлагаем оборудование для поддержки всех трех сценариев использования, но степень зрелости микропрограмм / программного обеспечения зависит от трех режимов:

    1. Использование нашего Python API и / или C ++ API (равные возможности)

    2. Используя наш C ++ SPI API (см. Здесь),

    3. Использование нашей автономной утилиты для прошивки для прошивки приложения depthai для автономной загрузки (как часть Pipeline Builder Gen2, здесь используется наша утилита SBR).

    Во всех случаях DepthAI совместим с OpenVINO для нейронных моделей. Единственное, что меняется между модальностями, — это связь (USB, Ethernet, SPI и т. Д.) И задействованный (если есть) другой процессор.

    Вариант использования 1: DepthAI — это сопроцессор для процессора под управлением Linux, MacOS или Windows.

    В этом случае DepthAI можно использовать двумя способами:

    • Режим NCS2 (здесь USB) — в этом режиме устройство отображается как NCS2, а встроенные камеры не используются и как будто их не существует.Этот режим часто используется для первоначального прототипирования, а в некоторых случаях, когда продукту просто требуется «интегрированный NCS2», что достигается путем интеграции OAK-SoM.

    • DepthAI Mode (USB, здесь используется наш USB API) — он использует встроенные камеры непосредственно в Myriad X и загружает прошивку через USB с хост-процессора под управлением Linux, Mac или Windows. Это основной вариант использования DepthAI / megaAI при использовании с хост-процессором, способным запускать операционную систему (например, Raspberry Pi, т.MX8 и др.).

    Вариант использования 2: Использование DepthAI с микроконтроллером, например ESP32, ATTiny8 и т. Д.

    В этом случае DepthAI загружается с внутренней флэш-памяти на OAK-SoM-IoT и обменивается данными через SPI, что позволяет использовать DepthAI с микроконтроллерами, такими как STM32, MSP430, ESP32, ATMega / Arduino и т. Д. У нас даже есть встроенный эталонный дизайн для ESP32 (OAK-D-IoT-40 (BW1092)), доступный в нашем магазине. И это с открытым исходным кодом! Вы можете проверить файлы дизайна здесь.

    Мы подготовили руководство и демонстрацию по работе с ESP32.

    Вариант использования 3. Использование DepthAI в качестве единственного процессора на устройстве.

    Это поддерживается за счет запуска microPython непосредственно на OAK-SoM-Pro или OAK-SoM-IoT в качестве узлов в Gen2 Pipeline Builder.

    Узлы microPython позволяют настраивать логику, управлять I2C, SPI, GPIO, UART и т. Д., Позволяя прямое управление исполнительными механизмами, прямое считывание датчиков и т. Д. Из / в конвейер функций CV / AI. Целевым примером является создание полностью автономной роботизированной платформы с визуальным управлением с DepthAI в качестве единственного процессора в системе.

    Оборудование для каждого корпуса:

    • OAK-SoM: USB-загрузка. Таким образом, он предназначен для работы с хост-процессором под управлением Linux, Mac или Windows, и этот хост-процессор загружает OAK-SoM через USB

    • OAK-SoM-IoT: загрузка USB или загрузка NOR-flash. Этот модуль может работать с главным компьютером так же, как OAK-SoM, но также имеет встроенную флэш-память NOR 128 МБ и встроенные переключатели загрузки — так что его можно запрограммировать на загрузку с флэш-памяти NOR вместо USB. Таким образом, это позволяет использовать DepthAI в чисто встроенных приложениях, где вообще не задействована операционная система.Таким образом, этот модуль может быть соединен с ATTiny8, например, для связи через SPI, или ESP32, как на OAK-D-IoT-40 (который поставляется с предустановленным OAK-SoM-IoT).

    • OAK-SoM-Pro: поддерживает несколько вариантов загрузки: NOR (128 МБ), eMMC (поддержка SD-карты), USB, Ethernet (EEPROM, 32 КБ). Все эти варианты загрузки делают OAK-SoM-Pro очень гибким с точки зрения вариантов использования и наиболее подходящим в качестве автономного устройства. Он разработан для интеграции в систему верхнего уровня с потребностью в маломощной системе машинного зрения на базе искусственного интеллекта.

    Начало работы с разработкой

    Собираетесь ли использовать DepthAI с хостом, поддерживающим ОС, микроконтроллер через SPI (в разработке) или полностью автономный — мы рекомендуем начать с любого В режиме NCS2 или с помощью DepthAI USB API для прототипов / тестов и т. Д. так как это позволяет ускорить итерацию / обратную связь по производительность нейронной модели и т. д. В частности, в режиме NCS2 все изображения / видео можно использовать непосредственно с хоста (так что вам не нужно направлять камеру на то, что вы хотите протестировать).

    В режиме DepthAI теоретически будет работать все, что будет работать в режиме NCS2, но иногда требуется обработка на стороне хоста, если это сеть, которую мы никогда не запускали. до. И эта работа обычно не является тяжелой. См. Несколько примеров здесь и на Github.

    Для распространенных форматов детекторов объектов ( MobileNet -SSD, (Tiny) YOLO V3 / V4) фактически нет работы по переходу из режима NCS2 в режим DepthAI, потому что мы добавили поддержку декодирования их результатов на стороне устройства.Чтобы использовать декодирование на стороне устройства с gen2, взгляните на YoloDetectionNetwork для YOLO (демо здесь) или MobileNetDetectionNetwork для MobileNet (демонстрация здесь) декодирование.

    Чтобы использовать собственную обученную модель Yolo с DepthAI, вы должны начать с demo и немного измените ее код:

    • Измените метки на label_map = ["label1", "label2", "..."] , в зависимости от вашей модели

    • Установите количество классов в сети обнаружения .setNumClasses () в зависимости от вашей модели

    • Если вы не скомпилировали модель с последней версией OpenVINO, установите версию OpenVINO

    • Не забудьте изменить путь к модели ( файл .blob )

    Для MobileNet выполните те же действия (пропустите второй), но начните с Демо MobileNet.

    Интересуетесь, как обучить детектор объектов с вашими данными? Вы можете ознакомиться с нашим учебным пособием по Yolo V4 здесь!

    Какие возможности аппаратного ускорения существуют в DepthAI и / или megaAI?

    Система DepthAI представляет собой конструктор конвейеров узлов и графов.Ниже представлены узлы с аппаратным ускорением, существующие в этом сборщике.

    Доступно в подробностях AI API сегодня:

    • Узел нейронного вывода, совместимый с OpenVINO (например, обнаружение объектов, классификация изображений и т. Д., Включая многоступенчатый вывод, например, здесь и здесь)

    • Глубина стерео (включая медианную фильтрацию) (например, здесь)

    • Стерео логический вывод (двухступенчатый, например, здесь)

    • Локализация 3D-объекта (добавление детекторов 2D-объекта к 3D-положению в метрах, например.грамм. здесь и здесь)

    • Отслеживание объектов (например, здесь, в том числе в трехмерном пространстве)

    • Кодирование H.264 и H.265 (HEVC, 1080p и 4K видео, например здесь)

    • Кодировка JPEG (например, здесь)

    • Кодировка MJPEG

    • Warp / Dewarp (для выравнивания по глубине RGB и т. Д.)

    • Enhanced Disparity Depth Modes (Sub-Pixel, LR-Check, and Extended Disparity), здесь

    • Поддержка SPI, здесь

    • Произвольное кадрирование / масштабирование / переформатирование и возврат ROI (e.грамм. здесь)

    • Встроенное обнаружение текста (например, здесь)

    • Pipeline Builder Gen2 (произвольная последовательная / параллельная комбинация нейронных сетей и функций CV, справочная информация здесь и документация по API здесь).

    • Масштабирование без потерь (от 12 МП до 4K, 1080p или 720p, здесь)

    • Улучшенная поддержка стереонейронного вывода (здесь)

    • Встроенная поддержка IMU (здесь)

    • Обнаружение края (здесь видео)

    • Поддержка сценариев Python на устройстве, (здесь)

    • Отслеживание функций (включая отслеживание функций с помощью IMU, здесь)

    • Фильтрация Харриса (здесь)

    Вышеупомянутые функции доступны в Luxonis Pipeline Builder Gen2, который теперь является основным API для DepthAI.API Gen1 по-прежнему поддерживается, и к нему можно получить доступ через переключатель версий в нижнем левом углу этой страницы. См. Ниже информацию о незавершенных дополнительных функциях / гибкости, которые будут добавлены в виде модульных узлов в конструктор конвейеров Luxonis для DepthAI.

    В нашей дорожной карте (большинство из них находится в разработке / интеграции)

    • Оценка движения (здесь)

    • Вычитание фона (здесь)

    • AprilTags (PR здесь)

    • Поддержка OpenCL (поддерживается через OpenVINO (здесь))

    Посмотрите наш проект Github здесь, чтобы следить за развитием этих реализаций.

    Строитель трубопроводов Gen2

    Конструктор конвейеров DepthAI 2-го поколения, который включает в себя все отзывы, полученные нами от API первого поколения. Теперь это основной способ использования DepthAI.

    Он позволяет объединять многоступенчатые нейронные сети вместе с функциями CV (такими как оценка движения или фильтрация Харриса) и логическими правилами, все из которых работают на DepthAI / megaAI / OAK без какой-либо нагрузки на хост.

    Доступны ли файлы САПР?

    Да.

    Полные проекты (включая исходные файлы Altium) для всех несущих плат находятся на нашем depthai-hardware Github.

    Как включить depthai воспринимать более близкие расстояния

    Если результаты глубины для близко расположенных объектов выглядят странно, вероятно, это связано с тем, что они ниже минимального расстояния восприятия глубины для OAK-D.

    Для OAK-D минимальная стандартная глубина установки составляет около 70 см.

    Его можно разрезать на 1/2 и 1/4 с помощью следующих опций:

    1. Измените разрешение на 640×400 вместо стандартного 1280×800.

    2. Включить расширенную диспаратность.

    См. Эти примеры, чтобы узнать, как включить расширенную диспаратность.

    Для получения дополнительной информации см. Документацию StereoDepth.

    Какие минимальные глубины видны с помощью DepthAI?

    Существует два способа использования DepthAI для обнаружения трехмерных объектов и / или использования нейронной информации для получения трехмерного положения функций в реальном времени (например, ориентиров лица):

    1. Монокулярный нейронный вывод, объединенный со стерео глубиной

    2. Стереонейронный вывод

    Монокулярный нейронный вывод, объединенный со стерео глубиной

    В этом режиме AI (обнаружение объекта) запускается на левой, правой или RGB-камере, и результаты объединяются с глубиной стереосогласования на основе полуглобального сопоставления (SGBM).Минимальная глубина ограничена поиском максимального диспаратности, который по умолчанию равен 96, но может быть расширен до 191 в расширенных режимах диспаратности (см. Расширенное диспаратность ниже).

    Для расчета минимального расстояния в этом режиме используйте следующую формулу:

     min_distance = focal_length_in_pixels * base_line_dist / max_disparity_in_pixels
     

    Где focal_length_in_pixels (HFOV полутоновых камер с глобальным затвором составляет 71,9 градуса):

     focal_length_in_pixels = 1280 * 0.5 / тангенс (71,9 * 0,5 * PI / 180) = 882,5
     

    Расчет здесь (а для данных глубины диспаратности значение сохраняется в uint16 , где 0 — специальное значение, означающее, что расстояние неизвестно.)

    Используя приведенную выше формулу с настройками по умолчанию OAK-D (base_line_dist = 7,5 см , max_disparity_in_pixels = 95 ), мы получаем:

     min_distance = 882,5 * 7,5 см / 95 = 69,67 см
     

    Обратите внимание, что это расстояние можно уменьшить вдвое:

    • Изменение разрешения на 640×400 вместо стандартного 1280×800.

    • Включение расширенной диспаратности — см. Эти примеры, чтобы узнать, как включить расширенную диспаратность.

    Расширенный режим диспаратности устанавливает max_disparity_in_pixels равным 190 , таким образом, min_distance для приведенного выше примера OAK-D составляет:

     min_distance = 882,5 * 7,5 см / 190 = 34,84 см
     

    Обратите внимание, что применение обоих вариантов возможно, но на таких коротких расстояниях минимальное расстояние ограничено фокусным расстоянием, которое составляет 19,6 см, поэтому минимальное расстояние не может быть меньше 19.6см.

    Примеры расчета для OAK-D:

    • ~ 70 см со стандартным диспаритетом (разрешение 1280×800)

    • ~ 35 см с расширенным диспаритетом (разрешение 1280×800)

    • ~ 35 см с разрешением 640×400

    • ~ 19,6 см с увеличенным диспаритетом и разрешением 640×400

    Более подробное объяснение см. В документации StereoDepth.

    Стерео нейронный вывод

    В этом режиме нейронный вывод (обнаружение объекта, обнаружение ориентира и т. Д.) запускается на левой и правой камерах для получения результатов стереофонического вывода. В отличие от монокулярного нейронного вывода, объединенного со стерео глубиной — нет максимального предела поиска диспаратности — поэтому минимальное расстояние чисто ограничено большим из (а) горизонтального поля зрения (HFOV) самих стереокамер и (б) гиперфокального расстояния камер.

    Гиперфокальное расстояние стереопары с синхронизацией глобального затвора составляет 19,6 см. Таким образом, объекты ближе 19,6 см будут не в фокусе.Это фактически минимальное расстояние для этого режима работы, как и в большинстве случаев (за исключением очень широких стереобазовых линий с OAK-FFC-3P-OG), это эффективное минимальное расстояние выше, чем фактическое минимальное расстояние в результате поля обзора стереокамеры. Например, объекты будет полностью вне поля зрения обеих камер с градациями серого, когда размер меньше 5,25 см от OAK-D, но это ближе, чем гиперфокальное расстояние полутоновых камер (которое составляет 19.6см), так что фактическая минимальная глубина и есть это гиперфокальное расстояние.

    Соответственно, чтобы рассчитать минимальное расстояние для этого режима работы, используйте следующую формулу:

     min_distance = max (tan ((90 - HFOV / 2) * pi / 2) * base_line_dist / 2, 19,6)
     

    Эта формула реализует максимум из минимального расстояния, заданного HFOV, и 19,6 см, которое является минимальным расстоянием, заданным гиперфокальным расстоянием.

    Минимальная глубина бортовой камеры

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

    Монокулярный нейронный вывод, объединенный со стереорежимом глубины

    Для устройств DepthAI со встроенными камерами это работает до следующих минимальных глубин:

     мин_дистанция = 882,5 * 0,09 / 95 = 0,836 # м
     

    расчет здесь

    • ДУБ-Д

      • 0,697 метра для стандартного несоответствия,

      • 0,348 метра для расширенного несоответствия (191 пиксель) при разрешении 1280×800 или стандартного несоответствия при разрешении 640×400 и

      • 0.196 метра для Extended Disparity при разрешении 640×400 (это расстояние ограничено фокусным расстоянием камер на OAK-D)

     min_distance = 882,5 * 0,075 / 95 = 0,697 # м
     

    расчет здесь

    Режим стереонейронного вывода

    Для устройств DepthAI со встроенными камерами все модели (OAK-D-CM4 и OAK-D) ограничены гиперфокальным расстоянием стереокамер, поэтому их минимальная глубина составляет 0,196 метра.

    Модульная камера

    Минимальная глубина:

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

    Монокулярный нейронный вывод, объединенный со стереорежимом глубины

    Для устройств DepthAI, которые используют модульные камеры, минимальная базовая линия составляет 2,5 см (см. Изображение ниже), что означает минимальную воспринимаемую глубину 0,229 метра для полного разрешения 1280×800 и 0,196 метра для разрешения 640×400 (ограничено минимальным фокусным расстоянием камеры в градациях серого, как в режиме стереонейронного вывода).

    Минимальная базовая линия задается просто тем, насколько близко две платы могут быть разнесены до того, как они физически столкнутся:

    Для любой стереофонической базовой линии менее 29 см минимальная глубина определяется гиперфокальным расстоянием (расстояние, выше которого объекты находятся в фокусе), равным 19,6 см.

    Для стереобазовых линий шириной более 29 см минимальная глубина ограничена горизонтальным полем зрения (HFOV):

     min_distance = tan ((90-HFOV / 2) * pi / 2) * base_line_dist / 2
     

    Расширенный режим глубины диспаратности

    Расширенная диспаратность Режим обеспечивает более близкое минимальное расстояние для данной базовой линии.Это увеличивает максимальное расстояние поиска с 96 до 191. Таким образом, это сокращает минимальное воспринимаемое расстояние вдвое (учитывая, что минимальное расстояние теперь составляет focal_length * base_line_dist / 190 вместо focal_length * base_line_dist / 95 ).

    См. Здесь примеры использования режима расширенного несоответствия.

    И еще немного о том, как поддерживается этот режим:

    Расширенное несоответствие: позволяет обнаруживать объекты на более близком расстоянии без ущерба для значений большого расстояния (целочисленное несоответствие) путем выполнения следующего потока.

    1. Вычисляет несоответствие изображений исходного размера (например, 1280×720)

    2. Вычисляет несоответствие на 2-кратно уменьшенных изображениях (например, 640×360)

    3. Объединяет два различия уровней в Shave, эффективно перекрывая общий диапазон диспаратности в 191 пиксель (по отношению к исходному разрешению).

    Режим проверки глубины влево-вправо

    Left-Right Check, или LR-Check, используется для удаления неправильно рассчитанных пикселей несоответствия из-за окклюзии на границах объекта (виды левой и правой камеры немного отличаются).

    1. Вычисляет несоответствие путем сопоставления в направлении R-> L

    2. Вычисляет несоответствие путем сопоставления в направлении L-> R

    3. Объединяет результаты из 1 и 2, выполняется в Shave: каждый пиксель d = disparity_LR (x, y) сравнивается с disparity_RL (x-d, y). Если разница превышает пороговое значение, пиксель в (x, y) в окончательной карте несоответствия становится недействительным.

    Чтобы запустить LR-Check на DepthAI / OAK, используйте приведенный здесь пример.

    Какие максимальные глубины видны с помощью DepthAI?

    Максимальное восприятие глубины для обнаружения трехмерных объектов практически ограничено тем, насколько далеко детектор объектов (или другая нейронная сеть) может обнаружить то, что ищет.Мы обнаружили, что детекторы людей OpenVINO работают на расстоянии около 22 метров или около того. Но обычно это расстояние будет ограничиваться тем, насколько далеко детектор объектов может обнаруживать объекты, а затем, после этого, минимальной разницей углов между объектами.

    Итак, если детектор объекта не является пределом, максимальное расстояние будет ограничено физикой базовой линии и количеством пикселей. Таким образом, если разница между одной камерой и другой составляет менее 0,056 градуса (что соответствует разнице в 1 пиксель), это означает, что точка, в которой может быть достигнута полнопиксельная диспаратность, уже прошла.Формула, используемая для расчета этого расстояния, является приблизительной, но выглядит следующим образом:

     Dm = (базовый уровень / 2) * tan_d (90 - HFOV / HPixels)
     

    Для DepthAI HFOV = 71,9 (+/- 0,5) градуса и HPixels = 1280.

    Таким образом, используя эту формулу для существующих моделей, теоретическое максимальное расстояние составляет:

    • OAK-D (исходная линия 7,5 см): 38,4 метра

    • OAK-D-CM4 (базовая линия 9 см): 46 метров

    • OAK-D-IOT-40 (базовая линия 4 см): 20.4 метра

    • OAK-FFC-3P (Пользовательская базовая линия): Dm = (базовая линия / 2) * tan_d (90 — 71,9 / 1280)

    Но эти теоретические максимумы недостижимы в реальном мире, так как согласование диспаратности не является идеальным, как и оптика, датчик изображения и т. Д., Поэтому фактическая максимальная глубина будет зависеть от приложения в зависимости от освещения, нейронной модели. , размеры элементов, базовые линии и т. д.

    Мы также поддерживаем режим глубины субпикселей, который увеличивает этот теоретический максимум, но, опять же, это, скорее всего, не фактический предел максимального расстояния обнаружения объекта, а сама нейронная сеть.И это использование субпикселей, вероятно, будет иметь преимущества для конкретных приложений.

    Для получения дополнительной информации см. Документацию StereoDepth.

    Режим глубины субпиксельного неравенства

    Subpixel повышает точность и особенно полезен для измерений на больших расстояниях. Это также помогает лучше оценить нормали поверхности (сравнение нормального несоответствия с субпиксельным несоответствием находится здесь).

    Помимо вывода целочисленного несоответствия, стереодвигатель запрограммирован на сбрасывание в память стоимостного объема, который составляет 96 байт (несоответствий) на пиксель, затем выполняется программная интерполяция на Shave, в результате чего окончательное несоответствие составляет 5 дробных битов, что приводит к значительному более детализированные шаги глубины (32 дополнительных шага между шагами глубины целого пикселя), а также теоретически, просмотр глубины на большем расстоянии — поскольку максимальная глубина больше не ограничивается функцией, являющейся шагом целого числа пикселей, а скорее 1 / 32 пикселя.

    Примеры разницы в шагах глубины от стандартного несоответствия до субпиксельного несоответствия показаны ниже:

    Стандартное отклонение (96 шагов по глубине):

    Subpixel Disparity (3072 шага глубины):

    Чтобы запустить Subpixel на DepthAI / OAK, используйте приведенный здесь пример.

    Как DepthAI вычисляет глубину диспаритета?

    DepthAI использует комбинацию аппаратных блоков (аппаратный блок полуглобального согласования диспаратности (SGBM)), а также ускоренный код векторной обработки в SHAVES Myriad X для получения глубины диспаратности.Этот блок доступен через систему Gen2 Pipeline Builder с примером здесь.

    Аппаратный блок SGBM может обрабатывать до 1280×800 пикселей, это его аппаратный предел. Использование датчиков с более высоким разрешением технически возможно за счет уменьшения масштаба. Так, например, можно использовать 12-мегапиксельную цветную камеру с камерой с полутоновым разрешением 1280×800 (и это было прототипировано некоторыми пользователями с помощью конструктора конвейеров Gen2). Или 2x 12-мегапиксельные датчики изображения могут использоваться для измерения глубины (теоретически). Но в обоих случаях данные изображения должны быть либо уменьшены до размера 1280×800, либо преобразованы каким-либо другим способом (например,грамм. выборочно обрезанный / оконный).

    Каков формат данных глубины в потоке глубины?

    Выходной массив находится в uint16, поэтому от 0 до 65 535 с прямым отображением в миллиметры (мм).

    Таким образом, значение 3141 в массиве составляет 3141 мм или 3,141 метра. Таким образом, весь этот массив представляет собой z-измерение каждого пикселя вне плоскости камеры, где центр вселенной — это камера с пометкой RIGHT .

    И конкретное значение 65 535 является специальным значением, означающим недопустимый результат диспаратности / глубины.

    Какие режимы глубины рассогласования поддерживаются?

    1. По умолчанию (поиск несоответствия 96 пикселей)

    2. Extended Disparity (поиск несоответствия 191 пиксель), здесь

    3. Subpixel Disparity (32 шага субпикселей), здесь

    4. LR-Check Disparity, здесь

    Как рассчитать глубину по несоответствию?

    DepthAI конвертирует в глубину как для потока depth , так и для детекторов объектов, таких как MobileNet-SSD, YOLO и т. Д.

    Но мы также позволяем извлекать фактические результаты диспаратности, так что если вы хотите использовать карту диспаратности напрямую, вы можете это сделать.

    Для вычисления карты глубины по карте диспаратности это (приблизительно) глубина = focal_length_in_pixels * baseline / disparity_in_pixels . Где базовая линия составляет 7,5 см для OAK-D, 4,0 см для OAK-D-IoT-40 и 9,0 см для OAK-D-CM4, а focal_length_in_pixels составляет 882,5 ( focal_length = 1280 * 0,5 / tan (71,9 * 0.5 * PI / 180) = 882,5 ) для всех текущих моделей DepthAI.

    Так, например, для OAK-D-IoT-40 (стереобазовая линия 4,0 см) измерение несоответствия 60 соответствует глубине 58,8 см (глубина = 882,5 * 40 мм / 60 = 588 мм (0,588 м) ).

    Для получения дополнительной информации см. Документацию StereoDepth.

    Как отображать несколько потоков?

    Чтобы указать, какие потоки вы хотите отображать, используйте параметр -s . Например, для необработанной карты диспаратности (диспаратность , ) и результатов глубины (, глубина ) используйте следующую команду:

     python3 depthai_demo.py -s глубина несоответствия
     
    Доступные потоки:
    • nn_input — проходные кадры нейронной сети, по которым был сделан вывод (300×300 в случае MobileNet)

    • цвет — Цветная камера 4K, самая большая камера на плате с объективом

    • слева — Левая камера в градациях серого (обозначена на плате L или СЛЕВА )

    • справа — Правая камера в градациях серого (на плате обозначена R или RIGHT )

    • rectified_left — выпрямленные рамки левой камеры

    • rectified_right — Исправленные рамки правой камеры

    • глубина — Глубина в uint16

    • depth_raw — Необработанные кадры, которые используются для вычисления глубины

    • несоответствие — сырое несоответствие

    • disparity_color — Disparity, окрашенное в цвет на хосте ( JET цветная визуализация глубины)

    Можно ли получить доступ к потоку необработанной стереопары на хосте?

    Да, чтобы получить поток необработанной стереопары на хост, используйте следующую команду:

     python3 depthai_demo.py -s слева направо
     

    Будет отображена полная стереосинхронизированная пара RAW (без сжатия) 1280×720, как показано ниже:

    Как ограничить частоту кадров в потоке?

    Таким образом, простой способ выбрать потоки — просто использовать параметр -s . Но в некоторых случаях (скажем, когда у вас медленный хост или только USB2-соединение и , вы хотите отображать много потоков) может потребоваться ограничить частоту кадров потоков, чтобы не перегружать хост / USB2 слишком большим количеством данных. .

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

    Итак, для ограничения глубины до 5 кадров в секунду используйте следующую команду:

     python3 depthai_demo.py -s глубина, 5
     

    И это одинаково работает для нескольких потоков:

     python3 depthai_demo.py -s слева, 2 справа, 2 глубина предварительного просмотра, 5
     

    Стоит отметить, что ограничение частоты кадров лучше всего работает при более низкой частоте кадров.Поэтому, если вы говорите, что пытаетесь достичь 25 кадров в секунду, лучше просто не указывать частоту кадров и вместо этого позволить системе перейти на полные 30 кадров в секунду.

    Без ограничения по умолчанию будет 30 кадров в секунду.

    Как синхронизировать потоки и / или метаданные (результаты нейронного вывода)

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

    При выполнении более тяжелого стереонейронного вывода, особенно при высокой нагрузке на хост, эта система может выйти из строя, и есть два варианта, которые могут поддерживать синхронизацию:

    1. Уменьшите частоту кадров камер, выполняющих логический вывод, до скорости самого нейронного вывода или чуть ниже ее.

    2. Или извлеките отметки времени или порядковые номера из результатов (кадры или метаданные) и сопоставьте их на хосте.

    Уменьшение частоты кадров камеры

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

    Простой / легкий способ восстановить синхронизацию — уменьшить частоту кадров, чтобы она соответствовала или была чуть ниже частоты кадров нейронного вывода. Это можно сделать из командной строки с помощью команд -rgbf и -monof .

    Так, например, чтобы запустить модель по умолчанию с обеими камерами RGB и полутоновыми камерами, установленными на 24 кадра в секунду, используйте следующую команду:

     ./depthai_demo.py -rgbf 24 -monof 24 -sync
     

    Синхронизация на хосте

    Два метода FrameMetadata.getTimestamp () и FrameMetadata.getSequenceNum () могут использоваться для гарантии синхронизации на стороне хоста.

    Пакеты NNPackets и DataPackets отправляются отдельно со стороны устройства и попадают в отдельные очереди для каждого потока на стороне хоста. Функция CNNPipeline.get_available_nnet_and_data_packets () возвращает то, что доступно в очередях в момент вызова функции (возможно, только один пакет NN не прочитан или только один пакет кадра).

    С опцией CLI -sync от depthai.py мы делаем все возможное на стороне устройства (то есть на Myriad X) для синхронизации NN и предварительного просмотра и отправки их по порядку: сначала отправляется пакет NN (и в depthai.py он сохраняется как последний), затем отправляется кадр предварительного просмотра (и при получении в depthai_demo.py на него накладываются последние сохраненные данные NN).

    В большинстве случаев это работает хорошо, но существует риск (особенно при высокой загрузке системы на стороне хоста), что пакеты все еще могут быть рассинхронизированы, поскольку очереди обрабатываются разными потоками (в библиотеке C ++).

    Итак, в этом случае getMetadata (). GetTimestamp () возвращает время устройства (в секундах, как с плавающей точкой) и также используется в скрипте стереокалибровки для синхронизации левого и правого кадров.

    Отметка времени соответствует моменту захвата кадров камерой и пересылается по конвейеру. А метод getMetadata (). GetSequenceNum () возвращает увеличивающееся число для каждого кадра камеры. Тот же номер связан с пакетом NN, поэтому это может быть более простой вариант для использования, чем сравнение временных меток.Порядковые номера пакета NN и пакета данных должны совпадать.

    Кроме того, левая и правая камеры будут иметь один и тот же порядковый номер (временные метки не будут в точности одинаковыми, а разделены на несколько микросекунд — это потому, что временные метки назначаются отдельно для каждой из разных обработчиков прерываний. Но камеры запускаются в в то же время с использованием широковещательной записи I2C, а также с использованием того же источника MCLK, поэтому не должно дрейфовать).

    В этом случае нам также необходимо проверить источник камеры для пакетов NN и Data.В настоящее время depthai.py использует для этой цели getMetadata (). GetCameraName () , который возвращает строку: rgb , слева или справа .

    Также можно использовать getMetadata (). GetInstanceNum () , который возвращает число: 0, 1 или 2 соответственно.

    Как мне записывать (или кодировать) видео с DepthAI?

    DepthAI поддерживает кодирование h.264 и h.265 (HEVC) и JPEG напрямую — без поддержки хоста.Сценарий depthai_demo.py показывает и пример того, как получить доступ к этой функции.

    Обратите внимание, что аппаратный предел для кодировщика составляет: 3840×2160 пикселей при 30 кадрах в секунду или 248 миллионов пикселей в секунду . Разрешение и частоту кадров можно разделить на несколько потоков, но сумма всех пикселей в секунду должна быть ниже 248 миллионов.

    См. Наши примеры кодирования для Gen2 (текущая основная линия), в котором используется узел VideoEncoder:

    • Кодирование RGB и моно параллельно с MobileNetSSDv2, здесь.

    • Кодирование RGB и моно параллельно с MobileNetSSDv2 и глубиной стерео здесь.

    • RGB, а также кодирование левой / правой камеры с максимальным разрешением и частотой кадров здесь.

    В качестве альтернативы, чтобы использовать эту функциональность из командной строки depthai_demo.py (Gen1 API), используйте аргумент командной строки -v (или –video ), как показано ниже:

     python3 depthai_demo.py -v [путь / к / video.h364]
     

    Чтобы затем воспроизвести видео в формате mp4 / mkv, используйте следующую команду мультиплексирования:

     ffmpeg -frame rate 30 -i [путь / к / видео.h364] -c copy [outputfile.mp4 / mkv]
     

    По умолчанию ключевые кадры создаются каждую 1 секунду, что решает предыдущие проблемы с просмотром видео, а также дает возможность начать запись в любое время (в худшем случае 1 секунда видео теряется, если ключевой кадр просто пропущен)

    При запуске depthai_demo.py можно записать текущий кадр в формате JPEG, нажав на клавиатуре c .

    Ниже приведен пример видео, закодированного на DepthAI OAK-D-CM3 (Raspberry Pi Compute Module Edition).Все устройства DepthAI и megaAI имеют одинаковую цветную камеру 4K, поэтому их производительность будет эквивалентна показанному ниже видео.

    Параметры кодирования видео Gen1

    Дополнительные параметры можно настроить в системе кодирования видео, добавив раздел video_config в файл конфигурации JSON для построителя конвейера DepthAI, здесь, пример которого находится здесь.

     config = {
      ...
      'video_config':
      {
          'rateCtrlMode': 'cbr', # Опции: 'cbr' / 'vbr' (постоянный битрейт или переменный битрейт)
          'profile': 'h365_main', # Опции: 'h364_baseline' / 'h364_main' / 'h364_high' / 'h365_main'
          'bitrate': 8000000, # При использовании CBR
          'maxBitrate': 8000000, # При использовании CBR
          'keyframeFrequency': 30, # В количестве кадров
          'numBFrames': 0,
          'качество': 80 # (0 - 100%) При использовании VBR
      }
      ...
    }
     

    Все указанные выше параметры представляют собой текущие параметры, доступные для кодирования видео, и не все должны быть установлены.

    Если член video_config — это НЕ присутствует в словаре конфигурации , то используется значение по умолчанию: h364_HIGH, постоянная скорость передачи данных 8500 Кбит / с, ключевой кадр каждые 30 кадров (один раз в секунду), количество кадров B: 0 .

    Каковы возможности видеокодера на DepthAI?

    Максимальное общее кодирование для h.264 и h.265 имеет 3 ограничения: — Максимальная ширина кадра 4096 пикселей. — Максимальное количество пикселей в секунду 248 мегапикселей в секунду. — Максимум 3 параллельных потока кодирования

    Кодировщик JPEG поддерживает разрешение 16384×8192 при скорости 500 мегапикселей в секунду.

    Обратите внимание, что ресурсы обработки кодера совместно используются H.26x и JPEG, и ширина и высота должны быть кратны 8 (что обычно бывает со стандартными разрешениями).

    Что такое задержка потока?

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

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

    Оценка задержки потока в наихудшем случае

    измерено

    запрошено

    Средняя задержка, мс

    слева

    слева

    100

    слева

    слева, справа

    100

    слева

    слева, справа, глубина

    100

    слева

    слева, справа, глубина, мета-вывод , предварительный просмотр

    100

    предварительный просмотр

    предварительный просмотр

    65

    предварительный просмотр

    мета-выход , предварительный просмотр

    100

    предварительный просмотр

    слева, справа, глубина, мета-вывод , предварительный просмотр

    100

    мета-выход

    мета-выход

    300

    мета-выход

    мета-выход , предварительный просмотр

    300

    мета-выход

    слева, справа, глубина, мета-вывод , предварительный просмотр

    300

    Как сделать почтовый ящик (миниатюра) на цветной камере?

    Чтобы получить черные полосы сверху и снизу видео, необходимо настроить компонент точек y (для преобразования 16: 9 в 1: 1).

    Узел ImageMAnip может использоваться для такого преобразования, например, созданный как:

     манипулятор = pipeline.createImageManip ()
    манип.setMaxOutputFrameSize (1280 * 720 * 3)
     

    Возможны два варианта:

    1. Использование setResizeThumbnail (подробности)

     манип.initialConfig.setResizeThumbnail (1280, 1280)
     
    1. Использование setWarpTransformFourPoints (подробности)

     прил. = (16-9) / 9/2
    point2f_list = [depthai.Point2f (0, -adj), depthai.Point2f (1, -adj), depthai.Point2f (1,1 + прил.), Depthai.Point2f (0,1 + прил.)]
    
    normalized = True
    manage.initialConfig.setWarpTransformFourPoints (point2f_list, нормализованный)
    manage.setResize (1280, 1280) # Необязательно, для окончательного изменения размера кадра
     

    Если установлено большое разрешение, это может привести к увеличению задержки. С точки зрения производительности вместо снижения FPS рекомендуется настроить очередь на устройстве как неблокирующую с одним слотом:

     манип.inputImage.setQueueSize (1)
    манип.inputImage.setBlocking (Ложь)
     

    На данный момент он будет работать только с более низким разрешением (например, 1280×720), поэтому мы предлагаем изменить размер перед запуском конвейера:

     манипулятор = pipeline.createImageManip ()
    манип.setMaxOutputFrameSize (1280 * 720 * 3)
    манип.initialConfig.setResizeThumbnail (1280, 1280)
     

    Примечание! Входной сигнал RGB с чередованием с ImageManip пока не поддерживается, поэтому установите:

     colorCam.setInterleaved (False)
     

    Можно ли использовать камеру RGB и / или стереопару в качестве обычной камеры UVC?

    Да, но в настоящее время это не реализовано в нашем API.Это в нашей дорожной карте, здесь

    , почему нашего API DepthAI обеспечивает большую гибкость в форматах (некодированные, закодированные, метаданные, обработка, частота кадров и т. Д.) И уже работает в любой операционной системе (см. Здесь). Итак, мы планируем поддерживать UVC как часть нашего конструктора конвейеров Gen2, чтобы вы могли построить сложный пространственный конвейер AI / CV, а затем заставить конечные точки UVC выводить результаты, чтобы DepthAI могло работать в любой системе без драйверов. . Для наших встраиваемых вариантов это можно затем передать на устройство, чтобы весь конвейер автоматически запускался при загрузке и отображал на компьютере устройство UVC (веб-камеру).

    Теоретически мы можем реализовать поддержку 3 конечных точек UVC (таким образом, отображаемых как 3 камеры UVC) для каждой из 3 камер.

    Мы создали 2 прототипа с внутренним подтверждением концепции (но в оттенках серого), но еще не пробовали 3, но, вероятно, это сработает. Мы могли бы поддерживать поток UVC для каждой камеры, если это интересно.

    Итак, если вам нужна эта функция, пожалуйста, подпишитесь на запрос функции Github здесь.

    А пока, если вы хотите использовать depthai в качестве стандартной камеры UVC, можно использовать устройство обратной связи V4L2 (и некоторые пользователи сообщили нам, что они это сделали), но связав вывод конфигурации depthai API с этим устройством обратной связи на хосте.

    Ознакомьтесь с нашим кратким руководством, как это сделать.

    Как принудительно установить режим USB2?

    USB2 Связь может быть желательной, если вы хотите использовать удлиненные USB-кабели и вам не нужны скорости USB3.

    Вы можете принудительно установить режим USB2, установив usb2Mode на True при создании устройства (примечание — это работает для gen2):

     dai.Device (конвейер, usb2Mode = True)
     

    Другой способ — использовать параметр командной строки -usbs usb2 (или --usbSpeed ​​usb2 ), как показано ниже:

     python3 depthai_demo.py -usbs usb2
     

    Обратите внимание, что если вы хотите использовать DepthAI на расстояниях, которые даже больше, чем может обрабатывать USB2, у нас есть варианты DepthAI PoE, см. Здесь, которые позволяют DepthAI использовать кабель длиной до 328,1 футов (100 метров) как для передачи данных, так и для питания — со скоростью 1 гигабит в секунду (1 Гбит / с).

    Что такое «Режим NCS2»?

    Все устройства DepthAI поддерживают так называемый «режим NCS2». Это позволяет любому устройству DepthAI выдавать себя за NCS2.

    На самом деле, если вы запитываете свое устройство, подключите его к компьютеру и следуйте инструкциям / примерам / и т. Д.NCS2 с OpenVINO, устройство DepthAI будет вести себя идентично.

    У нас также есть пример кода. Он запускает модель карикатуры лица (формат IR) на устройстве с помощью OpenVINOs Inference Engine (IE).

    Это позволяет вам опробовать примеры из OpenVINO напрямую, как если бы наше оборудование было NCS2. Это может быть полезно, когда экспериментирование с моделями, которые предназначены для работы с объектами / предметами, которые могут быть недоступны локально / физически. Это также позволяет запускать логический вывод программными способами для обеспечения качества, улучшения характеристик модели и т. Д., поскольку в этом режиме изображения отправляются с хоста, а не с бортовой камеры.

    Другой распространенный вариант использования для запуска вашей модели в первую очередь с IE (механизм вывода) — это проверка того, преобразована ли ваша модель в формат OpenVINOs IR. (например, из TF / ONNX) прошло успешно. После того, как вы успешно запустите его с IE, вы можете продолжить компиляция модели IR в файл .blob , который требуется для библиотеки DepthAI.

    Какая информация хранится на платах DepthAI

    Сторонники первоначального предложения толпы получили доски, на которых буквально ничего не хранилось.Вся информация была загружена от хоста к плате. Это включает в себя OAK-D-CM3, калибровка которого сохранена на прилагаемой карте microSD.

    Таким образом, каждая модель оборудования, имеющая стереокамеры (например, OAK-D-CM4, ДУБ-ФФЦ-3П-ОГ, ДУБ-Д, и BW1094) имеет возможность сохранять данные калибровки и поле обзора, базовая линия стерео (расстояние L-R ) и относительное расположение цветной камеры относительно стереокамер (расстояние L-RGB ) а также ориентацию камеры ( L / R поменял местами ).Чтобы получить эту информацию, просто запустите python3 depthai_demo.py и найдите Данные EEPROM: .

    Ниже приведен пример информации, взятой из OAK-D:

     Данные EEPROM: действительны (v2)
      Название платы: BW1098OBC
      Версия платы: R0M0E0
      HFOV L / R: 71,9 град.
      HFOV RGB: 68,7938 град.
      Расстояние L-R: 7,5 см
      Расстояние L-RGB: 3,75 см
      L / R поменяны местами: да
      Область обрезки L / R: вверху
      Калибровочная омография:
        1,002324, -0,004016, -0,552212,
        0.001249, 0,993829, -1,710247,
        0,000008, -0,000010, 1,000000,
     

    Текущие (апрель 2020 г. и позже) платы DepthAI со встроенными стереокамерами (ДУБ-Д-СМ4, ДУБ-Д, и OAK-D-IoT-40) калибровка корабля и параметры платы, предварительно запрограммированные во встроенной EEPROM DepthAI.

    Сравнение двойной гомографии и калибровки с одной гомографией

    В результате отличных отзывов / идей, полученных в ходе конкурса OpenCV Spatial AI Competition, мы обнаружили и реализовали множество полезных функций (краткое содержание здесь).

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

    В результате в сентябре 2020 года мы переключили нашу систему калибровки на использование двойной гомографии вместо одинарной. Таким образом, любые устройства, произведенные после сентября 2020 года, имеют двойную омографию. Любые устройства с одинарной гомографией можно откалибровать (см. Здесь) для использования этой обновленной калибровки с двойной гомографией.

    Какое поле зрения у OAK?

    Устройства

    OAK используют тот же модуль камеры 12MP RGB на базе IMX378.

    Как мне получить разные поля зрения или линзы для DepthAI и megaAI?

    ArduCam построила множество модулей камеры специально для устройств Luxonis, включая различные варианты крепления M12 (чтобы пользователь мог изменять оптику, углы обзора и т. Д.).

    • M12-Mount IMX477 здесь

    • Крепление M12 Global Shutter Grayscale OV9282 здесь

    • M12-Mount Global Shutter Color OV9782 здесь

    • Компактный модуль камеры (CCM) Fish-Eye OV9282 (для лучшего SLAM) здесь

    • Механический, оптический и электрический эквивалент модуля OV9282 с видимой и ИК-подсветкой здесь

    • Цветная камера с глобальным затвором (OV9782) с теми же характеристиками, что и шкала серого OV9282, здесь находится в стадии разработки.

    • C / CS-Mount IMX283 (сенсор с диагональю 1 дюйм, который огромен) здесь в стадии разработки.

    С ними будет множество вариантов для угла обзора, фокусного расстояния, фильтрации (ИК, без ИК, NDVI и т. Д.) И форматов датчиков изображения. Для получения дополнительной информации нажмите здесь.

    Какие самые высокие разрешения и запись FPS возможны с DepthAI и megaAI?

    MegaAI можно использовать для потоковой передачи необработанного / несжатого видео через USB3. Gen1 USB3 поддерживает 5 Гбит / с, Gen2 USB3 — 10 Гбит / с.DepthAI и MegaAI поддерживают как Gen1, так и Gen2 USB3, но не все хосты USB3 поддерживают Gen2, поэтому проверьте спецификации своих хостов, чтобы узнать, возможны ли скорости Gen2.

    Разрешение

    USB3 Gen1 (5 Гбит / с)

    USB3 Gen2 (10 Гбит / с)

    12MP (4056×3040)

    21,09 кадра в секунду (390 МБ / с)

    41.2 кадра в секунду (762 МБ / с)

    4K (3840×2160)

    30,01 кадра в секунду (373 МБ / с)

    60,0 кадра в секунду (746 МБ / с)

    DepthAI и megaAI могут кодировать h.264 и h.265 (HEVC) на устройстве. Максимальное разрешение / скорость составляет 4K при 30 кадрах в секунду. С настройками кодирования по умолчанию в DepthAI / megaAI это снижает пропускную способность с 373 МБ / с (необработанные / некодированные 4K / 30) до 3,125 МБ / с (h.265 / HEVC со скоростью 25 Мбит / с). Ниже приведен пример видео, закодированного на DepthAI OAK-D-CM3 (Raspberry Pi Compute Module Edition):

    Стоит отметить, что все продукты DepthAI и megaAI имеют одинаковые характеристики цветных камер и возможности кодирования.Таким образом, кадры, снятые с помощью устройства DepthAI с помощью цветной камеры, будут идентичны кадрам, снятым с помощью устройства MegaAI.

    Кодированный:

    Какова теоретическая максимальная скорость передачи для USB3 Gen1 и Gen2?

    Максимальная скорость передачи данных (скорость PHY) для Gen1 составляет 5 Гбит / с, а для Gen2 — 10 Гбит / с. Но это линейная скорость — это означает, насколько быстро биты могут изменяться от 0 до 1 и наоборот. Итак, над этим идет USB-кодирование данных, а над ним — используемый протокол.

    Этот FAQ отвечает на максимальную скорость передачи данных в кодировке USB, отправляемых через USB3. Имейте в виду, что это предшествует тому протоколу, который используется через USB3 (например, USB Video Class (UVC) или XLink). Фактическое использование USB3 всегда будет включать какой-либо протокол, что означает, что фактическая пропускная способность будет ниже, чем указано ниже. И задействованные процессоры могут быть не в состоянии обрабатывать эту пропускную способность и / или обработку протокола, используемого выше USB3, на этих скоростях.

    То есть это максимально возможная передача данных через USB3:

    Интересно, что в Gen2 USB3 не только скорость PHY в 2 раза выше, но и накладные расходы на кодирование значительно ниже, как в USB3 Gen1 — каждые 8 ​​бит получают 2 бита кодирования сверху, тогда как в Gen2 это может быть увеличено. до 4 бит накладных расходов на каждые 128 бит данных .Другими словами, в Gen1 20% того, что передается по линии, — это накладные расходы USB. А в Gen2 эти накладные расходы на кодирование USB можно уменьшить с 20% до 3,03%.

    Как лучше всего получить FullHD в хорошем качестве?

    На данный момент решением является настройка сенсора на 4K, но дальнейшее масштабирование в конвейере:
    • с существующим FW, предварительный просмотр ColorCamera установлен как colorCam.setPreviewSize (1920, 1080) — будет вывод RGB / BGR.Но вывод видео по-прежнему имеет разрешение 4K (если не обрезано).

    • , используя ветку stereo_fixes отсюда, можно установить масштабирование ISP как colorCam.setIspScale (1, 2) , сохраняя датчик на 4K, и тогда будут действовать оба превью и видео (по разрешению), как если бы датчик был настроен на 1080p.

    Как запустить OAK-D как видеоустройство

    Устройства

    Luxonis не входят в стандартные камеры.Чтобы запустить их как видеоустройство, рассмотрите возможность запуска их как UVC (USB Video Class). Чтобы запустить UVC напрямую (по-прежнему требуется библиотека depthai, но только для инициализации), внутри клона репозитория dephtai-python запустите:

     git fetch - все
    git checkout origin / gen2_uvc
    примеры python3 / install_requirements.py
    python3 примеры / 19_uvc_video.py
     

    Не закрывайте сценарий. Необходимо периодически кормить сторожевой таймер устройства (сбросил бы устройство при закрытии). А затем откройте программу просмотра UVC. Он должен работать в Линуксе все хорошо.В macOS требуется обходной путь (наличие приложения, которое ищет устройства и быстро открывает поток после запуска конвейера depthai), в Windows пока не работает.

    Вы также можете попробовать использовать Flask Opencv Streamer, чтобы сгенерировать локальный поток, забрать его с помощью FFmpeg и перенаправить на устройство обратной связи v4l.

     с дай.устройством (трубопроводом) в качестве устройства:
    
        video = device.getOutputQueue (name = "video", maxSize = 1, blocking = False)
    
        в то время как True:
            video_capture = видео.получать()
            frame = video_capture.getCvFrame ()
            streamer.update_frame (кадр)
    
            если не streamer.is_streaming:
                streamer.start_streaming ()
    
            cv2.waitKey (30)
     
     ffmpeg -i "http: //192.168.***.***: 3030 / video_feed" -vf format = yuv420p -f v4l2 / dev / video0
     

    Мы работаем над добавлением дескриптора UVC по запросу в конфигурацию предварительной загрузки устройства в качестве функции.

    Сколько вычислительных ресурсов доступно? Сколько доступно нейронных вычислений?

    OAK построены на базе Intel Movidius Myriad X.Более подробная информация / справочная информация по этой части здесь. а также здесь.

    Краткий обзор возможностей оборудования / вычислительных возможностей DepthAI / megaAI:
    • Общие вычисления: 4 триллиона операций в секунду (4 TOPS)

    • Neural Compute Engine (всего 2x): 1,4 TOPS (только нейронные вычисления)

    • 16x SHAVES: 1 TOPS для дополнительных нейронных вычислений или других функций CV (например, через OpenCL)

    • 20+ выделенных блоков компьютерного зрения с аппаратным ускорением, включая глубину диспаратности, сопоставление / отслеживание функций, оптический поток, медианную фильтрацию, фильтрацию Харриса, WARP / de-warp, h.264 / h.265 / JPEG / MJPEG, оценка движения и т. Д.

    • Общая обработка 500+ миллионов пикселей в секунду (см. Максимальное разрешение и частоту кадров по USB здесь)

    • Пропускная способность памяти 450 ГБ / сек

    • 512 МБ LPDDR4 (свяжитесь с нами для получения версии LPDDR на 1 ГБ, если это интересно)

    Как распределяются ресурсы? Как я могу увидеть распределение?

    • Ресурсы распределяются автоматически на основе включенных узлов в конвейере и их свойств перед запуском конвейера.Если нет доступных ресурсов, будет выдана ошибка.

    • После распределения ресурсов SHAVE / CMX между узлами (кроме NN) NeuralNetwork получает остальные свободные ресурсы.

    • Есть 2 основных процессора, LeonOS и LeonRT, на которых запущена ОС Rtems, которые планируют задачи (USB, SHAVES, ISP и т. Д.).

    • Всего имеется 16 SHAVEs и 20 CMX срезов, каждый срез 128 КБ , всего 2.5 МБ , вместе с 512 МБ DDR .

    • Память CMX сверхбыстрая SRAM по сравнению с DRAM (DDR) , используемая аппаратными фильтрами CV, SHAVE для максимальной производительности и минимальной задержки.

    • SHAVE — это процессоры-ускорители для алгоритмов CV, NN.

    Выделенные ресурсы могут быть напечатаны с помощью переменной среды DEPTHAI_LEVEL , установленной на INFO . Например: DEPTHAI_LEVEL = info python3 26_1_spatial_mobilenet.py

    • [system] [info] Размер внутреннего буфера ImageManip ‘80640 ’B, размер бритвенного буфера‘ 19456 ’B

    • [system] [info] SpatialLocationCalculator увеличивает размер буфера ‘11264’B

    • [system] [info] Размер внутреннего буфера SIPP (Signal Image Processing Pipeline) ‘143360’B

    • [system] [info] Распределенные ресурсы NeuralNetwork: shaves: [0–12] cmx срезы: [0–12]

    • [система] [информация] Ресурсы, выделенные ColorCamera: не бреется; cmx срезы: [13-15]

    • [system] [info] MonoCamera выделенные ресурсы: не бреет; cmx срезы: [13-15]

    • [system] [info] Ресурсы, выделенные StereoDepth: shaves: [13-13] cmx срезы: [13-15]

    • [system] [info] ImageManip выделенные ресурсы: shaves: [15-15] нет cmx-срезов.

    • [system] [info] SpatialCalculator выделил ресурсы: shaves: [14-14] нет срезов cmx.

    • Узлу ImageManip требуется 80640 + 19456 байт памяти CMX и 15 бритья.

    • Узел SpatialLocationCalculator (используется SpatialDetectionNetwork , требует 11264 байта памяти CMX и 15).

    • SIPP (конвейер обработки изображения сигнала) требует 143360 байт памяти CMX, которая используется стереоузлом, поставщиком услуг Интернета.

    • NeuralNetwork принимает бритвенные [0–12] и cmx-срезы [0–12].

    • ColorCamera принимает срезы cmx [13-15], всего 3 с разрешением 1080p. При 4k / 12MP требуется 6 срезов.

    • MonoCamera принимает срезы размером cmx [13-15].

    • StereoDepth берет срезы размером cmx [13-15] и сбривает 13.

    Каждому узлу требуются собственные пулы в памяти, где хранятся данные.В дополнение к распределению SHAVE и CMX, использование ЦП , DDR, CMX, распределение памяти кучи также доступны во время выполнения.

    • [система] [информация] Использование памяти — DDR: 74,12 / 414,56 МБ, CMX: 2,37 / 2,50 МБ, LeonOS Heap: 32,72 / 46,36 МБ, LeonRT Heap: 5,20 / 27,45 МБ

    • [система] [информация] Температура — Средняя: 58,40 ° C, CSS: 58,94 ° C, MSS 58,30 ° C, UPA: 59,36 ° C, DSS: 57,01 ° C

    • [система] [информация] Использование ЦП — LeonOS 55.29%, LeonRT: 34.93%

    Какие режимы автофокуса поддерживаются? Можно ли управлять автофокусом с хоста?

    OAK-D, OAK-1, OAK-D-IoT-40 и т. Д. Все поддерживают непрерывную автофокусировку видео («2» ниже, где система постоянно работает автономно поиск наилучшего фокуса), а также автоматический режим , который ожидает фокусировки до тех пор, пока не будет направлен хостом, в дополнение к фокусировке на основе области интереса, где фокус автоматически фокусируется вокруг области, предоставленной DepthAI (например,грамм. из ограничивающего прямоугольника нейронной сети или какой-либо другой настройки в реальном времени или априори).

    • См. Здесь пример переключения между автофокусировкой и ручной фокусировкой, а также команды определенных положений ручной фокусировки.

    • См. Здесь для управления автофокусировкой, интересующей области (чтобы настроить автофокусировку на учет только определенной области) и срабатывания триггера.

    • См. Здесь API для ручной настройки уровня фокуса.

    Какое гиперфокальное расстояние у цветной камеры с автофокусом?

    Гиперфокальное расстояние важно, так как это расстояние, за пределами которого все находится в хорошем фокусе.Некоторые в просторечии называют это «фокусом на бесконечность».

    «Гиперфокальное расстояние» (H) модуля цветной камеры DepthAI / megaAI довольно близко из-за его f.no и фокусного расстояния.

    Из Википедии, здесь гиперфокальное расстояние:

    Где:

    • f = 4,52 мм («эффективное фокусное расстояние» модуля камеры)

    • N = 2,0 (+/- 5%, FWIW)

    • c = C = 0,00578 мм (см. Здесь, кто-то объясняет это для 1/2.2 / (2,0 * 0,00578 мм) + 4,52 мм ~ = 1,772 мм, или 1,772 метра ( 5,8 футов ).

      Мы используем эффективное фокусное расстояние, и, поскольку мы не являемся экспертами по оптике, мы не уверены на 100%, подходит ли это здесь, но общая высота цветового модуля составляет 6,05 мм, поэтому, используя это в качестве фокусного расстояния наихудшего случая, мы все равно получаем гиперфокальное расстояние 10,4 фута .

      Так что это значит для вашего приложения?

      Все, что находится дальше 10 футов (~ 3 м) от OAK, будет в фокусе, если фокус установлен на 10 футов или больше.Другими словами, до тех пор, пока у вас не будет чего-то ближе 10 футов, на котором камера пытается сфокусироваться, все в 10 футах или больше будет в фокусе.

      Можно ли управлять настройками экспозиции, баланса белого и автофокуса (3A) камеры RGB с хоста?

      Автофокус (AF)

      • См. Здесь пример переключения между автофокусировкой и ручной фокусировкой, а также команды определенных положений ручной фокусировки.

      • См. Здесь для управления автофокусировкой, интересующей области (чтобы настроить автофокусировку на учет только определенной области) и срабатывания триггера.

      • См. Здесь API для ручной настройки уровня фокуса.

      Экспозиция (AE)

      Можно установить длительность кадра (us), время экспозиции (us), чувствительность (iso) через API. И у нас есть небольшой пример цветной камеры, чтобы показать, как это сделать для цветной камеры, который находится здесь: https://github.com/luxonis/depthai/pull/279

      Мы сделали команды экспозиции более самодокументированными (здесь). И посмотрите этот пример для управления экспозицией и установки автоматической или ручной настройки экспозиции.

      Баланс белого (AWB)

      См. Здесь режимы и элементы управления автоматического баланса белого.

      Каковы характеристики камер с оттенками серого с глобальным затвором?

      Стереопара состоит из модулей камеры на базе синхронизированного глобального затвора OV9282.

      Технические характеристики:
      • Эффективное фокусное расстояние (EFL): 2,55

      • F-номер (F.NO): 2.2 +/- 5%

      • Поле зрения (FOV): — Диагональ (DFOV): 82.6 (+/- 0,5) град. — По горизонтали (HFOV): 71,9 (+/- 0,5) град. — По вертикали (VFOV): 50,0 (+/- 0,5) град.

      • Искажение: <1%

      • Размер линзы: 1/4 дюйма

      • Фокусировка: фиксированный фокус, от 0,196 метра (гиперфокальное расстояние) до бесконечности

      • Разрешение: 1280 x 800 пикселей

      • Размер пикселя: 3×3 микрометра (мкм)

      Могу ли я прикрепить к камере другие объективы? Какая система крепления? S крепление? C крепление?

      Цветная камера на megaAI и DepthAI — это полностью интегрированный модуль камеры, поэтому объектив, автофокус, автофокус двигатель и т. д.все автономны и не подлежат замене или обслуживанию. Вы увидите, что все очень маленькое. Это такая же камера, которую вы найдете в смартфоне высокого класса.

      Итак, если вам нужна настраиваемая оптика, например, с ИК-подсветкой, УФ-светом, другим полем зрения и т. Д., Рекомендуется использовать серия креплений ArduCam M12 или CS модулей OV9281 и / или IMX477.

      Обратите внимание, что для них требуется адаптер (здесь) и ниже, и этот адаптер подключается к порту RGB DepthAI FFC.Можно сделать другие адаптеры так, чтобы одновременно можно было использовать более одной из этих камер, или модифицировать OAK-FFC-3P-OG с открытым исходным кодом, чтобы напрямую принимать ArduCam FFC, но это еще не сделано. .

      Тем не менее, мы видели, как пользователи прикрепляли оптику того же типа, что и к смартфонам, для расширения поля зрения, увеличения и т. Д. Автофокус, кажется, работает нормально через эти адаптеры. Например, член команды протестировал Occipital Wide Vision Lens предназначен для работы с цветными камерами megaAI и DepthAI.(Мы еще не пробовали камеры с оттенками серого.)

      Также см. Ниже об использовании DepthAI FFC с камерой Raspberry Pi HQ для использования объективов с байонетом C и CS.

      Могу ли я полностью настроить глубину AI через USB?

      Таким образом, USB3 (способный к 900 мА) способен обеспечить достаточную мощность для моделей DepthAI. Однако USB2 (способный к 500 мА) — нет. Таким образом, на моделях DepthAI питание обеспечивается с помощью цилиндрического разъема 5 В, чтобы предотвратить ситуации, когда DepthAI подключен к USB2 и прерывистое поведение возникает из-за недостаточного питания (т.е.е. отключение питания USB2.

      Для полного питания DepthAI от USB (при условии, что вы уверены, что ваш порт может обеспечить достаточную мощность), вы можете использовать вот этот переходной кабель USB-A к разъему типа «бочонок». И мы часто используем DepthAI с этим USB-блоком питания.

      Что такое спецификация винтового крепления на OAK-1 и OAK-D?

      Это стандартное крепление «штатив» 1 / 4-20, используемое в большинстве камер. Подробнее об этом типе крепления в Википедии.

      Как использовать DepthAI под VirtualBox

      Если вы хотите использовать VirtualBox для запуска исходного кода DepthAI, ознакомьтесь с нашим руководством здесь.

      Что такое БРИТЬЕ?

      SHAVES — векторные процессоры в DepthAI / OAK. 2x NCE (нейронные вычислительные машины) были спроектированы для множества операций, но некоторые из них не реализованы. Итак, БРИТЬЯ берет на себя эти операции.

      Эти БРИТЫ также используются для других вещей в устройстве, например, для обработки переформатирования изображений, выполнения работы с ISP и т. Д.

      Таким образом, чем выше разрешение, тем больше для этого требуется БРИТЬЯ.

      • Для 1080p 13 БРИТЬЕВ (из 16) бесплатны для нейросетей.

      • Для разрешения сенсора 4K доступно 10 БРИТЬЕВ для нейронных операций.

      Внутри микропрограммы DepthAI есть внутренний диспетчер ресурсов, который координирует использование SHAVES и предупреждает, если для данной конфигурации конвейера запрашивается слишком много ресурсов.

      Как увеличить параметры NCE, SHAVES и CMX?

      Если вы хотите указать, сколько Neural Compute Engine (NCE) использовать, или сколько ядер SHAVE, или сколько Подключение блоков MatriX, вы можете сделать это с помощью DepthAI.

      В нашем примере сценария мы реализовали параметры командной строки -nce , -sh и -cmx . Просто клонируйте Репозиторий DepthAI и do

       ./depthai_demo.py -nce 2 -sh 14 -cmx 14
       

      И он будет запускать MobilenetSSD по умолчанию, скомпилированный для использования 2 NCE, 14 SHAVE и 14 CMX. Обратите внимание, что эти значения не могут быть больше, чем те, которые вы видите выше , поэтому вы не можете использовать 15 SHAVE или 3 NCE. 14 — это предел для параметров SHAVE и CMX, а 2 — это предел для NCE.

      Вы можете попробовать это сами, следуя локальному руководству по преобразованию модели OpenVINO. или с помощью нашего онлайн-конвертера больших двоичных объектов Myriad X. Для получения дополнительной информации см. Преобразование модели в MyriadX blob

      .

      Могу ли я использовать DepthAI с новой камерой Raspberry Pi HQ?

      Это особенно интересное приложение DepthAI, поскольку оно позволяет кодировать камеру Raspberry Pi HQ в видео h.265 4K. (и 12-мегапиксельные кадры) даже с Raspberry Pi 1 или Raspberry Pi Zero — потому что DepthAI выполняет всю кодировку на плате, поэтому Pi получает только 3.125 МБ / с, закодированный поток 4K h.265 вместо 373 МБ / с 4K RAW поток, исходящий от IMX477 напрямую (это слишком много данных для обработки Pi, и поэтому Pi при использовании с камерой Pi HQ напрямую, может делать только видео 1080p, а не запись видео 4K).

      OAK-FFC-3P и OAK-FFC-4P будут работать с `Raspberry Pi HQ Camera < https://www.arducam.com/product/b0240-arducam-imx477-hq-quality-camera/>`__ без платы адаптера , так как вы можете подключить камеру через 22-26-контактный переходной кабель (артикул: A00403, который вы получаете с OAK-FFC-3P / OAK-FFC-4P) к плате FFC.

      OAK-FFC-3P-OG модель также работает через плату адаптера с камерой Raspberry Pi HQ. (На основе IMX477), который затем работает с множеством объективов с байонетом C и CS (см. Здесь). А здесь плата адаптера для OAK-FFC-3P-OG.

      Вот несколько быстрых изображений и видеороликов о его использовании:

      Комплект переходников для OAK-FFC-3P-OG можно купить здесь

      Могу ли я использовать DepthAI с Raspberry Pi Zero?

      Да, DepthAI на нем полностью функционально, вы можете увидеть пример ниже:

      Спасибо Коннору Кристи за его помощь в создании этой установки!

      И обратите внимание, что теперь у нас есть конкретная сборка DepthAI для ARMv6 (Pi Zero).

      Сколько энергии потребляет DepthAI Raspberry Pi CME?

      Коротко говоря, OAK-D-CM3 потребляет около 2,5 Вт в режиме ожидания и от 5,5 до 6 Вт, когда DepthAI работает на полную мощность.

      Ниже приведено короткое видео, показывающее это:

      Как отвязать и привязать устройство?

      В некоторых случаях вам может потребоваться отменить привязку и привязать ваше устройство, например, контроллер дает сбой со следующими сообщениями об ошибках:

       [345692.730104] xhci_hcd 0000: 02: 00.0: Хост-контроллер xHCI не отвечает, предположим, что он мертв
      [345692.730113] xhci_hcd 0000: 02: 00.0: HC умер; убираться
       

      , или вы столкнулись с ошибкой, например:

       RuntimeError: не удалось найти устройство после загрузки, сообщение об ошибке: X_LINK_DEVICE_NOT_FOUND
       

      или

       Не удается включить. Может USB кабель плохой?
       

      Вместо перезагрузки хоста вы можете отвязать и привязать устройство.

      Примечание! Вам необходимо знать PCI ID хост-контроллера USB, чтобы заменить часть «0000: 00: 14.0» в приведенной ниже команде.

       echo -n "0000: 00: 14.0 "| sudo tee / sys / bus / pci / drivers / xhci_hcd / unbind; sleep 1; echo -n" 0000: 00: 14.0 "| sudo tee / sys / bus / pci / drivers / xhci_hcd / bind
       

      Как мне получить более короткие или длинные гибкие плоские кабели (FFC)?

      Для всех камер мы используем 0,5 мм 26-контактный гибкий кабель 152 мм с одной стороны. Для получения более подробной информации перейдите по ссылке.

      Где репозитории Github? Открытый исходный код DepthAI?

      DepthAI — это платформа с открытым исходным кодом для различных стеков, включая оборудование (электрическое и механическое), программное обеспечение и обучение машинному обучению с использованием Google Colab.

      Соответствующие репозитории Github см. Ниже:

      Встроенный сценарий использования

      Приведенные выше примеры включают несколько представляющих интерес подмодулей. Вы можете прочитать о них немного больше в соответствующих файлах README:

      Как создать API C ++?

      Готовые двоичные файлы доступны для привязок Python (или так называемых колес).

      У нас нет готовых двоичных файлов для основной библиотеки C ++.

      Одна из причин — огромное количество различных платформ, а вторая — то, что сама библиотека довольно скудная, поэтому компиляция с использованием другого источника C ++ не должна быть проблемой.

      Чтобы скомпилировать необходимые заголовки и .dll , перейдите по этой ссылке: https://github.com/luxonis/depthai-core/tree/main#building Under — А для динамической версии библиотеки

      При желании вы также можете установить его в желаемый каталог, добавив этот флаг cmake :

       cmake -DBUILD_SHARED_LIBS = ON -DCMAKE_INSTALL_PREFIX = [желаемая / установка / путь]
      А затем вызов цели установки
      cmake --build. --target install
       

      Это должно привести к копированию заголовков и библиотеки по этому пути.

      Другой вариант — прямая интеграция в ваш проект CMake, см. Для этого: https://github.com/luxonis/depthai-core-example

      И примечание по сборке для Windows : Windows не использует libusb , а использует внутреннюю Windows winusb .

      Могу ли я использовать микрофоны с DepthAI?

      Да.

      • SoM OAK-SoM-Pro поддерживает до 3 стереовходов I2S (до 6 физических микрофонов) и один стереовыход I2S (например.грамм. для стереодинамика).

      • Любые микрофоны I2S должны работать, и можно также использовать аудиокодеки, но для них может потребоваться дополнительная конфигурация I2C.

      • Важно отметить, что OAK-SoM и OAK-SoM-IoT не поддерживают I2S.

      Мы протестировали аудиовход на OAK-SoM-Pro с использованием 3x CMM-4030D-261-I2S-TR и пришли к выводу, что качество звука хорошее. Теоретически должны работать многие другие микрофоны, однако мы не тестировали аудиовыход.

      Где можно найти брошюры и / или спецификации?

      Для получения дополнительных сведений об устройствах OAK перейдите на страницу документации по оборудованию.

      Брошюры:

      • Редакции Сводка здесь

      • OAK-SoM (Система на модуле) здесь

      • OAK-FFC-3P-OG (USB3 Modular Cameras Edition) здесь

      • OAK-D-PCBA здесь

      • OAK-D-CM3 (Raspberry Pi Compute Edition Module) здесь

      • Raspberry Pi HAT (BW1094) здесь

      • ДУБ-1 здесь

      Листы данных:

      • Система DepthAI на модуле (OAK-SoM) здесь

      • Система DepthAI на модуле Pro (OAK-SoM-Pro) здесь

      • Система DepthAI на модуле IoT (OAK-SoM-IoT) здесь

      • PoE Modular Cameras Edition (BW2098FFC) здесь

      Сколько весит устройства OAK?

      Как я могу цитировать продукцию Luxonis в публикациях?

      Если продукты DepthAI и OAK-D широко использовались в вашем исследовании и если вы хотите отметить DepthAI и OAK-D в своей академической публикации, мы предлагаем цитировать их, используя следующий формат bibtex.

       @misc {DepthAI,
      title = {{DepthAI}: API встроенного машинного обучения и компьютерного зрения},
      url = {https://luxonis.com/},
      note = {Программное обеспечение доступно на сайте luxonis.com},
      автор = {luxonis},
      год = {2020},
      }
      
      @misc {ДУБ-Д,
      title = {{OAK-D}: Стереокамера с Edge AI},
      url = {https://luxonis.com/},
      note = {Стереокамера с возможностями Edge AI от Luxonis и OpenCV},
      автор = {luxonis},
      год = {2020},
      }
       

      Где я могу найти ваш логотип?

      Вы можете найти официальные логотипы Luxonis , DepthAI и megaAI здесь.

      Как мне поговорить с инженером?

      В Luxonis мы твердо верим в ценность возможности для клиентов напрямую общаться с нашими инженерами. Это помогает нашей инженерной эффективности. И это достигается за счет того, что мы делаем важные вещи наиболее значимыми способами (то есть удобством использования) для решения реальных проблем.

      Таким образом, у нас есть много механизмов, позволяющих напрямую общаться:
      • Luxonis Community Discord. Используйте это для общения с нашими инженерами в режиме реального времени.Мы даже можем сделать здесь выделенные каналы для вашего проекта / усилий общедоступными или частными для обсуждения по мере необходимости.

      • Luxonis Github. Не стесняйтесь создавать проблемы Github в любых / всех соответствующих репозиториях с вопросами, запросами функций или отчетами о проблемах. Обычно мы отвечаем в течение пары часов (и часто через пару минут). Краткое описание наших репозиториев Github см. Здесь.

      • обсудить.luxonis.com. Используйте это для начала любых публичных обсуждений, идей, запросов продуктов, запросов на поддержку и т. Д.или вообще взаимодействовать с сообществом Luxonis. Пока вы там, ознакомьтесь с этим замечательным устройством визуальной помощи, созданным с помощью DepthAI для слабовидящих, здесь.

      Есть вопросы?

      Мы всегда рады помочь с кодом или другими вопросами, которые могут у вас возникнуть.

      Урок 12 — Перспективная проекция

      Фон

      Мы наконец достигли предмет, который лучше всего отображает 3D-графику — проекция из 3D мир на 2D-плоскости, сохраняя при этом видимость глубины.Хороший пример — изображение дороги или железнодорожных путей, которые кажутся сходящимися до единственной точки далеко на горизонте.

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

      Трансформация перспективной проекции потребует от нас предоставить 4 параметра:

      1. Соотношение сторон — соотношение ширины и высоты прямоугольной области, которая будет целью проецирования.
      2. Вертикальное поле зрения: вертикальный угол камеры, через которую мы смотрим на мир.
      3. Местоположение ближней плоскости Z. Это позволяет нам обрезать объекты, расположенные слишком близко к камере.
      4. Местоположение дальней плоскости Z. Это позволяет нам обрезать объекты, находящиеся слишком далеко от камеры.

      Соотношение сторон требуется, так как мы собираемся представить все координаты в нормализованное пространство, ширина которого равна его высоте.Поскольку это редко бывает с экраном, ширина которого обычно больше, чем высота, которую он должен будет представить в преобразовании как каким-то образом «уплотняя» точки на горизонтальной линии по сравнению с вертикальной линия. Это позволит нам втиснуть больше координат с точки зрения компонент X в нормализованном пространстве, который будет удовлетворять требование «видеть» больше по ширине, чем по высоте в финальное изображение.

      Вертикальное поле зрения позволяет увеличивать и уменьшать масштаб изображения. мир. Рассмотрим следующий пример. На картинке слева со стороны руки угол шире, что делает объекты меньше в на картинке справа угол меньше, что делает тот же объект кажется больше. Обратите внимание, что это влияет на местоположение камеры, что немного противоречит интуиции.Слева (где мы увеличить с меньшим полем зрения) камеру необходимо разместить дальше и справа он ближе к плоскости проекции. Однако помните, что это не имеет реального эффекта, поскольку прогнозируемый координаты отображаются на экране и расположение камеры не играет никакой роли.

      Начнем с определения расстояния плоскости проекции от камера.Плоскость проекции — это плоскость, параллельная оси XY. самолет. Очевидно, что видна не вся плоскость, потому что это слишком много. Мы можем видеть только то, что находится в прямоугольной области (называемой окном проекции), которая имеет такое же пропорции нашего экрана. Коэффициент апсекта рассчитывается следующим образом:

      ar = ширина экрана / высота экрана

      Удобно определим высоту проекционного окна как 2 что означает, что ширина ровно в два раза больше соотношения сторон (см. выше уравнение).Если поместить камеру в начало координат и посмотреть на область из-за спины камеры мы увидим следующее:

      Все, что находится за пределами этого прямоугольника, будет вырезано, и мы уже видите, что координаты внутри него будут иметь компонент Y в требуемый диапазон. Компонент X в настоящее время немного больше, но мы позже предоставит исправление.

      А теперь посмотрим на это «со стороны» (глядя на YZ самолет):

      Находим расстояние от камеры до плоскости проекции с помощью вертикальное поле зрения (обозначается углом альфа):

      Следующим шагом является вычисление проекционных координат X и Y. Рассмотрим следующее изображение (снова глядя на плоскость YZ).

      У нас есть точка в трехмерном мире с координатами (x, y, z). Мы хотим найти (x p , y p ) которые представляют координаты проекции на плоскость проекции. С компонент X не рассматривается на этой диаграмме (он указывает на и вне страницы) начнем с Y. По правилу аналогичных треугольников можно определить следующие:

      Аналогично компоненту X:

      Так как наше окно проекции имеет размер 2 * ar (ширина) на 2 (высота), мы знайте, что точка в трехмерном мире находится внутри окна, если она проецируется в точку, X-компонент которой находится между -ar и + ar а прогнозируемый компонент Y находится между -1 и +1.Итак, на Y компонент мы нормализованы, а в компоненте X нет. Мы можем также нормализовать Xp, разделив его на соотношение сторон. Это означает, что точка, для которой спроецированная компонента X была + ar, теперь равна +1. что помещает его в правую часть нормализованного поля. Если это спроецированный компонент X составлял +0,5, а соотношение сторон — 1,333 (что составляет что мы получаем на экране 1024×768) новый спроецированный компонент X равно 0.375. Подводя итог, деление на соотношение сторон имеет эффект уплотнения точек на оси X.

      Мы достигли следующих проекционных уравнений для компонентов X и Y:

      Перед тем, как завершить весь процесс, попробуем посмотреть, как проекция матрица как бы выглядела в этом месте. Это означает представление вышеуказанного используя матрицу.Теперь мы столкнулись с проблемой. В обоих уравнениях нам нужно разделите X и Y на Z, который является частью вектора, представляющего позиция. Однако значение Z меняется от одной вершины к другой. поэтому вы не можете поместить его в одну матрицу, которая проецирует все вершины. К поймите это лучше подумайте о верхнем векторе строки матрицы (a, b, c, d). Нам нужно выбрать значения вектор такой, что выполняется следующее:

      Это операция скалярного произведения между верхними вектор-строка матрицы с позицией вершины, которая дает последний компонент X.Мы можем выбрать ‘b’ и ‘d’ равными нулю, но мы не можем найдите буквы ‘a’ и ‘c’, которые можно вставить в левую часть, и предоставьте результаты справа стороны стороны. Решение, принятое OpenGL, состоит в том, чтобы разделить преобразование на две части: умножение на проекцию матрица с последующим делением на значение Z в качестве независимого шага. Матрица предоставляется приложение и шейдер должны включать умножение на него позиции.Деление на Z жестко подключен к графическому процессору и занимает место в растеризаторе (где-то между вершиной шейдер и фрагментный шейдер). Как GPU знает, на какой вывод вершинного шейдера делить его значение Z? простой — для этого задания предназначена встроенная переменная gl_Position. Теперь нам нужно только найти матрицу, представляющую проекцию уравнения X и Y выше.

      После умножения на эту матрицу GPU может автоматически разделить на Z, и мы получим результат мы хотим. Но вот еще одна сложность: если умножить матрицу по положению вершины, а затем разделив ее на Z, мы буквально потерять значение Z, потому что оно становится равным 1 для всех вершин. Исходное значение Z необходимо сохранить для последующего выполнения теста глубины.Итак, трюк состоит в том, чтобы скопировать исходное значение Z в компонент W полученного вектор и делим только XYZ на W вместо Z. W сохраняет исходный Z, который может использоваться для проверки глубины. Автоматический шаг деления gl_Position на ее W называется «перспективным делением».

      Теперь мы можем сгенерировать промежуточную матрицу, которая представляет указанную выше два уравнения, а также копирование Z в компонент W:

      Как я сказал ранее, мы хотим включить нормализацию значения Z а также для облегчения работы машинки для стрижки, не зная ближние и дальние значения Z.Однако матрица выше превращает Z в ноль. Зная, что после преобразования вектора система будет автоматически делить перспективу, нам нужно выбрать значения третья строка матрицы такая, что после деления любое значение Z в пределах диапазона просмотра (т.е. NearZ <= Z <= FarZ) будет отображаться в диапазон [-1,1]. Такая операция отображения состоит из двух части.Сначала мы уменьшаем диапазон [NearZ, FarZ] до любого диапазона шириной 2. Затем мы перемещаем (или переводим) диапазон, который начинается с -1. Масштабирование значения Z, а затем перевод представлен общей функцией:

      Но следующая перспектива делит правую часть функции:

      Теперь нам нужно найти значения A и B, которые будут выполнять сопоставление с [-1,1].Мы знаем, что когда Z равно NearZ, результат должен быть -1, а когда Z равно FarZ, результат должен быть 1. Поэтому мы можем написать:

      Теперь нам нужно выбрать третью строку матрицы в качестве вектора (a b c d), который будет удовлетворять:

      Мы можем сразу установить ‘a’ и ‘b’ равными нулю, потому что мы не хотите, чтобы X и Y каким-либо образом влияли на преобразование Z. Тогда наш A значение может стать ‘c’, а значение B может стать ‘d’ (так как W известен быть 1).

      Следовательно, окончательная матрица преобразования:

      После умножения положения вершины на матрицу проекции координаты называются в пространстве клипа и после выполнения разделения перспективы координаты находятся в пространстве NDC (нормализованные координаты устройства).

      Путь, который мы прошли в этой серии руководств, теперь должен стать ясным.Без каких-либо проекций мы можем просто выходные вершины из VS, компоненты XYZ которых (вектора положения) находятся в пределах диапазон [-1, + 1]. Это гарантирует, что они окажутся где-нибудь на экране. Убедившись, что W всегда равно 1, мы, по сути, предотвращаем эффект разделения перспективы. После этого координаты преобразуются в экранное пространство, и все готово.При использовании матрица проекции шаг разделения перспективы становится неотъемлемой частью проекции 3D в 2D.

      Матрица камеры

      | ACTi Corporation

      Настоящее Соглашение предусматривает любой доступ к Информации (как определено ниже) и ее использование Пользователем.

      Пользовательское соглашение веб-сайта ACTi

      Настоящее пользовательское соглашение на веб-сайте ACTi («Соглашение») заключается между ACTi Corporation («ACTi»), тайваньской корпорацией, основное место деятельности которой находится по адресу 7F, No.1, Alley 20, Lane 407, Sec.2, Tiding Blvd., Neihu District, Taipei 114, Taiwan, R.O.C и («Пользователь») с его / ее идентификационным номером . Настоящее Соглашение вступает в силу с даты, когда вы нажмете кнопку «Я принимаю» ниже («Дата вступления в силу»). Настоящее Соглашение предусматривает любой доступ к Информации (как определено ниже) и ее использование Пользователем.

      1. Определения.

      1.1 «Информация» означает информацию, представленную на веб-страницах («Веб-страницы»), доступных в домене ACTi, acti.com, которая может включать, помимо прочего, информацию о продуктах, информацию об услугах, информацию о ценах, маркетинговую информацию, результаты анализа, программное обеспечение, инструменты поиска и результаты поиска.

      1.2 «Конфиденциальная информация» означает информацию, которую ACTi раскрывает Пользователю в настоящем Соглашении, и ACTi считает конфиденциальной и / или служебной, включая, помимо прочего, материальную, нематериальную, визуальную, электронную, настоящую или будущую информацию, такую ​​как: (a) Информация ; и (b) условия настоящего Соглашения и связанные с ним обсуждения, переговоры и предложения.

      1.3 «Права на интеллектуальную собственность» означают любые и все права, существующие время от времени в соответствии с патентным законодательством, законом об авторском праве, законом о защите полупроводниковых микросхем, законом о коммерческой тайне, законом о товарных знаках, законом о недобросовестной конкуренции, законом о правах на публичность, законом о правах конфиденциальности и всеми и всеми. другие права собственности и любые и все приложения, обновления, расширения и восстановления для них, в настоящее время или в будущем, в силе и действии во всем мире.

      2.Предоставление и изменение информации.

      2.1 Предоставление информации. ACTi предоставит эту информацию пользователю для доступа и использования на веб-страницах.

      2.2 Изменение информации. ACTi имеет право добавлять, удалять, изменять или изменять любую часть этой Информации без предварительного уведомления и без каких-либо обязательств.

      3.Обязанности пользователя.

      3.1 Пользователь обязуется соблюдать эти условия настоящего Соглашения при доступе или использовании этой Информации.

      3.2 Пользователь не щадит усилий для предотвращения несанкционированного доступа или использования этой Информации, используя коммерчески разумные методы, включая, помимо прочего, сохранение вашей учетной записи и пароля веб-страниц, которые будут использоваться только вами.Пользователь должен незамедлительно приостановить или прекратить любой несанкционированный доступ или использование этой информации. Пользователь соглашается немедленно уведомить ACTi о любом несанкционированном доступе или использовании этой информации.

      3.3 Пользователь не должен загружать или распространять какую-либо часть этой информации или предоставлять какую-либо часть этой информации третьим лицам без предварительного письменного разрешения ACTi.

      3.4 Пользователь соглашается не изменять или модифицировать какую-либо часть этой информации.

      3.5 Пользователь соглашается не использовать эту Информацию для каких-либо целей, кроме целей продвижения бизнеса для ACTi, без предварительного письменного разрешения ACTi.

      4. Сборы.
      ACTi бесплатно предоставит эту информацию Пользователю.

      5. Конфиденциальная информация.

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

      5.2 Конфиденциальная информация не должна включать информацию, которая: (а) является или становится общедоступной в результате бездействия или бездействия Пользователя; (б) находился в законном владении Пользователя до раскрытия информации и не был получен Пользователем прямо или косвенно от ACTi; (c) законно раскрывается Пользователю третьей стороной без ограничений на раскрытие Пользователем; или (г) независимо разработана Пользователем без нарушения настоящего Соглашения и может быть подтверждена в письменной форме.

      5.3 Пользователь может раскрывать Конфиденциальную информацию исключительно в случае необходимости в соответствии с постановлением суда, повесткой в ​​суд / повесткой или другим государственным требованием (при условии, что Пользователь заранее уведомляет ACTi обо всех коммерчески разумных усилиях и дает ACTi возможность оспорить такое постановление суда, повестку в суд / повестку в суд. или государственное требование). Пользователь признает, что ущерб от ненадлежащего раскрытия Конфиденциальной информации может быть непоправимым; следовательно, ACTi имеет право требовать справедливой защиты, включая временный запретительный судебный приказ или предварительный или постоянный судебный запрет, в дополнение ко всем другим средствам правовой защиты, в случае нарушения или угрозы нарушения настоящего Раздела 5.

      6. Права интеллектуальной собственности.
      ACTi владеет всеми правами, титулами и интересами, включая, помимо прочего, все Права на интеллектуальную собственность, относящиеся к этой Информации (и любым производным работам или их улучшениям). Пользователь не приобретает никаких прав, титулов или интересов в отношении этой Информации, за исключением ограниченных прав на использование, прямо изложенных в настоящем Соглашении. Любые права, прямо не предоставленные здесь, считаются удержанными.

      7. Отказ от гарантийных обязательств.
      В СТЕПЕНИ, РАЗРЕШЕННОЙ ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ, ЛЮБОЕ ИСПОЛЬЗОВАНИЕ ДАННОЙ ИНФОРМАЦИИ ОСУЩЕСТВЛЯЕТ СОБСТВЕННЫЙ РИСК ПОЛЬЗОВАТЕЛЯ. ДАННАЯ ИНФОРМАЦИЯ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», И ACTI НЕ ПРЕДОСТАВЛЯЕТ НИКАКИХ ГАРАНТИЙ, ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ, ЗАКОНОДАТЕЛЬНЫХ ИЛИ ИНЫХ, ВКЛЮЧАЯ БЕЗ ОГРАНИЧЕНИЯ ГАРАНТИЙ БЕЗОПАСНОСТИ, ЦЕЛОСТНОСТИ ПРАВ, КОММЕРЧЕСКОЙ ЦЕННОСТИ И КОММЕРЧЕСКОЙ ЦЕННОСТИ. .ACTI НИ В КОЕМ СЛУЧАЕ НЕ ВМЕШАЕТСЯ В КАКИЕ-ЛИБО СДЕЛКИ МЕЖДУ ПОЛЬЗОВАТЕЛЕМ И ЛЮБОЙ ТРЕТЬЕЙ СТОРОНОЙ И НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ.

      8. Прекращение действия.

      8.1 Пользователь может прекратить доступ к этой Информации или ее использование в любое время.

      8.2 ACTi оставляет за собой право в любое время и по любой причине прекратить действие настоящего Соглашения и / или прекратить предоставление всей или любой части этой Информации.ACTi направит Пользователю уведомление как минимум за 7 (семь) дней до прекращения действия. Несмотря на вышесказанное, ACTi может расторгнуть настоящее Соглашение и / или немедленно прекратить предоставление всей или любой части этой Информации, если Пользователь нарушил настоящее Соглашение.

      9. Возмещение убытков.
      В той степени, в которой это разрешено применимым законодательством, Пользователь должен возмещать убытки, защищать и оградить ACTi, его дочерние компании и другие аффилированные лица, а также их должностных лиц и их должностных лиц, директоров, агентов, совместных брендов или других партнеров, сотрудников, поставщиков информации, лицензиаров и лицензиатов ( вместе, «Стороны, освобожденные от ответственности») от и против любой и всех обязательств, затрат, убытков, ущерба, претензий и требований, включая, помимо прочего, гонорары адвокатов и расходы, понесенные Сторонами, освобожденными от ответственности, возникающие в результате или связанные с (а) Пользователем доступ к этой информации или ее использование; (б) любое нарушение или несоблюдение пользователем настоящего Соглашения; (c) нарушения Пользователем прав третьих лиц, включая, помимо прочего, авторские права, права собственности и права на конфиденциальность; или (d) обвинение любой третьей стороны в возмещении убытков, понесенных Пользователем в результате доступа к этой Информации или ее использования.

      10. Ограничение ответственности.
      В СТЕПЕНИ, РАЗРЕШЕННОЙ ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ, НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ БУДУТ ДЕЙСТВОВАТЬ, ЕЕ ДОЧЕРНИЕ И ДРУГИЕ ДОЧЕРНИЕ ПРЕДПРИЯТИЯ, ЕГО И ИХ ОФИЦЕРЫ, ДИРЕКТОРЫ, АГЕНТЫ, СО-БРЕНДЕРЫ ИЛИ ДРУГИЕ ПАРТНЕРЫ, СОТРУДНИКИ, ПРЕДСТАВИТЕЛИ ИНФОРМАЦИИ, ЛИЦЕНЗИАТЫ И ЛИЦЕНЗИАТЫ , КОСВЕННЫЕ, ОСОБЫЕ, СЛУЧАЙНЫЕ, КОСВЕННЫЕ, ПРИМЕРНЫЕ ИЛИ КАРАТЕЛЬНЫЕ УБЫТКИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЯ, ЛИЧНЫЕ ТРАВМЫ ИЛИ ЛИЧНЫЕ УБЫТКИ, ВЫЗВАННЫЕ ДОСТУПОМ ПОЛЬЗОВАТЕЛЯ ИЛИ ИСПОЛЬЗОВАНИЕМ ДАННОЙ ИНФОРМАЦИИ, УЩЕРБАМИ ИЛИ ПРЕРЫВАНИЕМ ИСПОЛЬЗОВАНИЯ ИНФОРМАЦИЯ ИЛИ УЩЕРБ, ПРИЧИНЕННЫЙ ЛЮБЫМ УНИКАЛЬНЫМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ, КОМПЬЮТЕРНЫМ ВИРУСОМ ИЛИ ИНАЧЕ, ПЕРЕДАВАЕМЫЕ С ПОМОЩЬЮ ЭТОЙ ИНФОРМАЦИИ ЛЮБОЙ ТРЕТЬЕЙ СТОРОНОЙ, ОДНАКО ВЫЗВАННАЯ И ПОД ЛЮБОЙ ТЕОРИЕЙ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ИЛИ НЕ ОГРАНИЧИВАЮЩАЯСЯ ОТВЕТСТВЕННОСТЬЮ, ВКЛЮЧАЯ ИЛИ НЕ ОГРАНИЧИВАЕМЫЕ КОНТРАКТАМИ ЗНАЛИЛИ ИЛИ ПРЕДУПРЕЖДЕНИЕ О ВОЗМОЖНОСТИ ТАКОГО ПОВРЕЖДЕНИЯ.НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ОТВЕТСТВЕННОСТЬ ACTI ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, ВЫЯВЛЯЮЩИЕСЯ ИЗ НАСТОЯЩЕГО СОГЛАШЕНИЯ ИЛИ СВЯЗАННЫЕ С ДАННЫМ СОГЛАШЕНИЕМ, НЕ ДОЛЖНА ПРЕВЫШАТЬ ПЯТЬСОТ ДОЛЛАРОВ США (500 долларов США).

      11. Разное.

      11.1 Обе стороны не могут уступать или иным образом передавать свои права или делегировать свои обязательства по настоящему Соглашению.

      11.2 Никакая задержка или неисполнение какой-либо из сторон какого-либо права или средства правовой защиты в соответствии с настоящим Соглашением не будет означать отказ от такого права или средства правовой защиты.

      11.3 Если какое-либо положение настоящего Соглашения будет признано недействительным и не имеющим исковой силы, оно должно быть заменено, насколько это возможно, положением, наиболее близким к смыслу первоначального положения. Невозможность принудительного исполнения какого-либо положения, однако, не влияет на действительность остальной части настоящего Соглашения, которое остается в силе и подлежит исполнению в соответствии с его условиями.

      11.4 Ни одна из сторон не уполномочена действовать от имени или от имени другой стороны в соответствии с настоящим Соглашением. Без ограничения общего характера вышеизложенного, каждая сторона является независимым подрядчиком, и настоящее Соглашение не создает никаких отношений принципала / агента или партнерских отношений.

      11.5 Настоящее Соглашение регулируется и толкуется в соответствии с законодательством Тайваня, за исключением положений о выборе права, и обе стороны соглашаются с тем, что Тайваньский районный суд Шилинь обладает исключительной юрисдикцией первой инстанции в отношении любых споров, возникающих в связи с настоящим Соглашением между Стороны.

      11.6 Разделы 5 (Конфиденциальная информация), 6 (Права интеллектуальной собственности), 7 (Отказ от гарантий), 8 (Прекращение действия), 9 (Возмещение), 10 (Ограничение ответственности) и 11 (Разное) остаются в силе после истечения срока или прекращения действия это соглашение.

      Размеры матрицы видеокамеры: Размер матрицы. Что это такое?

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Пролистать наверх