Обновить
128K+

Обработка изображений *

Работаем с фото и видео

62,02
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Восемь цветов радуги: о цвете с точки зрения математики

Время на прочтение9 мин
Охват и читатели19K
Больше пяти лет мы публикуем на Хабре статьи на различные темы компьютерного зрения. Чаще всего они связаны с распознаванием документов, потому что нам всегда очень не терпится поделиться с вами всем крутым и новым, что мы сделали в Smart IDReader. Хотя мы честно стараемся изложить наши знания в «универсальном» ключе, чтобы вы, наши читатели Хабра, могли легко их использовать в своих проектах и стартапах. Сегодня мы решили пойти дальше и представить широкой аудитории фундаментальный математически стройный материал на тему цвета, изложенный простыми словами.
Читать дальше →

О революции в радарах, дедлайнах и выходе в четвертое измерение

Время на прочтение8 мин
Охват и читатели20K
В статьях моих коллег про беспилотные трамваи и тепловозы были упомянуты радары. Они широко применяются в автомобильной отрасли для реализации стандартных функций активной и пассивной безопасности. Решения для высокоавтоматизированных систем управления (включая беспилотный транспорт) требуют более гибких и продвинутых технологий. В Cognitive Pilot радарами занимается специальное подразделение, которое до конца 2019 года работало как Design House, выпуская по контрактной модели решения для автопроизводителей и поставщиков компонентов. Сейчас мы переходим на новую бизнес-модель и готовим к серийному производству линейку радаров для широкого круга заказчиков — от проектов DIY до стартапов и опытных парков. На базе использующихся в проектах Cognitive Pilot решений будут созданы готовые продукты для пользователей, которые можно условно разделить на 3 категории: «MiniRadar», «Industrial» и «Imaging 4D». Подобные устройства активно применяются в самых разных отраслях, поэтому стоит рассказать о них подробнее.


Читать дальше →

Эволюция паспортного сканера: от фанерной поделки к реальному бизнесу

Время на прочтение5 мин
Охват и читатели4.9K
Привет, Хабр! Сейчас, когда каждый из нас послушно сидит на самоизоляции, мы искренне скучаем по офису, разработке и изобретательству. Помимо софта мы в Smart Engines изобретаем сканирующие программно-аппаратные комплексы (кстати, мы ранее про это писали тут и тут). Наши ранние статьи были скорее похожи на статью из журнала «Очумелые ручки», где рассказывалось как из подручных материалов сделать что-то полезное и высокотехнологичное. Сегодня речь пойдет о другом. Мы решили поделиться с вами историей о том, как фанерную коробочку со сканером мы довели до полноценного продукта, который успешно продается на рынке.


Как мы используем алгоритмы компьютерного зрения: обработка видео в мобильном браузере с помощью OpenCV.js

Время на прочтение7 мин
Охват и читатели4.8K
Для идентификации личности онлайн уже есть все возможности, но пока их применяют крайне редко. Пожалуй, одними из первых мы реализовали оптимальный сценарий для пользователя – зайти на сайт со смартфона, сфотографировать свои водительские права или паспорт и отправить данные в систему.

Рассмотрим, как алгоритмы компьютерного зрения помогают распознавать документы в видеопотоке прямо в браузерах мобильных устройств. В статье делимся опытом, как мы в SimbirSoft использовали для этого OpenCV.js, какие возможны сложности, как обеспечить быстродействие и получить «гладкий» UX без подтормаживания.


Читать дальше →

Пробел не так прост как кажется

Время на прочтение3 мин
Охват и читатели6.3K
Всем привет! Как вы уже знаете, мы в SE занимаемся распознаванием текста (и не только) на разных документах. Сегодня мы хотели бы рассказать еще об одной проблеме при распознавании текста на сложных фонах — о распознавании пробелов. Вообще, мы будем говорить об имени на банковских картах, но для начала пример с «призраком» буквы Ё. Как видите, тут справа от D искажения и фон сформировали достаточно четкую Ё. При этом, если показать эту ячейку отдельно от всего остального, человек (или нейронная сеть) уверенно скажет, что буква есть.


