5. Задача Разделить изображение на области связанные между собой по определенным признакам Часто сегментация зависит от задачи 5
6. Типы сегментации Бинарная Области Примитивы Вопрос: Как бы вы сформулировали что такое хорошая сегментация? 6
7. Хорошая сегментация Области сегментированного изображения должны быть однородны по некоторому признаку Внутренние части сегментированных областей должны иметь простую форму и не содержать большого количества мелких отверстий Смежные сегменты должны существенно отличаться по выбранному признаку 7
8. Пространства Чтобы разделить изображение на области нам нужно выбрать признаки по которым будем делить. Вопрос: Какие пространства можно использовать? 8
15. Бинарная сегментация Разделить на два класса: обычно объект фон Обычно выбирается порог l из промежутка [0..255] Если значение яркости пикселя больше порога то присваиваем значение 1, иначе 0 15
27. Адаптивная бинаризация Для окрестности R пикселя I(x,y) вычисляется порог T Если I(x,y) > T + C, то B(x,y)=1 иначе B(x,y) = 0 T – среднее по области R T – медианна T – (max – min)/2 C – произвольная константа 27
31. K-means (К средних) Выбираем случайно K точек в нашем векторном пространстве Для всех точек из выборки приписываем их к классу к которому они ближе всего Пересчитываем центры кластеровна шаг 2 Останавливаемся, когда смещения всех центров масс меньше порога или истекло кол-во итераций 31 Matlab: Demo
39. Методы основанные на разбиении графа X(i) – место расположение узла I F(i) – вектор признаков Для полутоновых изображений F(i) = I(i) Для цветных F(i)=[v,v*s*sin(h),v*s*cos(h)](i), где h,s,v – цветовая кодировка HSV 39
43. Реализация OpenCV grabCut(Входное изображение, маска в которой выделены области принадлежащие объекту и фону, прямоугольник внутри которого содержится объект, Выходная маска фона (можно подавать существующую для уточнения), Выходная маска переднего плана, К-во итераций, Режим см. док) См. пример samples/grabcut.cpp 43
44. Выделение краев Задача: Выделить точки по которым проходит разрыв яркости Прямое решение: Взять градиент, например оператор prewittи потом выделить по порогу Вопрос: чем такое решение плохо? 44
49. Шаги алгоритма Сгладить изображение Гауссом Вычисляем направление градиента и силу градиента Утончаем границы (supress_nonmaxima) Следуем вдоль границ 49
50. Утончение границы (supress_nonmaxima) Если по направлениям градиента (+,-) существует значение с силой больше чем в интересующей точки, то обнуляем точку 50 Вопрос: Почему по направлению градиента а не по области?
51. Следовать вдоль границ Ищем во всем изображении точки, в которых сила градиента больше порога Th Найдя такую точку идем помечаем ее как точку контура и проверяем соседние точки Если есть точки больше порога Tlто переходим в эту точку (шаг 2) 51
53. Обнаружение прямых Задача обнаружить прямы на изображении Вопрос: Чем плох прямой подход как в операторе Кенни? 53
54. Преобразование Хафа (Hough) Идея: Перевести черно-белое изображение в пространство параметров прямой Создать новое изображение с параметрами угол и расстояние 54
55. Преобразование Хафа (Hough) for i=1:N for j=1:M di=rowgrad(I,i,j) dj=colgrad(I,i,j) θ=atan2(di,dj) //Угол r = |i*cos(θ)-j*sin(θ)|//Расстояние A(r, θ)+=(|di|+|dj|)/2//Сила градиента end end A – выходной массив 55