Функция распознавания изображения. Image Processing Toolbox. Краткий курс теории обработки изображений.И.М.Журавель. Google рекрутирует специалистов в области искусственного интеллекта и распознавания изображений

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

Сегодня одним из прогрессивных методов защиты признан трекер – следящее устройство, которое позволяет наблюдать в режиме реального времени за дислокацией машины. Разумеется, от угона он не спасет, но на случай, если тот все же произойдет, выследить и вернуть машину с ГЛОНАСС GPS трекером своими руками даже без участия полиции – дело нескольких минут. Без него, в свою очередь, шансы мизерны и стремятся к нулю.

Почему возникает идея сделать ГЛОНАСС GPS трекер своими руками

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

  • Кроме стартовой цены нужно ежемесячно выкладывать определенную сумму на содержание трекера в качестве абонплаты «провайдеру» (по совместительству – и продавцу). Эта сумма не настолько велика, чтобы можно было назвать ее «неподъемной», но все же ощутима.
  • Большинство моделей нужно подключать к аккумулятору, что делает в руках умелого вора беззащитным не только трекер, но и все, что находится внутри машины, не говоря о ней самой. Достаточно отключить источник питания в таких трекерах, и сигнал от них пропадет, открывая преступнику путь к бегству с добычей.
  • Поскольку трекеры не так хорошо распространены, большинство автолюбителей, привыкших полагаться на мнение друзей, смотрят на устройство без доверия. В то же время, зная ситуацию на рынке, некоторые производители подделывают качественные бренды, о которых в итоге создается негативное впечатление у тех, кто пытался сэкономить.

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

Преимущества ГЛОНАСС GPS трекера, сделанного своими руками

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

  • Прежде всего, стоимость прибора оказывается на порядок ниже рыночной. В отдельных случаях он может выйти и вовсе бесплатным – например, если в мастерской списывают в утиль пригодные для трекера запчасти.
  • ГЛОНАСС GPS трекер своими руками будет точно соответствовать потребностям пользователя, а также может быть легко модифицирован при смене обстоятельств.
  • Самоделка наверняка не будет содержать скрытых дефектов заводского брака, которые проявляются в самый неподходящий момент.

Недостатки ГЛОНАСС GPS трекеров, изготовленных своими руками

Увы, как и у всего, у этого метода есть свои недостатки:

  • Качество устройства напрямую зависит от уровня мастера-пайщика; если тот не работал непосредственно на производстве трекеров, он может не знать некоторых тонкостей, и тем самым «завалить» работу, независимо от того, сколько труда и умений в нее вложено.
  • Гарантии на самоделки по понятным причинам не существует. Но важен не сам этот факт, а то, что в случае каких-либо неполадок или даже «осечке» в работе предъявить претензии можно будет лишь собственному паяльному набору.
  • Наконец, лишь самые опытные профессионалы могут понять, как изготовить ГЛОНАСС GPS трекер своими руками без готовой схемы. Готовых решений, к сожалению, не найти в открытом доступе, а если вдруг принципиальные устройства встретятся – без навыков базового программирования там не обойтись.

Решение, избавляющее от необходимости делать ГЛОНАСС GPS трекер своими руками

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

Этот навигатор выгодно отличается не только демократичной ценой, но и множеством прочих достоинств, которыми не может похвастать большинство следящих устройств:

  • ГЛОНАСС GPS трекеры, сделанные своими руками, обычно довольно громоздки и неуклюжи на вид. Но наше устройство помещено в изящный миниатюрный корпус размером немногим больше пластиковой банковской карточки.
  • Как и в случае с самодельными приборами, никакой абонплаты прибору не потребуется – содержать нужно только СИМ-карту, которую перед началом работы следует вставить в устройство. При выгодно подобранном тарифе траты могут становиться совсем символическими, вплоть до совершенно бесплатного обеспечения.
  • Аккумуляторы – важный фактор любой модели следящего устройства; энергоемкий ГЛОНАСС GPS трекер своими руками сделать не удастся никому хотя бы по той причине, что для коммутации с подходящими аккумуляторами нужно лабораторное оборудование. Но и подключать, как устаревшие платные модели, к автомобильному аккумулятору этот прибор не нужно. Встроенная батарея работает рекордно долгое время – до девяти месяцев на одной зарядке.

Возможности, которых не даст ГЛОНАСС GPS трекер, изготовленный своими руками

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

  • Прежде всего, мобильность и малые габариты дают возможность следить за машиной совершенно незаметно и без предварительных монтажных работ. Этим охотно пользуются различные транспортные компании для того, чтобы отслеживать маршруты подведомственных юнитов, а заодно проверять водителей в вопросах расходов ГСМ.
  • ГЛОНАСС GPS трекер своими руками – это хобби, но когда дело доходит до профессиональных вопросов вроде промышленного шпионажа, эксперименты неуместны. Между тем, тайная слежка за кем бы то ни было – от частных лиц до целых корпораций – это один из самых распространенных способов применения маяка. Достаточно спрятать его в машине, одежде или сумке исследуемого субъекта, и вы получите исчерпывающую информацию обо всех его перемещениях.
  • С помощью трекеров можно наблюдать также и за близкими. В данной модели представлена функция, которую практически невозможно реализовать собственноручно, а именно – «тревожная кнопка», расположенная прямо на корпусе прибора. Всего одно нажатие, и на ваш телефон придет «SOS-уведомление» с привязанными гео-координатами.
  • Наконец, с помощью маяка можно отслеживать даже перемещение вещей – например, посылок в почтовых компаниях или багажа в аэропортах. В последнем случае, к слову, может возникнуть немало вопросов к тому, что представляет собой произведенный ГЛОНАСС GPS трекер своими руками. Чтобы не попасть впросак, лучше пользоваться фирменными устройствами.