Читать дальше →

Как обрабатывать спутниковые снимки с помощью Sen2Cor

Время на прочтение15 мин
Охват и читатели18K
Sen2Cor — программа для обработки снимков, сделанных со спутника Sentinel-2. В статье рассказывается, как установить, запустить и настроить её.

Спутниковый снимок до и после обработки с помощью Sen2Cor
Читать дальше →

MASK-RCNN для поиска крыш по снимкам с беспилотников

Время на прочтение11 мин
Охват и читатели9.2K

В белом-белом городе на белой-белой улице стояли белые-белые дома… А как быстро вы можете найти все крыши домов на этой фотографии?

Все чаще можно слышать про планы правительства провести полную инвентаризацию объектов недвижимости с целью уточнения кадастровых данных. Для первичного решения этой задачи можно применить простой способ, основанный на расчете площади крыш капитальных строений по аэрофотоснимкам и дальнейшее сопоставление с кадастровыми данными. К сожалению, ручной поиск и расчет занимает много времени, а поскольку новые дома сносятся и строятся непрерывно, то расчет требуется повторять снова и снова. Сразу возникает гипотеза, что этот процесс можно автоматизировать с помощью  алгоритмов машинного обучения, в частности, Computer Vision. В этой статье я расскажу о том, как мы в «НОРБИТ» решали эту задачу и с какими сложностями столкнулись.
Читать дальше →

Алгоритм распознавания номера на изображении с низкой вероятностью ошибки второго рода

Время на прочтение6 мин
Охват и читатели10K
image

В индустрии существует целый ряд кейсов, требующих распознавания номера по фотографии
(scene number recognition). Часто требуемым условием для алгоритма распознавания является низкое значение ошибки второго рода, а именно случаи, когда распознается неверный номер. В качестве примера таких задач можно привести:


  1. Распознавание номера на скидочных, банковских картах, рисунок 1.
  2. Распознавание номера автомобиля, рисунок 2.

image

Рисунок 1 – Карта лояльности
Рисунок 2 – Изображение, содержащее регистрационный номер в низком качестве


Среди проблем, связанных с распознаванием номера, можно выделить:


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

Задача


Разработать алгоритм распознавания номера на изображении (scene number recognition) при обязательном условии: ошибка второго рода должна быть не больше 0.03.

Читать дальше →

Интерполяция и дискретизация, зачем они нужны при проективном преобразовании изображения?

Время на прочтение9 мин
Охват и читатели20K
Привет, Хабр! Сегодня мы очень подробно расскажем о неочевидных моментах в такой, казалось бы, простой операции: исправлении проективных искажений на изображении. Как это часто оказывается в жизни, нам пришлось выбирать, что важнее: качество или скорость. И чтобы достичь некого баланса мы вспомнили об алгоритмах, которые активно исследовали еще в 80-90-е годы в рамках задачи рендеринга структур, и с тех пор редко вспоминали в контексте обработки изображений. Если интересно, заглядывайте под кат!



Читать дальше →

Простой подход к работе с отзывчивыми изображениями

Время на прочтение10 мин
Охват и читатели24K
Спецификация по отзывчивым изображениям — это фантастический документ, в котором описано множество вариантов использования таких изображений. Но опыт подсказывает мне, что чаще всего при работе с ними нужно знать лишь о том, как отдавать клиенту копии одного и того же изображения разного размера, выбирая их в зависимости от ширины области просмотра страницы. Мы называем это «переключением разрешения». Для решения этой задачи можно воспользоваться атрибутами srcset и sizes.

