Добавил:
Да поможет вам Котельников Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТиП_Лекция_КЗ_Отчет.docx
Скачиваний:
5
Добавлен:
23.06.2024
Размер:
59.83 Кб
Скачать

1.2. Задача маттинга и морфология

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

Рассмотрим более тривиальный случай задачи Маттинга – задачу зеленого экрана. Мы попробуем построить какой-то алгоритм, который не будет идеальным, но будет работать. Наша задача – взять из изображения и выделить все пиксели, где цвет зеленый. Для этого построим гистограмму Hue-значений в HSV формате. Мы увидим, что на гистограмме будет огромный всплеск среди значений. Этот всплеск как раз и относится к зеленому цвету. Если его обрезать, то мы получим:

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

Морфология – это работа с бинарными изображениями. Бинарное изображение – такое изображение, где есть только 2 значения 0 или 1. Наша маска являлась бинарным изображением – пиксель либо принадлежал диапазону, либо нет. Бинарные изображения практически никогда не используются для реального отображения чего-либо, а используются в промежуточных вычислениях, как раз для таких моментов, когда в алгоритме возникает задача профильтровать пиксели по какому-нибудь критерию.

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

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

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

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

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

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

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

Теперь поговорим про RGBA. А – отвечает за альфа канал, то есть за прозрачность. В целом его можно добавить не только к цветовой схеме RGB, а вообще к любой и таким образом хранить информацию, где на изображении находится фон, а где находится объект. По зеленому экрану мы нашли, где находится человек, а где фон. Мы можем записать человека в альфа канал, таким образом добавив прозрачности к нашему изображению. Что у нас получится в итоге?

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