Закажите ГЛОНАСС GPS трекер вместо пайки своими руками прямо сейчас

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

Если вы планируете спаять ГЛОНАСС GPS трекер своими руками ради развлечения – попытайтесь, но когда речь заходит о безопасности – не стоит рисковать. Поступайте мудро и выбирайте для себя только самое лучшее.

ГЛОНАСС GPS трекер своими руками – лайфхак для избранных

  • Tutorial

Давно хотел написать общую статью, содержащую в себе самые основы Image Recognition, некий гайд по базовым методам, рассказывающий, когда их применять, какие задачи они решают, что возможно сделать вечером на коленке, а о чём лучше и не думать, не имея команды человек в 20.

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

Эта статья задумана для того, чтобы человек, который никогда не занимался методами распознавания изображений, смог в течении 10-15 минут создать у себя в голове некую базовую картину мира, соответствующую тематике, и понять в какую сторону ему копать. Многие методы, которые тут описаны, применимы к радиолокации и аудио-обработке.
Начну с пары принципов, которые мы всегда начинаем рассказывать потенциальному заказчику, или человеку, который хочет начать заниматься Optical Recognition:

  • При решении задачи всегда идти от простейшего. Гораздо проще повесить на персону метку оранжевого цвета, чем следить за человеком, выделяя его каскадами. Гораздо проще взять камеру с большим разрешением, чем разрабатывать сверхразрешающий алгоритм.
  • Строгая постановка задачи в методах оптического распознавания на порядки важнее, чем в задачах системного программирования: одно лишнее слово в ТЗ может добавить 50% работы.
  • В задачах распознавания нет универсальных решений. Нельзя сделать алгоритм, который будет просто «распознавать любую надпись». Табличка на улице и лист текста - это принципиально разные объекты. Наверное, можно сделать общий алгоритм(вот хороший пример от гугла), но это будет требовать огромного труда большой команды и состоять из десятков различных подпрограмм.
  • OpenCV - это библия, в которой есть множество методов, и с помощью которой можно решить 50% от объёма почти любой задачи, но OpenCV - это лишь малая часть того, что в реальности можно сделать. В одном исследовании в выводах было написано: «Задача не решается методами OpenCV, следовательно, она неразрешима». Старайтесь избегать такого, не лениться и трезво оценивать текущую задачу каждый раз с нуля, не используя OpenCV-шаблоны.
Очень сложно давать какой-то универсальный совет, или рассказать как создать какую-то структуру, вокруг которой можно строить решение произвольных задач компьютерного зрения. Цель этой статьи в структуризации того, что можно использовать. Я попробую разбить существующие методы на три группы. Первая группа это предварительная фильтрация и подготовка изображения. Вторая группа это логическая обработка результатов фильтрации. Третья группа это алгоритмы принятия решений на основе логической обработки. Границы между группами очень условные. Для решения задачи далеко не всегда нужно применять методы из всех групп, бывает достаточно двух, а иногда даже одного.

Список приведённых тут методов не полон. Предлагаю в комментариях добавлять критические методы, которые я не написал и приписывать каждому по 2-3 сопроводительных слова.

Часть 1. Фильтрация

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




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

Бинаризация может дать очень интересные результаты при работе с гистограммами, в том числе в ситуации, если мы рассматриваем изображение не в RGB, а в HSV . Например, сегментировать интересующие цвета. На этом принципе можно построить как детектор метки так и детектор кожи человека.
Классическая фильтрация: Фурье, ФНЧ, ФВЧ
Классические методы фильтрации из радиолокации и обработки сигналов можно с успехом применять во множестве задач Pattern Recognition. Традиционным методом в радиолокации, который почти не используется в изображениях в чистом виде, является преобразование Фурье (конкретнее - БПФ). Одно из немногих исключение, при которых используется одномерное преобразование Фурье, - компрессия изображений . Для анализа изображений одномерного преобразования обычно не хватает, нужно использовать куда более ресурсоёмкое двумерное преобразование .

Мало кто его в действительности рассчитывает, обычно, куда быстрее и проще использовать свёртку интересующей области с уже готовым фильтром, заточенным на высокие (ФВЧ) или низкие(ФНЧ) частоты. Такой метод, конечно, не позволяет сделать анализ спектра, но в конкретной задаче видеообработки обычно нужен не анализ, а результат.


