История и тренды компьютерного зрения

21.10.2019

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

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

Термин «компьютерное зрение» получил распространение гораздо позже появления задач, которые стали относить к этому направлению (кстати, аналогичное явление произошло и с термином «машинное обучение»). Вот примеры некоторых типичных задач компьютерного зрения:

  • обнаружение объектов (определение, в какой части изображения находится объект)
  • слежение за объектами
  • счёт объектов
  • распознавание образов
  • определение местоположения или размера объекта (такими задачами занимается и такая дисциплина, как фотограмметрия)
  • создание 3D моделей

Алгоритмы, в которых входное изображение и выходное изображение не являются компьютерным зрением, хотя их можно использовать как часть программного обеспечения компьютерного зрения. Алгоритмы, в которых изображение и вывод попадают в область «обработки изображения». (см. после 1 абзаца)

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

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

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

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

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

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

Для решения некоторых задач, с которыми справляется человек, целесообразно, чтобы компьютер, помимо камер, использовал дополнительные средства для определения расстояний до объектов. Например, в автомобилях-роботах для этой цели могут использоваться лидары (например, https://velodynelidar.com/) или радары.