Вывод отзывчивых изображений предусматривает применение достаточно сложной логики. Сюда, кроме прочего, входит определение того, изображение какого размера будет выведено, а также выяснение того, работает ли пользователь с экраном высокого разрешения. К счастью, браузеры лучше, чем люди, умеют определять то, какие именно изображения лучше всего подходят каждому конкретному пользователю. Всё, что нам нужно — это дать им некоторые подсказки. Атрибут srcset даёт браузеру список графических ресурсов, из которых он может выбирать наиболее подходящее изображение. Атрибут sizes позволяет сообщить браузеру о том, изображение какого размера нужно показать в том или ином случае.



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

Автоматизация выявления модификаций в образе договорных документов с помощью модели N-грамм

Время на прочтение12 мин
Охват и читатели2.3K


Каждый современный человек знает о том, что подписывать какой-либо документ нужно не раньше, чем его прочитал. Нарушившие это несложное правило иногда удивляются неожиданным последствиям, которых можно было бы избежать, если до подписания изучить документа, включая то, что написано мелким шрифтом. Уловки в договорах со стороны поставщиков услуг используются как составная часть анекдотов и кинофильмов. Например, в фильме «Ослеплённый желаниями» главный герой расторг весьма невыгодную сделку с дьяволом, несмотря на незнание условий расторжения договора, описанного в статье 147, параграфа 3, 3-ей части договора. Подобная ситуация иногда возможна в реальной жизни с поставщиками услуг. В интернете можно найти описание курьёзных случаев, когда клиент банка изменил условия договора в свою пользу, и это явилось неожиданностью для банка. В сегодняшней статье мы расскажем про крайне полезный для банков и других кредитных организаций алгоритм, позволяющий в автоматическом режиме выявлять внесенные модификации в образах договорных документов. Так что заглядывайте под кат!
Читать дальше →

Имитация рисования от руки на примере RoughJS

Время на прочтение8 мин
Охват и читатели12K
RoughJS это маленькая (<9 КБ) графическая библиотека JavaScript, позволяющая рисовать в эскизном, рукописном стиле. Она позволяет рисовать на <canvas> и с помощью SVG. В этом посте я хочу ответить на самый популярный вопрос о RoughJS: как это работает?


Немного истории


Очарованный изображениями рукописных графиков, схем и эскизов, я, как истинный нерд, задался вопросом: можно ли создавать такие рисунки с помощью кода, как можно точнее имитировать рисунок от руки, в то же время сохранив возможность программной реализации? Я решил сосредоточиться на примитивах — линиях, многоугольниках, эллипсах и кривых, чтобы создать целую библиотеку 2D-графики. На её основе можно создавать библиотеки и графики для рисования графиков и схем.

Вкратце изучив вопрос, я нашёл статью Джо Вуда и его коллег под названием Sketchy rendering for information visualization. Описанные в ней техники стали основой библиотеки, особенно в рисовании линий и эллипсов.

В 2017 году я написал первую версию библиотеки, которая работала только на Canvas. Решив задачу, я потерял к ней интерес. Год спустя я много работал с SVG, и решил адаптировать RoughJS для работы с SVG. Также я изменил структуру API, сделав её более простой, и сосредоточился на простых векторных графических примитивах. Я рассказал о версии 2.0 на Hacker News и внезапно она обрела огромную популярность. В 2018 году это был второй по популярности пост ShowHN.
Читать дальше →

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

Время на прочтение8 мин
Охват и читатели5.1K

Привет Хабр! Сегодня снова поговорим про распознавание. А именно, про такую простую модель распознавателя как каскадный классификатор. Именно каскад используется в популярном методе Виолы и Джонса, про который уже так много раз писали на Хабре (например, здесь, здесь и здесь). Грусть в том, что несмотря на обилие статей, всерьез каскадные классификаторы никто не изучал. И не только на Хабре, но и научном сообществе. Хотя каскадный классификатор кажется простым, там достаточно много подводных камней и интересных особенностей. Поэтому мы спешим поделиться с вами своими знаниями. Так что, если интересно, добро пожаловать под кат.
Читать дальше →

Ближайшие события

Аугментация на лету — важный инструмент в обучении нейронных сетей