Самые простые примеры фильтров, реализующих подчёркивание низких частот (фильтр Гаусса) и высоких частот (Фильтр Габора).
Для каждой точки изображения выбирается окно и перемножается с фильтром того же размера. Результатом такой свёртки является новое значение точки. При реализации ФНЧ и ФВЧ получаются изображения такого типа:



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


Выше приведено 4 примера классических вейвлетов. 3х-мерный вейвлет Хаара, 2х-мерные вейвлет Мейера, вейвлет Мексиканская Шляпа, вейвлет Добеши. Хорошим примером использования расширеной трактовки вейвлетов является задачка поиска блика в глазу, для которой вейвлетом является сам блик:

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

Фильтрации функций
Интересным классом фильтров является фильтрация функций. Это чисто математические фильтры, которые позволяют обнаружить простую математическую функцию на изображении (прямую, параболу, круг). Строится аккумулирующее изображение, в котором для каждой точки исходного изображения отрисовывается множество функций, её порождающих. Наиболее классическим преобразованием является преобразование Хафа для прямых. В этом преобразовании для каждой точки (x;y) отрисовывается множество точек (a;b) прямой y=ax+b, для которых верно равенство. Получаются красивые картинки:


(первый плюсег тому, кто первый найдёт подвох в картинке и таком определении и объяснит его, второй плюсег тому, кто первый скажет что тут изображено)
Преобразование Хафа позволяет находить любые параметризуемые функции. Например окружности . Есть модифицированное преобразование, которое позволяет искать любые фигуры . Это преобразование ужасно любят математики. Но вот при обработке изображений, оно, к сожалению, работает далеко не всегда. Очень медленная скорость работы, очень высокая чувствительность к качеству бинаризации. Даже в идеальных ситуациях я предпочитал обходиться другими методами.
Аналогом преобразования Хафа для прямых является преобразование Радона . Оно вычисляется через БПФ, что даёт выигрыш производительности в ситуации, когда точек очень много. К тому же его возможно применять к не бинаризованному изображению.
Фильтрации контуров
Отдельный класс фильтров - фильтрация границ и контуров . Контуры очень полезны, когда мы хотим перейти от работы с изображением к работе с объектами на этом изображении. Когда объект достаточно сложный, но хорошо выделяемый, то зачастую единственным способом работы с ним является выделение его контуров. Существует целый ряд алгоритмов, решающих задачу фильтрации контуров:

Чаще всего используется именно Кэнни, который хорошо работает и реализация которого есть в OpenCV (Собель там тоже есть, но он хуже ищёт контуры).



Прочие фильтры
Сверху приведены фильтры, модификации которых помогают решить 80-90% задач. Но кроме них есть более редкие фильтры, используемые в локальных задачах. Таких фильтров десятки, я не буду приводить их все. Интересными являются итерационные фильтры (например активная модель внешнего вида), а так же риджлет и курвлет преобразования, являющиеся сплавом классической вейвлет фильтрации и анализом в поле радон-преобразования. Бимлет-преобразование красиво работает на границе вейвлет преобразования и логического анализа, позволяя выделить контуры:

Но эти преобразования весьма специфичны и заточены под редкие задачи.

Часть 2. Логическая обработка результатов фильтрации

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

Если честно, то у меня ни разу ни получилось применить контурный анализ в реальных задачах. Уж слишком идеальные условия требуются. То граница не найдётся, то шумов слишком много. Но, если нужно что-то распознавать в идеальных условиях - то контурный анализ замечательный вариант. Очень быстро работает, красивая математика и понятная логика.
Особые точки
Особые точки это уникальные характеристики объекта, которые позволяют сопоставлять объект сам с собой или с похожими классами объектов. Существует несколько десятков способов позволяющих выделить такие точки. Некоторые способы выделяют особые точки в соседних кадрах, некоторые через большой промежуток времени и при смене освещения, некоторые позволяют найти особые точки, которые остаются таковыми даже при поворотах объекта. Начнём с методов, позволяющих найти особые точки, которые не такие стабильные, зато быстро рассчитываются, а потом пойдём по возрастанию сложности:
Первый класс. Особые точки, являющиеся стабильными на протяжении секунд. Такие точки служат для того, чтобы вести объект между соседними кадрами видео, или для сведения изображения с соседних камер. К таким точкам можно отнести локальные максимумы изображения, углы на изображении (лучший из детекторов, пожалуй, детектор Хариса), точки в которых достигается максимумы дисперсии, определённые градиенты и.т.д.
Второй класс. Особые точки, являющиеся стабильными при смене освещения и небольших движениях объекта. Такие точки служат в первую очередь для обучения и последующей классификации типов объектов. Например, классификатор пешехода или классификатор лица - это продукт системы, построенной именно на таких точках. Некоторые из ранее упомянутых вейвлетов могут являются базой для таких точек. Например, примитивы Хаара, поиск бликов, поиск прочих специфических функций. К таким точкам относятся точки, найденные методом гистограмм направленных градиентов (HOG).
Третий класс. Стабильные точки. Мне известно лишь про два метода, которые дают полную стабильность и про их модификации. Это SURF и SIFT . Они позволяют находить особые точки даже при повороте изображения. Расчёт таких точек осуществляется дольше по сравнению с остальными методами, но достаточно ограниченное время. К сожалению эти методы запатентованы. Хотя, в России патентовать алгоритмы низя, так что для внутреннего рынка пользуйтесь.

