Алгоритмы и структуры данных 2 2018/2019/segmentation — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Сегментация изображений)
(Сегментация изображений)
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
 
== Сегментация изображений ==
 
== Сегментация изображений ==
В этом задании вам необходимо реализовать алгоритм сегментации изображений. Для простоты мы будем делать сегментацию на два класса на основе цветов пикселей.
+
В этом задании вам необходимо реализовать алгоритм сегментации изображений. Для начала мы будем делать сегментацию на два класса на основе цветов пикселей.
  
Вам дается [https://www.dropbox.com/s/ewdk7fd5u8n5u1p/base.py?dl=0 код с заготовкой], в которой написана базовая загрузка изображений (с помощью библиотеки scipy) и некоторые удобные функции для работы с ними. Необходимо реализовать функцию сегментации и проверить ее работу на нескольких примерах изображений.
+
Вам дается [https://www.dropbox.com/s/ewdk7fd5u8n5u1p/base.py?dl=0 код с заготовкой], в которой написана базовая загрузка изображений (с помощью библиотеки scipy) и некоторые удобные функции для работы с ними. Необходимо реализовать функцию сегментации и проверить ее работу на нескольких [https://www.dropbox.com/s/htf6w177phvnase/images.zip?dl=0 примерах изображений].
  
 
Пояснения по заданию и коду:
 
Пояснения по заданию и коду:
  
# Для каждого класса фиксируется свой основной цвет (переменные S и T, нужно задавать вручную для каждого изображения).
+
# Для каждого класса фиксируется свой основной цвет (переменные S и T, нужно задавать вручную для каждого изображения).
# Расстояние между двумя цветам вычисляется как среднеквадратичное между яркостями компонент (функция dist).
+
# Расстояние между двумя цветами вычисляется как среднеквадратичное между яркостями компонент (функция dist).
# Штраф данного пикселя за принадлежность к классу равен расстоянию от него до цвета класса домноженному на коэфф alpha(>=0).
+
# Штраф данного пикселя за принадлежность к классу равен расстоянию от него до цвета класса, умноженному на коэффициент alpha.
# Штраф за отнесение соседних пикселей к разным классам равен расстоянию между их цветами домноженному на коэфф beta(<=0).
+
# Штраф за отнесение соседних пикселей к разным классам равен расстоянию между их цветами, умноженному на коэффициент beta.
# В заготовке после сегментации пиксели изображения подкрашиваются в соответствующий цвет для наглядности.
+
# В заготовке после сегментации пиксели изображения подкрашиваются в соответствующий цвет для наглядности.
# Заготовкой пользоваться не обязательно, программировать можно как на Python, так и на C++ (но заготовки для C++ нет).
+
# Заготовкой пользоваться необязательно, программировать можно как на Python, так и на C++ (но заготовки для C++ нет).
#* Адаптируйте код под количество цветов > 2. (landscape.jpg)
+
# Адаптируйте код под количество цветов, большее двух (как в примере из файла landscape.jpg).
#* Адаптируйте код так, чтобы картинка sky.jpg имела две правильные части: небо и объект перед. При каком соотношениее alpha/beta получается лучший результат?
+

Текущая версия на 22:45, 23 сентября 2018

Сегментация изображений

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

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

Пояснения по заданию и коду:

  1. Для каждого класса фиксируется свой основной цвет (переменные S и T, нужно задавать вручную для каждого изображения).
  2. Расстояние между двумя цветами вычисляется как среднеквадратичное между яркостями компонент (функция dist).
  3. Штраф данного пикселя за принадлежность к классу равен расстоянию от него до цвета класса, умноженному на коэффициент alpha.
  4. Штраф за отнесение соседних пикселей к разным классам равен расстоянию между их цветами, умноженному на коэффициент beta.
  5. В заготовке после сегментации пиксели изображения подкрашиваются в соответствующий цвет для наглядности.
  6. Заготовкой пользоваться необязательно, программировать можно как на Python, так и на C++ (но заготовки для C++ нет).
  7. Адаптируйте код под количество цветов, большее двух (как в примере из файла landscape.jpg).