Построение признаков и сравнение изображений: глобальные признаки. Лекции от Яндекса
Сегодня мы с вами начнём говорить про то, как можно описывать изображения. То есть до сих пор мы занимались различными задачами в основном, когда нам надо было из изображения получить обратно изображение и что можно сделать с картинкой чтобы как-то её улучшить или видоизменить. С сегодняшнего дня мы начнём говорить о том, как можно изображение описать набором как можно меньшего количества численных каких-то характеристик, т.е. представить в виде числового вектора. При чём, желательно, чтобы этот вектор был желательно как можно меньшего размера и как можно лучше описывал то, что изображено на картинке.Соответственно, зачем может понадобиться описывать картинку в виде такого короткого набора векторов. (Из зала: — Сжатие.). Сжатие — это отдельная тема. Индексация и поиск. Т.е. сравнить изображения друг с другом вместо того, чтобы сравнивать их попиксельно, что не очень удобно, а во-вторых не позволит нам как-то…, т.е. всегда будут какие-то хитрые меры подобия искать, какие-то хитрые метрики для того, чтобы близкие по содержания изображения такие были близкими.
Понятно, что глаз человека не способен различить разницу в одном пикселе. Но, тем не менее, и нам хорошо бы, если мы, допустим, решаем такие задачи как классификация картинок. Если у нас есть какой-то набор меток, к примеру: или это изображения внутреннего помещения — in door — то, что в английской литературе называется, или out door — загородный, или это какой-то пейзаж, закат или всё, что угодно. И мы хотим в одну кучу складывать и одной меткой помечать даже картинки, которые не совпадают полностью, но которые имеют что-то общее друг с дружкой. К примеру, если рассмотреть вот эти вот картинки. (я их попыталась по парам разбить). Понятно, что эти две картинки интуитивно более похожи друг на друга, чем, скажем, вот эти, с трамваями, и вот эта пара тоже более менее похожи, вот эта пара –, но у них есть что-то общее. Т.е. если бы мы, к примеру, решали такие задачи как поиск изображений и в качестве запроса у нас бы выступала какая-то картинка или даже набор слов, если бы мы писали в строке поиска, что мы хотим найти изображения с трамваями. Нам необходимо вернуть все картинки, на которых изображен тот или иной вид трамвая и надо каким-то образом сопоставить аннотацию трамваю. Собственно как это можно сделать мы сегодня немного поговорим.
И есть ещё такая отдельная задача, которую иногда обзывают (англ) — имидж парсинг. Она немного похожа на задачу аннотирования, в том смысле, что это тоже приписывание картинке различных тэгов. Но в отличие от аннотирования, если аннотирование ставит перед собой задачу приписывание тэгов, которые описывают изображение в целом. То есть, к примеру, если мы про какую-то картинку говорим, что есть у неё небо, дорога, берег океана, и все эти аннотации приписываются просто этой картинке в целом. То имидж парсинг сочетает в себе распознавание объектов, т.е. мы должны выделить вот здесь вот — это машина, но в тоже время не только описание каких-то объектных вещей, но и можно сказать, что это солнечный день.
Если говорить чуть более подробно про каждую из этих задач. Если у нас задача поиск изображения по содержанию, т.е. когда нам не доступна никакая другая информация по картинке, кроме значения её пикселей, неизвестна дата, неизвестно название, никто никогда не писал никаких аннотаций к этой картинке, то тогда, обычно, в качестве запроса в такой системе будет выступать тоже картинка, либо просто какой-то образец и вы хотите найти что-то подобное, либо вы (если кто-то способен и талантен) рисует эскиз той картинки, которую он хочет в идеале найти. Есть некая коллекция изображений. Дальше происходит собственно попарное сравнение, ну так, в общих, очень грубых чертах, нашего запроса с каждой из картинок в базе. После чего возвращается результат поиска, т.е. отбираются только те изображения, которые по использованию нашей меры подобия оказались близки к исходному заданному изображению. В реальной жизни все не совсем так. Никто не сравнивает запрос с тем миллионом фотографий, который храниться в базе. Но про это мы будет говорить чуть позже. То есть, как на самом деле происходит индексирование. Сегодня нас будут интересовать вопросы представления картинки в виде вектора признаков, т.е. в виде набора каких-то чисел и различные меры подобия — как можно сравнивать эти самые вектора.
Во время классификации тоже происходит сравнение изображений, т.е. что такое задача классификации все из вас, надеюсь, знают. В общих чертах у нас есть некое обучающее множество, состоящее из элементов неких образцов про которые нам известны метки, т.е. соотнесение их к каким-то классам. Например, здесь это может быть открытый пейзаж, закрытый пейзаж, городской вид и внутреннее помещение. Это могут быть, не знаю, какие угодно категории. Дальше происходит обучение модели классификатора во время которого, если говорить очень грубо поверхностными словами, происходит сопоставление особенностей изображений внутри каждой группы (ну это не обязательно должны быть изображения, просто сегодня мы говорим о них, а может быть всё, что угодно) особенностей объекта — меткам. Т.е. нам нужно понять какие признаки объекта отвечают за то, чтобы можно было отнести его к тому или иному классу. На выходе получается модель классификатора, такая стадия обучения, которая обычно происходит офф-лайн. Во время тестирования, т.е. когда у нас приходят новые объекты, о которых мы ничего не знаем к какому классу они относятся, и хотим понять это, т.е. чтобы машина за нас решила — как раз происходит сравнение объекта, т.е. сопоставление той модели, которую мы построили и классификатор предсказывает значение. Т.е. на основании тех данных, на основании которых он был обучен, он предсказывает на выходе класс.
Для обнаружения объектов в общем случае нам тоже нужно сравнивать картинки. Правда здесь обычно сравнивается не вся картинка целиком, а только какие-то фрагменты. Обычно это тоже решается с помощью задачи классификации. Т.е. в качестве обучающего множества выступает не всё изображение целиком, а фрагменты, которые изображают тот или иной объект. И дальше задача на изображениях из базы найти фрагмент, в котором есть тот или иной объект. Т.е. нам нужно сравнивать не всю картинку, а некий фрагмент картинки. Обычно в качестве решения задач обнаружения объекта требуется позиционировать на картинке объект определенного класса. Одна из таких наиболее распространённых задач — это к примеру нахождение пешеходов, обнаружение транспортных средств для того, чтобы скажем сделать беспилотный автомобиль.Аннатирование, как я уже сказала — задача присвоить набор тэгов. Опять же в общем случае это решается через классификатор, т.е. у нас есть некое обучающее множество, у нас есть картинки, к которым уже приписаны тэги. Тэги выступают в роли названия классов. И дальше каждую входящую картинку мы пытаемся классифицировать по одному из этих классов. У нас получается мультиклассовая (многоклассовая) классификация — когда одно изображение может быть отнесено одновременно к нескольким классам, может быть приписано сразу несколько меток.Как сравнивать картинки?
Во всех этих задачах нам необходимо их сравнивать. На самом деле те механизмы, с помощью которых изображения сравниваются — они одни для всех выше перечисленных задач. Ну слегка отличаются. Мы будем говорить в основном про то, как описать изображение в виде набора признаков как бы все изображение, и как описать фрагмент, и как найти те точки, фрагмент, который может быть наиболее интересен, более информативен. Дальше будем говорить о том как сравнить эти самые наборы признаков между собой.
Вообще, если говорить про признаки изображений их можно поделить на текстовые и на визуальные. К текстовым относятся все то, что мы можем извлечь не из самой картинки, а из того, что вокруг неё. Это могут быть тэги, аннотации, дата создания, название файла и т.д. Т.е. до недавнего времени, скажем, поиск большинства поисковых систем по картинкам того же гугла и яндекса работал просто по окружению. Да и сейчас на самом деле сильно достаточно используют информацию. Т.е. они пытаются индексировать не содержание картинки, а текст, окружающий картинку. Если есть изображение на странице, они индексируют текст вокруг этой картинки и по запросу вытаскивают ту картинку, контекст, окружение которой релевантно запросу.
Дата создания тоже может быть очень полезна особенно в комбинировании с признаками построенными по содержанию, так называемыми визуальными признаками. И зачастую позволяет … к примеру если у нас есть фотографии, отснятые опять же в отпуске — у них обычно есть дата и у нас стоит задача выделить группы дубликатов. Если вы большие экспериментаторы в фотографировании и пытаетесь сфотографировать одно и тоже место несколько раз с разными настройками, чтобы потом выбрать лучшую фотографию, то автоматически это можно сделать, сочетая как раз метку по дате и по визуальному контенту. Т.е. если вдруг у вас случайно окажется две фотографии с совершенно разными датами попадают в один класс, то, скорее всего, нужно их разнести.
Сегодня мы будем говорить только про визуальные признаки, а именно про цвет, текстуру и про форму. Их тоже можно разнести. Т.е. можно в нескольких перспективах смотреть на картинку. Можно описывать цвет, текстуру и форму и как это всё расположено в пространстве на картинке и можно описывать целиком всю картинку, т.е. описывать цвет всего изображения. А можно описывать цвет только какого-то фрагмента и текстуру какого-то фрагмента. Вот обычно говорят про глобальные и локальные признаки. Глобальные признаки — те, которые описывают изображение целиком. Локальные — те, которые описывают только какой-то фрагмент.
Для поиска по подобию чаще всего, конечно, используются глобальные признаки или некое, достаточно большое количество локальных, т.е. посчитанных не во всех точках изображения, а в каких-то заранее определённых. Для задачи поиска скажем нечетких дубликатов или поисках по фрагменту считают локальные признаки чаще, потому что пытаются сопоставить именно фрагмент фрагменту, а не всё изображение всему изображению.
Сегодня мы с вами будем говорить в основном про глобальные признаки. Хотя надо сказать, что тот механизм, который применяется к описанию всей картинки целиком, т.е. как можно построить числовой вектор по всему изображению — его можно применить, понятно, и к какому-то фрагменту. Т.е. если мы знаем какой фрагмент мы хотим описать, то дальше можно с помощью того же способа можно описать не всю картинку, а только какой-то фрагмент.
Тот набор чисел, который описывает обычно изображение называют вектором признака — это некий набор параметров, который отражает особенности нашего изображения. И задача в том, чтобы сделать этот вектор как можно меньшей размерности, чтобы как можно меньше чисел описывало наше изображение. Но в тоже время, чтобы информация основная о том, что изображено на картинке она содержалась в этом описании. В отличии от скажем алгоритмов сжатия здесь не требуется (для тех задач про которые я буду говорить) не требуется последующего восстановления изображения поэтому его представление можно ужать действительно достаточно сильно. Т.е. нам нужно только понять, взяв два разных вектора, и сравнив их между собой — если они похожи это означает, что должны быть похожи картинки, по которым они были построены.Если мы задаём некую метрику, которая не всегда на самом деле метрика неравенства треугольника довольно часто не выполняется для функций, которые используются для сравнения этих самых векторов (т.е. я предпочитаю называть функции подобия или расстояния) для сравнения векторов, то мы получаем пространство признаков — некий способ как построить набор чисел по картинке и плюс некая функция с помощью которой можно сравнить вектора.
Чаще всего в задачах, особенно, таких как поиск и классификация, используется сразу несколько абсолютно разнородных наборов. Т.е. если мы говорим про цвет — есть отдельные признаки, которые описывают цвет, отдельные признаки, которые описывают текстуру, форму и так далее. Потом встаёт соответственно на каждом из этих пространств задаётся своя функция подобия. Дальше встаёт вопрос как нам комбинировать всё это дело. Простейшее решение — это просто склеить все вектора и задать какую-то новую функцию подобия, которая будет вычислять расстояние между таким одним длиннющим вектором. Но так редко делают. Чаще всего вычисляют расстояние в каждом из пространств, а дальше строят или линейную комбинацию или существует там ещё более хитрые способы это всё посинтезировать. Если у нас в конце время останется — про это тоже поговорим.
Всё, про что я сегодня буду говорить это в основном признаки цвета, текстуры и формы. Пространственные выделенны пунктиром, потому что каждый опять же цвет можно описать как цвет всего изображения, а можно попытаться привязать цвет к тому, как он расположен на картинке. С текстурой тоже самое и с формой тоже самое. Т.е. можно считать, что пространственные признаки — это не то, что выделяется в отдельный класс, а некий дополнительный плюс к основным этим трём классам.
Начнём мы с цвета. Цвет проще всего описать с помощью гистограммы, т.е. просто посмотреть на распределение по каждому из цветовых каналов. Надо сказать, что цветовые гистограммы до сих пор используются для решения очень большого количества задач, потому что они очень просто считаются, они очень понятны. Они не всегда решают, способны решать очень сложные задачи. Но там, скажем, простейший поиск по подобию, когда у вас изображения, когда база не очень большая, когда изображения отличаются друг от друга по цветовой композиции — она решается. Или когда наоборот база очень большая и у вас есть возможность найти практически копии данной картинке — то тогда тоже поиск по гистограмме в общем будет как-то работать.
Гистограмма как вычисляется, мы с вами уже обсуждали. Дальше для того, чтобы сравнить гистограммы используются очень большой тоже набор метрик. Это или один или тот же эквивалент на самом деле разности гистограмм, т.е. когда мы берём побиново вычитаем — т.е. у нас есть гистограммы представляющая одно изображение, гистограмма, представляющая второе изображение и мы смотрим просто разность этих векторов. Т.е. у нас разности представляются вектором. Это может быть эвклидово расстояние, это можно брать максимум. Можно считать так называемы хи-квадрат или ещё иногда используют так называемый (по-русски даже не знаю как сказать — орс муви дистонс) — это расстояние, в общем, хорошо работает в том случае, если ваша гистограмма построена таким образом, что у вас соседние промежутки соответствуют всегда соседним близким цветам. Но чаще всего на самом деле используют или простое пересечение, т.е. эль один или квадрат, потому, что их проще всего считать. Хи-квадрат тоже конечно используется, но реже. Хи-квадрат — это на самом деле мера сравнения двух распределений, как привести одно распределение к другому, формула там потом будет. Хи-квадрат хорош тем, что является относительной мерой, вычисляет что нужно, грубо говоря, сделать с одним распределением, чтобы привести его к виду второго.(ну если на пальцах).
Ещё одной, не очень прижившейся надо сказать (не знаю почему), способом описания цвета является так называемая статистическая модель, которая предлагает описывать распределение цвета на картинке не с использованием гистограммы, а с использованием различных моментов, т.е. статистических моментов. Если у нас, представляем себе цвет как некое распределение случайной величины и вычисляем мат — ожидания (неразборчиво), дисперсию, момент различной ковариации и моменты высших порядков и дальше строим… Не разборчиво реплика из зала. Ответ — Никак, просто дискретно. У нас есть набор наблюдений, который мы видим в нашем изображении, т.е. получается дискретное распределение.Соответственно, вектор признаков строится просто как набор вот из этих из разных моментов и в частности в той статье, в которой предлагалось использовать такую модель и в дальнейшем кто если использует, то использовали просто эль один для сравнения векторов.
В популярной функции расстояния для гистограмм как я уже сказала это пересечение гистограмм, которое задаётся или вот так (на самом деле она эквивалентна эль один, т.е. мы просто посчитаем разницу между этими значениями и это будет примерно тоже самое) и хи-квадрат, который вычисляется следующим образом. Запоминать это наверное не стоит, просто чтобы у вас было под руками.
С какими трудностями можно столкнутся при вычислении гистограммы, какие недостатки у гистограммы. Я вам всё говорила, что они такие хорошие. Во-первых нужно понять как… пространство. Не смотря на то, что изображение у нас дискретно, и цвет тоже дискретен в цифровом представлении всё равно, если мы берём обычное полноцветное изображение т.е. 16 миллионов цветов, соответственно в гистограмме 16 миллионов промежутков, это вектор длинной в 16 миллионов. Это не очень удобно. Мало того, что это очень тяжело и нужно большое количество место для того, чтобы хранить эти вектора признаков, их дорого сравнивать. Но помимо этого это ещё и не очень удобно потому, что при таком большом количестве промежутков ни одна из тех простейших мер для сравнения гистограмм она не учитывает подобие цветов в разных промежутках, которые оказались в разных промежутках. Тут встаёт дилемма если у нас есть изначальное цветовое пространство — как его квантовать. Если мы выбираем небольшое количество промежутков, т.е. у нас вектор маленький, это хорошо с точки зрения вычислений, но у нас получается, что расстояние между далёкими цветами маленькое и они попадут в один промежуток. Если наоборот, мы квантуем пространство таким образом, что у нас промежутков очень много, т.е. шаг квантования у нас небольшой то тогда у нас получается некая избыточность в гистограмме и плюс к этому, опять же за счет того, что большинство метрик не позволяет сравнивать между собой подобие именно цветов, то тогда даже близкие по цвету картинки будут отличаться друг от друга достаточно существенно (могут отличаться).
Дело обстоит ещё хуже в том случае, если у нас многомерный признак, ну как к примеру с цветом если мы берём полноцветную картинку у нас обычно три канала — как нам построить гистограмму по всем трём распределениям. Можно строить совместную гистограмму, как здесь у нас для двумерного случая картинка нарисована. По одной оси откладывается значение одного признака. По второй оси — значение второго. К примеру, это может быть значение красного канала, значение синего канала и мы если так уж быть — будет третья ось со значением зеленого. И дальше мы получаем (как на предыдущей картинке) такой вот кубик — разрезанный.
Чем это плохо? Это плохо тем, что, во-первых, у нас очень большое количество промежутков в уже объединённой гистограмме. Т.е. у нас очень большое количество ячеек может быть пустым и тем самым картинки будет сложно сравнить друг с другом.Можно строить так называемые предельные гистограммы, т.е. отдельно по каждой из переменных, а дальше как-то их комбинировать. Но это тоже не очень удобно, потому, что это предполагает, что у нас признаки независимы, а это не всегда так.
Квантование пространства можно также делать при помощи кластеризации. Если опять же говорить про цвет то здесь мы можем, к примеру, взять некий обучающий набор изображений или даже одну картинку. Построить кластеры по цветам всех пикселей, А дальше объявить центры каждого кластера центрами промежутка гистограммы. И в следующий раз когда к нас приходит картинка для которой мы хотим построить гистограмму мы берём пиксель и смотрим по каждому из признаков к какому из центра кластеров он ближе. И соответственно в тот промежуток гистограммы его и помещаем. Это хорошо тем, что более правильно обрабатывает случай с большей размерностью, чем один. Но требует некой обучающей множества, неких дополнительных вычислений. Но и вообще говоря, никто не гарантировал то, что у нас то множество, по которому мы будем строить эти кластеры — оно достаточно представительно и то, что мы таким образом построим действительно полную картину мира.
Можно ещё пытаться играть со схемой квантования следующим образом. Т.е. помимо того, что разбивать её как сетку такую равномерную, можно попытаться посмотреть на … вспомнить то, про что я рассказывала на первой лекции и как вообще зрительная система человека у нас реагирует на те или иные цвета, т.е. то, как мы воспринимаем. В частности известно, что если очень темно или очень светло, то оттенок цвета мы заметим хуже, т.е. будем хуже отличать оттенок цвета. Лучше всего мы отличаем оттенок цвета когда цвет насыщен и когда он где-то посередине своей яркости. Можно попытаться построить так называемый граничные условия — в один промежуток гистограммы объединить всё чёрное, грубо говоря, всё белое и всё ненасыщенное. А всё то, что посерединке опять же точно также равномерно поделить. Ну и дальше для того, чтобы понять ещё на какое количество промежутков всё это делить и в каком цветовом пространстве был поставлен такой большой эксперимент, т.е. было посчитано очень большое количество вариантов. Выяснилось, что лучше всего, наилучший результат достигается как раз в пространстве с выделением тона, насыщенности и цвета и с использованием этих самых граничных условий. При этом… про это я ещё скажу чуть позже.
Слайд утащен у Джеймса Хейза про ещё недостатки гистограмм не только применительно к цвету, потому, что вообще говоря гистограмму можно строить и по каким-то описаниям текстуры, по форме, т.е. потом будем говорить — если у нас есть в принципе какой-то набор чисел, описывающих картинку, т.е. какой-то вектор признаков, мы можем для того, чтобы сократить его размерность построить по нему гистограмму.
То, соответственно, опять же к вопросу — те проблемы, на которые указывает Джеймс это тоже квантование, говорит про то, что если мы используем такое равномерное квантование (здесь он их обзывает «Grids») — это очень просто, но сложно понять, сложно с этим работать, когда у нас многомерные признаки. И кластеризация — у неё есть свои недостатки, потому, что необходимо понять на основании каких данных мы строим центры наших кластеров. Кластеризация получается несколько сложнее уже во время вычисления гистограммы. Но, тем не менее, это работает намного лучше для многомерных признаков.
Дальше для того, чтобы сравнивать эти самые гистограммы наиболее интуитивно понятный и в первую очередь, применяющиеся методы это как раз эль один и эль два. И они высчитываются достаточно быстро, но в общем хи-квадрат работает намного лучше на некоторых цветовых пространствах. И, как я уже говорила, этот Earth mover’s distance, которая если опять же грубо говорить, — если мы представляем гистограмму как некое такое распределение кучек как нам нужно эти кучки потом переместить из одной гистограммы в другую. Т.е. столько нам нужно пикселей подвинуть, чтобы из первой гистограммы получить вторую. «Earth mover» если переводить дословно — это движение земли, передвижение грязи.
Если наша метрика никак не учитывает подобие цветов, т.е. это всё то, что было перечислено выше, кроме Earth mover, то тогда, к примеру, вот здесь мы получим что расстояние между первой гистограммой и второй оно будет больше чем расстояние между первой гистограммой и третьей. Хотя визуально, скорее всего, будет казаться, что картинка, по которой построилась первая гистограмма и картинка по которой построилась вторая — они ближе друг к другу, чем первая и третья. Тут у нас чуть съехал оттенок. Но тем не менее они вот так вот все распределены. Тут просто всё в красно-жёлтом диапазоне.
Как с этим можно бороться? Можно строить так называемые куммулятивные гистограммы, т.е. когда у вас в первом бине только те пиксели, которые попадают в промежуток от нуля до первой границы. А во втором бине всё то, что было в первом и плюс то, что попадает до следующей границы. Т.е. она получается такая возрастающая. Таким образом мы учитываем ближайших соседей, но на самом деле эта метрика не используется почти на практике, потому, что они не сильный прирост дают по отношению к стандартам эль один, эль два.Можно использовать такую взвешенную эль два, где у нас посередине стоит некая матрицы А с коэффициентами подобия цветов. Т.е. это матрица у которой столбцы и строки это номера цветов — мера наших промежутков. А на пересечении стоит насколько близки эти два цвета, т.е. по диагонали у нас там всё время будут соответственно единички.
Дальше ещё один недостаток цветовой гистограммы это то, что она никак не учитывает пространственное расположение цветов. К примеру, вот для этих трёх изображений гистограмма будет абсолютно одна и та же, потому, что количество чёрного и количество белого на этих картинках одинаково. Хотя зрительно они воспринимаются несколько разными. И ещё один более наглядный пример. Гистограммы этих изображений они тоже абсолютно одинаково посчитаны. Хотя мы наверно не скажем, что эта картинка похожа на эту.Что с эти можно делать. Наивная идея это пытаться разбивать изображение на фиксированные блоки.т.е. у нас есть одна картинка. Мы её делим попалам и попалам и можно строить целую пирамиду этих самых блоков и считать отдельно гистограммы для каждого из этих блоков. И учитывать соответственно какое распределение цветов у нас в каждом из блоков.
Еще одна идея близкая к этой это использовать так называемые нечёткие области. Т.е. вот здесь вот то, что они выглядят таким вот образом не принципиально. Принципиально то, что нет чётких границ между этими обрастями. Т.е. есть некая функция, которая задаёт степень принадлежности пикселя каждой из этих областей, которая близка к единице если пиксель далёк от границы с соседом, и близка к нулю, если он где-то на границе, т.е. к соседней. Т.е. пиксели, которые находится на границе двух областей они будут пополам принадлежать. У них будет 0,5 принадлежность к R1, и 0,5 к R0 и т.д. те которые в центре, они, скажем, у них принадлежность к R0 — единичка. За счет задания нечетких границ — это позволяет более гибко реагировать на небольшие смещения этих цветовых пятен по картинке. Эти нечеткие области были предложены теми же самыми авторами, которые предложили статистическую модель описания цвета. По их экспериментам это работает неплохо. Но почему-то дальше это никто не использовал. Собственно мои собственные эксперименты не показали такого уж большого превосходства этих статистических моделей над гистограммами.
Можно использовать более сложный подход для разбиения изображения на блоки, чтобы высчитывать гистограмму для каждого блока отдельно. Это сегментировать картинку, т.е. разбивать её на более менее однородные области там по цвету, по текстуре и считать гистограмму по каждой из областей. Но задача сегментации вообще говоря очень сложная, как вычислительно, так и собственно её очень сложно сделать качественно. Поэтому для того, чтобы посчитать цветовую гистограмму картинку сегментируют очень редко.
Что можно сделать ещё такого простого, чтобы учесть это пространственное расположение цветов при задании гистограммы? Можно попытаться представлять картинку не просто как набор столбиков, которые непонятно откуда взялись, а как набор кружочков с координатами. Т.е. для каждого набора пикселей одного и того же цвета высчитывать центры массы этих самых пикселей. Тогда у нас получается что вектор признаков будет состоять из троек. Размерность унего будет три умножить на количество промежутков гистограммы. И для каждой из тройки мы храним собственно процент этого цвета в картинке, т.е. то, что мы храним в обычной гистограмме. И плюс координаты икс — игрик центра массы этого самого цвета.
A и C не различаться, в уже немножко отъедет, потому, что центр будет смещён у черного и у белого по сравнению с … ну это такой несколько вырожденный пример. На самом деле да, эта штука она не работает в том случае, если у нас есть два цветовых пятна одного и того же цвета на картинке. Если у нас тут было бы синее озеро такого же цвета как небо, то тогда бы центр массы оказался где-то посередине, что не очень соответствует. ну т.е. центр массы действительно посередине, но это не совсем верное представление даёт о реальном пространственном расположении цветов. Несколько центров, да, можно делать, но вот в этой работе это не делалось. Можно. Но это уже тогда будет, т.е. надо будет делвть какую-то сегментацию, про что я говорила раньше, что дорого.
Функция подобия, которая учитывает эти координаты тоже была предложена достаточно простая. Она состоит их двух множителей. Это дистанция по гистограмме — это простое пересечение гистограмм — эль один. Второй множитель это эвклидово расстояние между центрами масс. Ну тут какие-то коэффициенты.
По результатам экспериментов получается что это гистограмма, которая учитывает пространственное расположение цветов вместе с соответствующей ей функцией подобия — она в общем практически всё время для любого квантования выигрывает у классических гистограмм с манхэттенской метрикой, то что эль один. Т.е. здесь на графике показана разность в точности. Т.е. эксперимент проводился на задаче поиск изображений. Мы подаём картинку — запрос в систему. Система возвращает картинки подобные на запрос. И мы смотрим сколько действительно похожиъ оказалось среди первых результатов выдачи. И вычитаем то, сколько реально подобных оказалось при поиске с использованием этой гистрограммы с пространственным расположением цветов и сколько подобных оказалось при поиске по обычной гистограмме. Число получается всегда положительным. При чем результат вот тут выше на достаточно существенный показатель — двадцать, двадцать пять процентов. А здесь по оси — это количество промежутков гистограммы, т.е. насколько подробрый был вектор признака. И видим, что чем меньше размер вектора, тем больше выигрыш. Что в общем то хорошо, потому, что это означает, что с использованием вот этой вот штуки мы можем записать информацию о картинке, которая будет решать задачу примерно с тем же качеством в меньший вектор признаков.
Проводились еще эксперименты (здесь график) авторов статистической модели цвета. Они сравнивали здесь тоже индексирование картинок с помощью моментов, с помощью куммулятивной гистограммы, с помощью классических гистограмм. И разные метрики брали. Здесь указано квантование цветового пространства по оттенку, по насыщенности и по яркости на сколько промежутков квантовалась каждая ось. Дальше строилась в этом случае гистограмма. Здесь, понятно, нет никаких промежутков, потому, что они не строили гистограмму, а считали моменты. И дальше здесь показывается каким номером в выдаче были эти картинки. Т.е. у них был запрос. И известно, что в базе были ещё три картинки, похожие на них. Плюс ещё какое-то количество изображений. Они по запросу выбирают все те, которые наиболее близки и смотрят на то, под каким номером возвращаются вот эти изображения. Момент первого порядка ожидания, момент второго порядка — дисперсия. Плюс ещё там брались ковариации и моменты третьего порядка. Т.е. это то, что описывает распределение. По их экспериментам получалось что статистическое представление цвета существенно выигрывает у гистограмм. Но надо сказать, что здесь они использовали не чисто статистическое представление, а с использованием вот этого нечётких областей. Т.е. они учитывали пространственное расположение цвета. В то время как гистограммы здесь были взяты самые обычные, поэтому эксперимент был не очень честным.
Был проведён ещё один эксперимент по сравнению как раз вот цветовых моментов и гистограмм с использованием информации о пространственном расположении цвета. Получается, что результаты у них более менее похожи.Про цвет всё. Теперь поговорим про текстуру. Как можно описать текстуру. Для начала нужно понять вообще что такое текстура и чем отличается текстура от цвета принципиально. Кто-то например может предложить, чем описание цвета может принципиально отличатся от описания цвета? Текстура бывает одноцветной, да. Но … на самом деле одно из таких принципиальных отличий — то, что цвет вы всегда можете определить для одного пикселя — он всегда задан. Текстуру по одному пикселю определить невозможно. Т.е. здесь нам нужно смотреть на некую окрестность и смотреть как изменяется интенсивность в рамках какой-то окрестности. Вообще дать определение текстуры достаточно сложно. Я даже пыталась в какие-то словари залезть. Но в общем одного общего определения нет. Обычно описывают что-то, что можно описать словами. Т.е. все мы понимаем, что такое гладкая текстура, грубая текстура, периодичная текстура. А что есть текстура, сказать сложно. Но тем не менее мы попытаемся её как-то описать.Текстура поскольку чуть более сложная в описании — способов её представить существенно больше, чем способов представить цвет. Мы будем сегодня говорить далеко не про все из них. Но, по крайней мере, я хочу, чтоб вы знали про категории, какие бывают.
Самые прос