Часть 3. Обучение

ретья часть рассказа будет посвящена методам, которые не работают непосредственно с изображением, но которые позволяют принимать решения. В основном это различные методы машинного обучения и принятия решений. Недавно Яндыкс выложил на Хабр курс по этой тематике, там очень хорошая подборка. Вот оно есть в текстовой версии. Для серьёзного занятия тематикой настоятельно рекомендую посмотреть именно их. Тут я попробую обозначить несколько основных методов используемых именно в распознавании образов.
В 80% ситуаций суть обучения в задаче распознавания в следующем:
Имеется тестовая выборка, на которой есть несколько классов объектов. Пусть это будет наличие/отсутствие человека на фотографии. Для каждого изображения есть набор признаков, которые были выделены каким-нибудь признаком, будь то Хаар, HOG, SURF или какой-нибудь вейвлет. Алгоритм обучения должен построить такую модель, по которой он сумеет проанализировать новое изображение и принять решение, какой из объектов имеется на изображении.
Как это делается? Каждое из тестовых изображений - это точка в пространстве признаков. Её координаты это вес каждого из признаков на изображении. Пусть нашими признаками будут: «Наличие глаз», «Наличие носа», «Наличие двух рук», «Наличие ушей», и.т.д… Все эти признаки мы выделим существующими у нас детекторами, которые обучены на части тела, похожие на людские. Для человека в таком пространстве будет корректной точка . Для обезьяны точка для лошади . Классификатор обучается по выборке примеров. Но не на всех фотографиях выделились руки, на других нет глаз, а на третьей у обезьяны из-за ошибки классификатора появился человеческий нос. Обучаемый классификатор человека автоматически разбивает пространство признаков таким образом, чтобы сказать: если первый признак лежит в диапазоне 0.5 По существу цель классификатора - отрисовать в пространстве признаков области, характеристические для объектов классификации. Вот так будет выглядеть последовательное приближение к ответу для одного из классификаторов (AdaBoost) в двумерном пространстве:


Существует очень много классификаторов. Каждый из них лучше работает в какой-то своей задачке. Задача подбора классификатора к конкретной задаче это во многом искусство. Вот немножко красивых картинок на тему.
Простой случай, одномерное разделение
Разберём на примере самый простой случай классификации, когда пространство признака одномерное, а нам нужно разделить 2 класса. Ситуация встречается чаще, чем может представиться: например, когда нужно отличить два сигнала, или сравнить паттерн с образцом. Пусть у нас есть обучающая выборка. При этом получается изображение, где по оси X будет мера похожести, а по оси Y -количество событий с такой мерой. Когда искомый объект похож на себя - получается левая гауссиана. Когда не похож - правая. Значение X=0.4 разделяет выборки так, что ошибочное решение минимизирует вероятность принятия любого неправильного решения. Именно поиском такого разделителя и является задача классификации.


Маленькая ремарка. Далеко не всегда оптимальным будет тот критерий, который минимизирует ошибку. Следующий график - это график реальной системы распознавания по радужной оболочке. Для такой системы критерий выбирается такой, чтобы минимизировать вероятность ложного пропуска постороннего человека на объект. Такая вероятность называется «ошибка первого рода», «вероятность ложной тревоги», «ложное срабатывание». В англоязычной литературе «False Access Rate ».
) АдаБуста - один из самых распространённых классификаторов. Например каскад Хаара построен именно на нём. Обычно используют когда нужна бинарная классификация, но ничего не мешает обучить на большее количество классов.
SVM ( , , , ) Один из самых мощных классификаторов, имеющий множество реализаций. В принципе, на задачах обучения, с которыми я сталкивался, он работал аналогично адабусте. Считается достаточно быстрым, но его обучение сложнее, чем у Адабусты и требуется выбор правильного ядра.

Ещё есть нейронные сети и регрессия. Но чтобы кратко их классифицировать и показать, чем они отличаются, нужна статья куда больше, чем эта.
________________________________________________
Надеюсь, у меня получилось сделать беглый обзор используемых методов без погружения в математику и описание. Может, кому-то это поможет. Хотя, конечно, статья неполна и нет ни слова ни о работе со стереоизображениями, ни о МНК с фильтром Калмана, ни об адаптивном байесовом подходе.
Если статья понравится, то попробую сделать вторую часть с подборкой примеров того, как решаются существующие задачки ImageRecognition.

И напоследок