Время на прочтение7 мин
Охват и читатели21K

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


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



 

Читать дальше →

Как мы написали крутейший в мире автопилот для маневрового тепловоза

Время на прочтение8 мин
Охват и читатели35K
image
Один из ранних прототипов, использовавшихся для тестов.

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

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

Там проблема в том, что движение тепловоза регламентируется множеством сигналов, положениями людей и объектов инфраструктуры, а также командами диспетчера. Машинист должен оставаться предельно внимательным всю смену (примерно 12 часов), в том числе и ночью. В результате он рано или поздно либо пропускает что-то и попадает в аварию, либо кого-то сбивает. Это жизнь, травмы на транспорте случаются, но конкретно в этих ситуациях можно позволить себе ставить на тепловозы радары, потому что встаёт не просто один тепловоз, а целое крупное предприятие. Надолго. Предотвращение столкновений и автопилот могут сильно снизить нагрузку на человека в кабине, и тогда производства не будут вставать.

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

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

Время на прочтение7 мин
Охват и читатели9.9K
Наверное, вам всю жизнь было очень интересно, как натренировать нейронную сеть распознавать людей в касках и оранжевых жилетах! Нет? Но мы все равно расскажем.

Нас зовут Татьяна Воронова и Эльвира Дяминова. Мы занимаемся анализом данных в компании «Центр 2М», много работаем с самыми настоящими заводами и предприятиями. Из-за нарушений техники безопасности они терпят многомиллионные убытки, работники получают травмы, поэтому хорошо бы уметь детектировать такие нарушения системно и как можно раньше. Лучше всего – автоматически. Так у нас появляются задачи, связанные с распознаванием на видео средств индивидуальной защиты (СИЗ) и определением людей или техники в опасной зоне.

image

По большей части к нам приходят заказы на определение касок (точнее, их отсутствие) и спецодежды. Мы уже накопили опыт в выполнении подобных задач и теперь можем описать проблемы, с которыми столкнулись, и способы их решения.
Читать дальше →

Алгоритмы пост-обработки результатов распознавания текстовых полей

Время на прочтение10 мин
Охват и читатели2.7K

(изображение взято отсюда)

Сегодня мы бы хотели вам рассказать о задаче пост-обработки результатов распознавания текстовых полей исходя из априорных знаний о поле. Ранее мы уже писали про метод коррекции полей на основе триграмм, который позволяет исправлять некоторые ошибки распознавания слов, написанных на естественных языках. Однако значительную часть важных документов, в том числе документов, удостоверяющих личность, составляют поля другого характера – даты, номера, VIN-коды автомобилей, номера ИНН и СНИЛС, машинно-читаемые зоны с их контрольными суммами и многое другое. Хотя их нельзя отнести к полям естественного языка, тем не менее у таких полей зачастую существует некоторая, иногда неявная, языковая модель, а значит, для них тоже можно применить некоторые алгоритмы коррекции. В этом посте речь пойдет об двух механизмах пост-обработки результатов распознавания, которые можно применять для большого количества документов и типов полей.
Читать дальше →

Определение параметров трансформации облака точек

Время на прочтение3 мин
Охват и читатели4.2K

Постановка задачи


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


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



Рис. 1 Пример облака точек, к которому применен поворот на 15 градусов, и смещение по оси Х: 10, по оси Y: 30


Читать дальше →

Распознавание документов и лиц: объединение во имя свободы или шаг к цифровой диктатуре?

Время на прочтение6 мин
Охват и читатели4.5K

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


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


iStock​ OJO_Images
Читать дальше →

Object Detection. Распознавай и властвуй. Часть 2

Время на прочтение9 мин
Охват и читатели31K

В прошлом посте я начал разбираться в двухступенчатых Object Detection моделях и рассказал о самой базовой и, соответственно, первою из них – R-CNN. Сегодня мы рассмотрим другие модели этого семейства: Fast R-CNN и Faster R-CNN. Поехали!
Читать дальше →