Что почитать?
1) Когда-то мне очень понравилась книга «Цифровая обработка изображений» Б. Яне, которая написана просто и понятно, но в то же время приведена почти вся математика. Хороша для того, чтобы ознакомиться с существующими методами.
2) Классикой жанра является Р Гонсалес, Р. Вудс " Цифровая обработка изображений ". Почему-то она мне далась сложнее, чем первая. Сильно меньше математики, зато больше методов и картинок.
3) «Обработка и анализ изображений в задачах машинного зрения» - написана на базе курса, читаемого на одной из кафедр ФизТеха. Очень много методов и их подробного описания. Но на мой взгляд в книге есть два больших минуса: книга сильно ориентирована на пакет софта, который к ней прилагается, в книге слишком часто описание простого метода превращается в математические дебри, из которых сложно вынести структурную схему метода. Зато авторы сделали удобный сайт, где представлено почти всё содержание - wiki.technicalvision.ru Добавить метки
Что такое технология распознавания изображений? Распознавание изображений (некоторые также называют «компьютерным зрением») это технология, которая создана получать, обрабатывать, анализировать, и понимать изображения реального мира, с целью предоставить цифровую или символьную информацию. Что вы сказали? Не беспокойтесь. Мы понимаем, что это сложно. Позвольте перефразировать: когда вы загружаете свою фотографию, или фотографию ваших друзей на Facebook, все лица будут распознаны и пользователи будут автоматически отмечены: это и называется распознаванием изображений. Хорошо, это звучит намного понятнее Прекрасно! Потому что сейчас будет еще сложнее… Компьютерное зрение – очень широкая область компьютерных наук, так как сюда вовлечено множество аспектов, таких как машинное обучение, интеллектуальный анализ данных, расширение базы знаний, распознавание шаблонов, и другие. Исследования в данной области привели к технологиям, которые имитируют человеческое зрение. И для того, чтобы создать программное обеспечение, способное видеть, вам для начала понадобится пара линз. Что вы имеете в виду? Я имею в виду, что для того, чтобы обработать изображение, вам для начала нужно его снять с помощью камеры. Затем, программное обеспечение извлекает из него необходимую информацию, и после этого, совершает действия, основываясь на полученных данных. До недавних пор, цифровые камеры были неприлично дорогими, имели очень низкое разрешение, и распознавание изображений было невозможно совершать в режиме реального времени. Но с приходом мобильных телефонов и высокоскоростных камер, возможности стали безграничны. Например, знали ли вы, что несколько лет назад Японская компания создала робота, который мог играть в «камень, ножницы, бумага» и побеждать в 10 из 10 случаях. Это невозможно… Я так не думаю. Вот ссылка на это видео. Робот использует высокоскоростные камеры для распознавания движения руки человека. Анализируя шаблоны движения руки со скоростью 500 кадров в секунду, робот способен немедленно реагировать в ответ, и в результате выигрывать. Чтобы этого добиться, камера захватывает изображение очертаний руки, формирует объект и отравляет информацию программному обеспечению, которое распознает шаблон и генерирует реакцию робота в ответ. Объект руки человека формируется 60 мс, и затем робот выполняет все вышеперечисленное за 1 мс. Хорошо, но я думал, что речь пойдет о мобильных … Не беспокойтесь, мы дойдем и до этого. Одной из самых вызывающих и перспективных областей является обработка и распознавание изображений для имитации человеческого зрения: восприятия изображения, обработки и дальнейшей реакции. Это именно то, что делает робот на предыдущем примере: он воспринимает изображение путем захвата картинки, понимает, что делает человек, и реагирует, выполняя ответный ход. Конечно, мы, разработчики программного обеспечения, более заинтересованы в той части программы, где происходит распознавание шаблона. Так как же воспринимающая часть на самом деле работает? Ответ весьма прост - «математика». Самое важное направление в алгоритмах распознавания шаблонов - вероятностная классификация. Когда изображение сравнивается с набором других сохраненных изображений, задается значение (вероятность) для каждого другого изображения, с которым оно совпадает. Комбинируя несколько алгоритмов вероятностных классификаций, которые применяются к тому же набору изображений, называемых «ансамблем», предоставляется итоговая оценка для каждого изображения, которая затем используется программой для предположения, на какие изображение это похоже. Как вы могли представить, это довольно сложно для мобильного устройства. Вы можете подумать, что мощность процессора является проблемой. Так и есть! И самое тонкое место - база данных изображений, с которыми сравнивается оригинал. На примере робота, о котором уже говорилось, Вы можете иметь только ограниченное количество изображений (камень, ножницы, бумага), с которыми можно работать, но в примере с распознаванием изображений в Facebook, невозможно сохранять лица каждого человека, кто зарегистрирован в социальной сети на мобильном устройстве (это не совсем тот способ, по которому работает данная функция; Facebook сохраняет уникальный хэш для каждого человека, используя определенные характеристики лица как основу, но пример был предоставлен исключительно для того, чтоб объяснить идею). Чтоб решить эту и другие проблемы, распознавание изображений обычно выполняется на стороне сервера, где процессорная мощность, либо место для хранения данных не представляет проблем. Мобильные устройства могут просто отправлять изображение, и нейронная сеть или оборудование обработают запрос. Одну минуту! Я видел, как это работает на мобильных устройствах без соединения с интернетом Да, но тут только часть правды. Мобильному устройству все еще необходимо отправлять изображения на сервер, также как и серверу необходимо хранить их. Как только изображения окажутся там, сервер обработает изображение, сгенерирует намного меньший хэш, и вернет обратно в приложение. И затем, к примеру, вы можете зайти в режим полета и увидеть изображение на камере телефона, сравнение будет сделано в режиме оффлайн. Спасибо за все эти объяснения. Теперь поговорим о деле А, так вы хотите знать, как применить распознавание изображений на деле? Конечно, для вас не станет сюрпризом, что у распознавания изображений есть потенциал произвести революцию во всем мире. В области здравоохранения, например, IBM начали использовать технологию распознавания изображений для обработки большого количества медицинских данных. Это может помочь врачам диагностировать болезни быстрее и с большей точностью. Baidu разработали прототип DuLight: продукт для распознавания объектов, который поможет слепым «видеть» с помощью снимков всего, что их окружает и передавая обработанные данные через наушник. Однако, на продукцию в области искусственного интеллекта обычно налагаются этические и законодательные ограничения. Возьмем, к примеру, автомобильную индустрию и беспилотные автомобили от Google. Технология готова, но предстоит еще долгий процесс, прежде чем эти машины появятся на рынке. Хорошо, но я не планирую строить беспилотный автомобиль – что может технология распознавания изображений дать моему бизнесу? Честно говоря, многое! Существует множество мелкомасштабных методов применения технологии распознавания изображений для получения преимуществ. Так как мы говорим о мобильных устройствах, давайте рассмотрим некоторые примеры использования технологии распознавания изображений в мобильной связи. Одним из крупнейших игроков в этой области является Blippar: платформа для визуального обнаружения, которая позволяет пользователям сканировать объекты и получать их описание, что делает физический мир интерактивным игровым полем. Для любителей растений существует LeafSnap, для любителей вина - Delectable. Но существуют и такие маркетинговые компании, такие как Makeup Genius, TrackMyMaccas, и SnapFindShop, на которые стоит взглянуть. Эти брэнды применяют распознавание изображений для изучения социального обмена и привлечения пользователей. Так вы говорите, что технология распознавания изображений может помочь мне привлечь клиентов? Так как мы говорим о мобильных технологиях, слово «привлечение» так или иначе, всплыло бы в течение разговора. Мир приложений вращается вокруг привлечения пользователей: если вы не преуспели в этом, то есть шанс, что пользователь просто никогда не вернется к использованию вашего приложения. Распознавание изображений даст вашему приложению огромные возможности для расширения, поскольку технология позволит Вам выйти за пределы мобильного устройства в физический мир пользователя. Ваше приложение сможет предоставить что-то более материальное, что позволит создать сильную эмоциональную связь. И так как эмоции тесно связаны с памятью, у вас есть шанс создать незабываемое впечатление о Вашем бизнесе. http://www.softacom.ru/ru_imagesrecognition

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

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

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

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

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

2. Предварительная обработка. Удаление шумов, нормализация для сравнения с эталоном, сегментация (выделение локальной информации, необходимой для распознавания) и т. п.

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

4. Понимание и оценка. Процессом понимания изображения

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

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

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

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

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

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

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

  • Tutorial

Давно хотел написать общую статью, содержащую в себе самые основы Image Recognition, некий гайд по базовым методам, рассказывающий, когда их применять, какие задачи они решают, что возможно сделать вечером на коленке, а о чём лучше и не думать, не имея команды человек в 20.

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

Эта статья задумана для того, чтобы человек, который никогда не занимался методами распознавания изображений, смог в течении 10-15 минут создать у себя в голове некую базовую картину мира, соответствующую тематике, и понять в какую сторону ему копать. Многие методы, которые тут описаны, применимы к радиолокации и аудио-обработке.
Начну с пары принципов, которые мы всегда начинаем рассказывать потенциальному заказчику, или человеку, который хочет начать заниматься Optical Recognition:

  • При решении задачи всегда идти от простейшего. Гораздо проще повесить на персону метку оранжевого цвета, чем следить за человеком, выделяя его каскадами. Гораздо проще взять камеру с большим разрешением, чем разрабатывать сверхразрешающий алгоритм.
  • Строгая постановка задачи в методах оптического распознавания на порядки важнее, чем в задачах системного программирования: одно лишнее слово в ТЗ может добавить 50% работы.
  • В задачах распознавания нет универсальных решений. Нельзя сделать алгоритм, который будет просто «распознавать любую надпись». Табличка на улице и лист текста - это принципиально разные объекты. Наверное, можно сделать общий алгоритм( хороший пример от гугла), но это будет требовать огромного труда большой команды и состоять из десятков различных подпрограмм.
  • OpenCV - это библия, в которой есть множество методов, и с помощью которой можно решить 50% от объёма почти любой задачи, но OpenCV - это лишь малая часть того, что в реальности можно сделать. В одном исследовании в выводах было написано: «Задача не решается методами OpenCV, следовательно, она неразрешима». Старайтесь избегать такого, не лениться и трезво оценивать текущую задачу каждый раз с нуля, не используя OpenCV-шаблоны.
Очень сложно давать какой-то универсальный совет, или рассказать как создать какую-то структуру, вокруг которой можно строить решение произвольных задач компьютерного зрения. Цель этой статьи в структуризации того, что можно использовать. Я попробую разбить существующие методы на три группы. Первая группа это предварительная фильтрация и подготовка изображения. Вторая группа это логическая обработка результатов фильтрации. Третья группа это алгоритмы принятия решений на основе логической обработки. Границы между группами очень условные. Для решения задачи далеко не всегда нужно применять методы из всех групп, бывает достаточно двух, а иногда даже одного.

Список приведённых тут методов не полон. Предлагаю в комментариях добавлять критические методы, которые я не написал и приписывать каждому по 2-3 сопроводительных слова.

Часть 1. Фильтрация

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




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

Бинаризация может дать очень интересные результаты при работе с гистограммами, в том числе в ситуации, если мы рассматриваем изображение не в RGB, а в HSV . Например, сегментировать интересующие цвета. На этом принципе можно построить как детектор метки так и детектор кожи человека.
Классическая фильтрация: Фурье, ФНЧ, ФВЧ
Классические методы фильтрации из радиолокации и обработки сигналов можно с успехом применять во множестве задач Pattern Recognition. Традиционным методом в радиолокации, который почти не используется в изображениях в чистом виде, является преобразование Фурье (конкретнее - БПФ). Одно из немногих исключение, при которых используется одномерное преобразование Фурье, - компрессия изображений . Для анализа изображений одномерного преобразования обычно не хватает, нужно использовать куда более ресурсоёмкое двумерное преобразование .

Мало кто его в действительности рассчитывает, обычно, куда быстрее и проще использовать свёртку интересующей области с уже готовым фильтром, заточенным на высокие (ФВЧ) или низкие(ФНЧ) частоты. Такой метод, конечно, не позволяет сделать анализ спектра, но в конкретной задаче видеообработки обычно нужен не анализ, а результат.


Самые простые примеры фильтров, реализующих подчёркивание низких частот (фильтр Гаусса) и высоких частот (Фильтр Габора).
Для каждой точки изображения выбирается окно и перемножается с фильтром того же размера. Результатом такой свёртки является новое значение точки. При реализации ФНЧ и ФВЧ получаются изображения такого типа:



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


Выше приведено 4 примера классических вейвлетов. 3х-мерный вейвлет Хаара, 2х-мерные вейвлет Мейера, вейвлет Мексиканская Шляпа, вейвлет Добеши. Хорошим примером использования расширеной трактовки вейвлетов является задачка поиска блика в глазу, для которой вейвлетом является сам блик:

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

Фильтрации функций
Интересным классом фильтров является фильтрация функций. Это чисто математические фильтры, которые позволяют обнаружить простую математическую функцию на изображении (прямую, параболу, круг). Строится аккумулирующее изображение, в котором для каждой точки исходного изображения отрисовывается множество функций, её порождающих. Наиболее классическим преобразованием является преобразование Хафа для прямых. В этом преобразовании для каждой точки (x;y) отрисовывается множество точек (a;b) прямой y=ax+b, для которых верно равенство. Получаются красивые картинки:


(первый плюсег тому, кто первый найдёт подвох в картинке и таком определении и объяснит его, второй плюсег тому, кто первый скажет что тут изображено)
Преобразование Хафа позволяет находить любые параметризуемые функции. Например окружности . Есть модифицированное преобразование, которое позволяет искать любые . Это преобразование ужасно любят математики. Но вот при обработке изображений, оно, к сожалению, работает далеко не всегда. Очень медленная скорость работы, очень высокая чувствительность к качеству бинаризации. Даже в идеальных ситуациях я предпочитал обходиться другими методами.
Аналогом преобразования Хафа для прямых является преобразование Радона . Оно вычисляется через БПФ, что даёт выигрыш производительности в ситуации, когда точек очень много. К тому же его возможно применять к не бинаризованному изображению.
Фильтрации контуров
Отдельный класс фильтров - фильтрация границ и контуров . Контуры очень полезны, когда мы хотим перейти от работы с изображением к работе с объектами на этом изображении. Когда объект достаточно сложный, но хорошо выделяемый, то зачастую единственным способом работы с ним является выделение его контуров. Существует целый ряд алгоритмов, решающих задачу фильтрации контуров:

Чаще всего используется именно Кэнни, который хорошо работает и реализация которого есть в OpenCV (Собель там тоже есть, но он хуже ищёт контуры).



Прочие фильтры
Сверху приведены фильтры, модификации которых помогают решить 80-90% задач. Но кроме них есть более редкие фильтры, используемые в локальных задачах. Таких фильтров десятки, я не буду приводить их все. Интересными являются итерационные фильтры (например ), а так же риджлет и курвлет преобразования, являющиеся сплавом классической вейвлет фильтрации и анализом в поле радон-преобразования. Бимлет-преобразование красиво работает на границе вейвлет преобразования и логического анализа, позволяя выделить контуры:

Но эти преобразования весьма специфичны и заточены под редкие задачи.

Часть 2. Логическая обработка результатов фильтрации

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

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

Часть 3. Обучение

ретья часть рассказа будет посвящена методам, которые не работают непосредственно с изображением, но которые позволяют принимать решения. В основном это различные методы машинного обучения и принятия решений. Недавно Яндыкс выложил на Хабр по этой тематике, там очень хорошая подборка. Вот оно есть в текстовой версии. Для серьёзного занятия тематикой настоятельно рекомендую посмотреть именно их. Тут я попробую обозначить несколько основных методов используемых именно в распознавании образов.
В 80% ситуаций суть обучения в задаче распознавания в следующем:
Имеется тестовая выборка, на которой есть несколько классов объектов. Пусть это будет наличие/отсутствие человека на фотографии. Для каждого изображения есть набор признаков, которые были выделены каким-нибудь признаком, будь то Хаар, HOG, SURF или какой-нибудь вейвлет. Алгоритм обучения должен построить такую модель, по которой он сумеет проанализировать новое изображение и принять решение, какой из объектов имеется на изображении.
Как это делается? Каждое из тестовых изображений - это точка в пространстве признаков. Её координаты это вес каждого из признаков на изображении. Пусть нашими признаками будут: «Наличие глаз», «Наличие носа», «Наличие двух рук», «Наличие ушей», и.т.д… Все эти признаки мы выделим существующими у нас детекторами, которые обучены на части тела, похожие на людские. Для человека в таком пространстве будет корректной точка . Для обезьяны точка для лошади . Классификатор обучается по выборке примеров. Но не на всех фотографиях выделились руки, на других нет глаз, а на третьей у обезьяны из-за ошибки классификатора появился человеческий нос. Обучаемый классификатор человека автоматически разбивает пространство признаков таким образом, чтобы сказать: если первый признак лежит в диапазоне 0.5 По существу цель классификатора - отрисовать в пространстве признаков области, характеристические для объектов классификации. Вот так будет выглядеть последовательное приближение к ответу для одного из классификаторов (AdaBoost) в двумерном пространстве:


Существует очень много классификаторов. Каждый из них лучше работает в какой-то своей задачке. Задача подбора классификатора к конкретной задаче это во многом искусство. Вот немножко красивых картинок на тему.
Простой случай, одномерное разделение
Разберём на примере самый простой случай классификации, когда пространство признака одномерное, а нам нужно разделить 2 класса. Ситуация встречается чаще, чем может представиться: например, когда нужно отличить два сигнала, или сравнить паттерн с образцом. Пусть у нас есть обучающая выборка. При этом получается изображение, где по оси X будет мера похожести, а по оси Y -количество событий с такой мерой. Когда искомый объект похож на себя - получается левая гауссиана. Когда не похож - правая. Значение X=0.4 разделяет выборки так, что ошибочное решение минимизирует вероятность принятия любого неправильного решения. Именно поиском такого разделителя и является задача классификации.


Маленькая ремарка. Далеко не всегда оптимальным будет тот критерий, который минимизирует ошибку. Следующий график - это график реальной системы распознавания по радужной оболочке. Для такой системы критерий выбирается такой, чтобы минимизировать вероятность ложного пропуска постороннего человека на объект. Такая вероятность называется «ошибка первого рода», «вероятность ложной тревоги», «ложное срабатывание». В англоязычной литературе «False Access Rate ».
) АдаБуста - один из самых распространённых классификаторов. Например каскад Хаара построен именно на нём. Обычно используют когда нужна бинарная классификация, но ничего не мешает обучить на большее количество классов.
SVM ( , , , ) Один из самых мощных классификаторов, имеющий множество реализаций. В принципе, на задачах обучения, с которыми я сталкивался, он работал аналогично адабусте. Считается достаточно быстрым, но его обучение сложнее, чем у Адабусты и требуется выбор правильного ядра.

Ещё есть нейронные сети и регрессия. Но чтобы кратко их классифицировать и показать, чем они отличаются, нужна статья куда больше, чем эта.
________________________________________________
Надеюсь, у меня получилось сделать беглый обзор используемых методов без погружения в математику и описание. Может, кому-то это поможет. Хотя, конечно, статья неполна и нет ни слова ни о работе со стереоизображениями, ни о МНК с фильтром Калмана, ни об адаптивном байесовом подходе.
Если статья понравится, то попробую сделать вторую часть с подборкой примеров того, как решаются существующие задачки ImageRecognition.

И напоследок

Что почитать?
1) Когда-то мне очень понравилась книга «Цифровая обработка изображений» Б. Яне, которая написана просто и понятно, но в то же время приведена почти вся математика. Хороша для того, чтобы ознакомиться с существующими методами.
2) Классикой жанра является Р Гонсалес, Р. Вудс " Цифровая обработка изображений ". Почему-то она мне далась сложнее, чем первая. Сильно меньше математики, зато больше методов и картинок.
3) «Обработка и анализ изображений в задачах машинного зрения» - написана на базе курса, читаемого на одной из кафедр ФизТеха. Очень много методов и их подробного описания. Но на мой взгляд в книге есть два больших минуса: книга сильно ориентирована на пакет софта, который к ней прилагается, в книге слишком часто описание простого метода превращается в математические дебри, из которых сложно вынести структурную схему метода. Зато авторы сделали удобный сайт, где представлено почти всё содержание - wiki.technicalvision.ru Добавить метки


Top