Анализ информации, содержащейся в изображении
Примеры практических задач Практически все задачи решают одну из (или обе) задачи: поиск определенных объектов на изображении измерение параметров объектов на изображении Медицинские приложения; Дефектоскопия; Анализ движущихся объектов в видеопотоке; Поиск специальных объектов (маркеров); Обнаружение естественных объектов; Анализ спутниковых снимков;
Медицинские приложения Пример – анализ концентрации клеток определенного типа в крови
Неразрушающая диагностика Поиск и анализ дефектов без разрушения объекта исследования Автоматизированный поиск дефектов по изображениям Пример – автоматический поиск трещин в асфальте по ИК изображениям
Анализ движущихся объектов в видео Обнаружение изменяющихся областей видео, анализ их формы и динамики изменения (обычно для систем безопасности)
Поиск специальных объектов (маркеров) Для решения ряда задач требуется обнаружение специальных маркеров на изображении: дорожные знаки, дорожная разметка объект для калибровки камеры
Обнаружение естественных объектов Примеры: Обнаружение лиц Обнаружение красных глаз на фото (для коррекции) Обнаружение антропометрических точек лица
Обнаружение естественных объектов Примеры: Обнаружение лиц Обнаружение красных глаз на фото (для коррекции) Обнаружение антропометрических точек лица
Обнаружение естественных объектов Примеры: Обнаружение лиц Обнаружение красных глаз на фото (для коррекции) Обнаружение антропометрических точек лица
Анализ спутниковых снимков Погода Геологические процессы (напр. таяние ледников) Экология
Как обычно анализируются изображения Если цель – поиск объектов определенной природы, обычно: Предобработка изображения для упрощения анализа (например – шумоподавление) Выделение на изображении областей-кандидатов в которых может находится искомый объект Проверка – является ли фрагмент изображения изображением нужного нам объекта
Как обычно анализируются изображения Если цель – измерение параметров определенного объекта (считаем что объект уже найден): Расчет необходимых характеристик изображения Расчет параметров реального объекта по характеристикам объекта на изображении
Выделение областей-кандидатов Как найти потенциальные области где может находиться объект? Как облегчить последующую задачу проверки – тот ли объект мы нашли?
Выделение областей-кандидатов Распространенные варианты Разделить (сегментировать) изображение на области однородные по каким-то признакам и анализировать области отдельно (облегчает последующий анализ, но может все испортить в случае неверной сегментации) Никак не находить. Проверять все возможные фрагменты изображения (ничего не пропускает, но требует более сложного пост-анализа)
Выделение областей-кандидатов Варианты сегментации (вообще-то их масса) Бинаризация изображения, анализ связных компонент Цветовая или текстурная сегментация изображения на однородные области
Бинарное изображение Пример изображения для обработки
Как получить бинарное изображение? Общая цель – выделение на изображении интересных нам объектов. Простейший вариант - пороговая фильтрация (thresholding)
Пороговая фильтрация Простейший случай – выделение областей, яркость которых выше/ниже некоторого порога заданного «извне».
Пороговая фильтрация Более интересный способ – определение порога автоматически, по характеристикам изображения; Анализ бимодальной гистограммы
Анализ симметричного пика гистограммы Применяется когда фон изображения дает отчетливый и доминирующий пик гистограммы, симметричный относительно своего центра. 1. Сгладить гистограмму; 2. Найти ячейку гистограммы h max с максимальным значением; 3. На стороне гистограммы не относящейся к объекту (на примере – справа от пика фона) найти яркость h p, количество пикселей с яркостью >= h p равняется p% (например 5%) от пикселей яркости которых >= h max; 4. Пересчитать порог T = h max - (h p - h max );
Адаптивная бинаризация Необходима в случае неравномерной яркости фона/объекта.
Адаптивная бинаризация Необходима в случае неравномерной яркости фона/объекта. 1. Для каждого пикселя изображения I(x, y): 1. В окрестности пикселя радиуса r высчитывается индивидуальный для данного пикселя порог T; 2. Если I(x, y) > T + C, результат 1, иначе 0; Варианты выбора T: T = mean T = median T = (min + max) / 2
Адаптивная бинаризация r=7, C=0 r=7, C=7r=75, C=10Исходное
Алгоритм k-средних Дано: Набор векторов x i i=1,…,p; k – число кластеров, на которые нужно разбить набор x i ; Найти: k средних векторов m j j=1,…,k (центров кластеров); отнести каждый из векторов x i к одному из k кластеров; Метод k-средних – метод кластеризации данных. Целью задачи кластеризации является разбиение множества объектов на классы (кластеры) на основе некоторой меры сходства объектов.
Алгоритм k-средних 1. Случайным образом выбрать k средних m j j=1,…,k; 2. Для каждого x i i=1,…,p подсчитать расстояние до каждого из m j j=1,…,k, Отнести (приписать) x i к кластеру j, расстояние до центра которого m j минимально; 3. Пересчитать средние m j j=1,…,k по всем кластерам; 4. Повторять шаги 2, 3 пока кластеры не перестанут изменяться;
Алгоритм k-средних Вариант k-средних для бинаризации 1. Выбрать порог T равным середине диапазона яркостей; 2. Вычислить среднюю яркость всех пикселей с яркостью T; 3. Пересчитать порог T = (m 1 + m 2 ) / 2; 4. Повторять шаги 2, 3 порог не перестанет изменяться;
Пример кластеризации в 2D Исходные данные
Пример кластеризации в 2D Случайная инициализация центров кластеров (шаг 1)
Пример кластеризации в 2D Кластеры после первой итерации (шаг 2)
Пример кластеризации в 2D Пересчет центров кластеров после первой итерации (шаг 3)
Пример кластеризации в 2D Кластеры после второй итерации (шаг 2)
Пример кластеризации в 2D Стабильная конфигурация после четвертой итерации
Применение k-средних для сегментации изображений по яркости Рассматриваем одномерное пространство яркостей пикселей и производим в нем кластеризацию с помощью k-средних. Это дает автоматическое вычисление яркостных порогов. (Для получения бинарного изображения k=2)
Сравнение k-средних с порогом по средней яркости После лекции был задан вопрос: чем отличается сегментация с помощью k- средних на 2 кластера от простейшей пороговой бинаризации по средней яркости изображения? Пример: k-среднихПорог по средней яркости В причинах предлагается разобраться самостоятельно
Выделение связных областей Определение связной области: Множество пикселей, у каждого пикселя которого есть хотя бы один сосед, принадлежащий данному множеству. Соседи пикселей: 4-связность8-связность
Разметка связных областей Бинарное изображениеРазмеченное изображение
Рекурсивная разметка связных областей 1 void Labeling(BIT* img[], int* labels[]) { // labels должна быть обнулена L = 1; for(y = 0; y < H; y++) for(x = 0; x < W; x++) { Fill(img, labels, x, y, L++); }
Рекурсивная разметка связных областей 2 void Fill(BIT* img[], int* labels[], int x, int y, int L) { if( (labels[x][y] = = 0) && (img[x][y] = = 1) ) { labels[x][y] = L; if( x > 0 ) Fill(img, labels, x – 1, y, L); if( x < W - 1 ) Fill(img, labels, x + 1, y, L); if( y > 0 ) Fill(img, labels, x, y - 1, L); if( y < H - 1 ) Fill(img, labels, x, y + 1, L); }
Разметка связных областей путем последовательного сканирования Последовательно, сканируем бинарное изображение сверху вниз, слева направо: if A = O do nothing else if (not B labeled) and (not C labeled) increment label numbering and label A else if B xor C labeled copy label to A else if B and C labeled if B label = C label copy label to A else copy either B label or C label to A record equivalence of labels Постобработка - переразметка с учетом эквивалентностей областей
Разметка связных областей путем последовательного сканирования Случай конфликта: Постобработка - переразметка с учетом эквивалентностей областей
Интегральные проекции Интегральные проекции – простой, но мощный инструмент анализа изображений. Определяются следующим образом:
Интегральные проекции Использование интегральных проекций для обнаружения объектов: Плюсы: менее чувствительны к «разрывам» очень быстро вычисляются
Сегментация полутоновых и цветных изображений Выделение областей однородных по: Яркости Цвету Текстуре и т.д.
Применение k-средних Сегментация изображения на области однородной яркости методом k-средних. k = 4
Применение k-средних K-средних не учитывают пространственное расположение пикселов, что не всегда удобно. Для K-средних требуется знать число k изначально
Выделение однородных областей методом последовательного сканирования 1.if I(A) – I avg (Cl(B)) > δ and I(A) – I avg (Cl(C)) > δ - создаем новую область, присоединяем к ней пиксел A 2.if I(A) – I avg (Cl(B)) < δ xor I(A) – I avg (Cl(C)) < δ – добавить A к одной из областей 3.if I(A) – I avg (Cl(B)) < δ and I(A) – I avg (Cl(C)) < δ : 1.I avg (Cl(B)) - I avg (Cl(C)) < δ – сливаем области B и C. 2.I avg (Cl(B)) - I avg (Cl(C)) > δ– добавляем пиксел A к тому классу, отклонение от которого минимально. I(A) – яркость пиксела A Cl(B) – область к которой принадлежит пиксел B I avg (Cl(B)) – средняя яркость области к которой принадлежит B Сканируем изображение сверху вниз, слева направо:
Выделение однородных областей методом последовательного сканирования Пример:
Другие методы сегментации полутоновых изображений Существует множество методов сегментации полутоновых изображений, подробнее можно посмотреть вот тут: «Выделение связных областей в цветных и полутоновых изображениях» (статья в онлайн журнале)Выделение связных областей в цветных и полутоновых изображениях
Сегментация цветных изображений Можно применять большинство методов сегментации полутоновых, заменив: скалярную величину яркости на вектор цвета: (R, G, B), разность яркостей на длину вектора разности двух цветов
Опрос по заданиям Электронный кассир Сахар и ложки Распознавание циферблата аналоговых часов Поиск клада Распознавание двоичных чисел
Опрос по заданиям Электронный кассир
Опрос по заданиям Сахар и ложки
Опрос по заданиям Распознавание циферблата аналоговых часов
Опрос по заданиям Поиск клада
Опрос по заданиям Распознавание двоичных чисел
Опрос по заданиям Что интереснее Электронный кассир? Сахар и ложки? Распознавание циферблата аналоговых часов? Поиск клада? Распознавание двоичных чисел?
Выделение на изображении объектов определенной структуры Преобразование Хафа позволяет находить на бинарном изображении плоские кривые, заданные параметрически, например: прямые, окружности, эллипсы, и т.д. Бинарное изображение, считаем 0 – точками фона, 1 – «точками интереса». Задача преобразования Хафа состоит в выделении кривых, образованных точками интереса.
Преобразование Хафа (Hough) Исходное изображениеВыделенные краяНайденные прямые Что это ?!
Основная идея метода На примере прямых: Взять все возможные прямые проходящие по изображению Для каждой посчитаем – сколько точек через нее проходит Все прямые через которые проходит достаточное число точек - существуют
Выделение прямых на изображении Прямую на плоскости можно задать следующим образом: x cos + y sin = R, R - длина перпендикуляра опущенного на прямую из начала координат, - угол между перпендикуляром к прямой и осью OX, изменяется в пределах от 0 до 2, R ограничено размерами входного изображения.
Выделение прямых на изображении Таким образом функция, задающая семейство прямых, имеет вид: F (R,, x, y) = x cos + y sin - R. Через каждую точку (x, y) изображения можно провести несколько прямых с разными R и.
Изображение и фазовое пространство Через одну точку можно провести несколько прямых. Учитывая дискретность их будет конечное число. Каждой прямой пространства (x, y) соответствует точка фазового пространства (R, ). Прямые с левого рисунка образуют синусоиду.
Формально Рассмотрим семейство кривых на плоскости, заданное параметрическим уравнением: F(a 1, a 2, …, a n, x, y) = 0; где F - некоторая функция, a 1, a 2,..., a n - параметры семейства кривых, x, y - координаты на плоскости. Параметры семейства кривых образуют фазовое пространство, каждая точка которого (конкретные значения параметров a 1, a 2,..., a n ) соответствует некоторой кривой.
Машинное представление Ввиду дискретности машинного представления и входных данных (изображения), требуется перевести непрерывное фазовое пространство в дискретное. 1. Вводим сетку на фазовом пространстве 2. Каждой ячейке сетки ставим в соответствие счетчик 3. Значение счетчика каждой ячейки устанавливаем равным количеству точек интереса, через которые проходит хотя бы одна кривая, параметры которой принадлежат данной ячейке. Анализ счетчиков ячеек позволяет найти на изображении кривые, на которых лежит наибольшее количество точек интереса.
Дискретизация фазового пространства Переводим непрерывное фазовое пространство в дискретное. Введем сетку на пространстве (R, ), одной ячейке которой соответствует набор прямых с близкими значениями R и. Счетчик ставится в соответствие каждой ячейке сетки [R i, R i+1 ]x[ i, i+1 ], равный числу точек интереса на изображении, удовлетворяющих уравнению: x cos + y sin = R, где i i+1, R i R R i+1.
Размер ячеек стоит выбирать аккуратно Если ячейки будут очень большими, то за «прямую» может приниматься разрозненный набор точек. Если же наоборот, ячейки будут слишком малы, есть вероятность, что ни одной прямой не найдется – все счетчики будут иметь небольшое значение.
Алгоритм выделения прямых 1.обнулить счетчики всех ячеек; 2.для каждой точки интереса на изображении: 1.для каждой прямой, проходящей через данную точку увеличить соответствующий счетчик; 3.выбрать ячейки со значением счетчика, превышающим заданный порог; В общем случае алгоритм поиска прямой на изображении при помощи преобразования Хафа выглядит так:
Преобразование Хафа (Hough) Исходное изображениеВыделенные краяНайденные прямые Фазовое пространство
Примеры работы
Примеры работы (с шумом)
Примеры работы (фрагменты прямых)
Преобразование Хафа Искать можно не только прямые!
Преобразование Хафа Подробнее: brazheniy/parametric_curves_recognition_by_hough_transform.html
Как анализировать найденные области? Для машинного анализа требуется вычислить некоторые числовые характеристики (признаки) областей: Например: геометрические признаки фотометрические признаки
Геометрические признаки Для каждой области можно подсчитать некий набор простейших числовых характеристик: Площадь Периметр Компактность Ориентацию главной оси инерции Удлиненность (эксцентриситет) На основе этих характеристик можно классифицировать получаемые области.
Анализ формы связных областей Площадь – количество пикселей в области; Периметр – количество пикселей принадлежащих границе области; Компактность – отношение квадрата периметра к площади; Наиболее компактная фигура – круг,.
Подсчет периметра области 1.Пиксель лежит на границе области, если он сам принадлежит области и хотя бы один из его соседей области не принадлежит. (внутренняя граница) 2.Пиксель лежит на границе области, если он сам не принадлежит области и хотя бы один из его соседей области принадлежит. (внешняя граница) Периметр зависит также от того 4-х или 8-ми связность используется для определения соседей.
Пример периметров области Область Внутренняя границаВнешняя граница
Статистические моменты области Дискретный центральный момент m ij области определяется следующим образом: n – общее количество пикселей в области
Инвариантные характеристики области Для распознавания нас интересуют характеристики инвариантные по отношению к масштабированию, переносу, повороту: Удлиненность, нецентрированность (эксцентриситет) Компактность
Ориентация главной оси инерции Не является инвариантной к повороту, но в ряде случаев предоставляет полезную информацию об ориентации объекта:
Пример изображения с подсчитанными характеристиками областей
Другие инвариантные характеристики области
Фотометрические признаки Для каждой области можно подсчитать некий набор простейших числовых характеристик: Средняя яркость Средний цвет (если изображение цветное) Гистограмма распределения яркостей (или три гистограммы распределения R, G, B) Дисперсию (разброс) яркостей или цвета Разумеется, все это считается не по бинарному изображению
Как анализировать признаки Как воспользоваться признаками для классификации? Подобрать диапазоны значений для разных классов вручную, экспериментально (может быть весьма трудоемко) Подобрать диапазоны значений графически (нужна база для тренировки, трудно, если признаков много) Найти диапазоны с помощью методов машинного обучения (нужна база для тренировки и знания в области машинного обучения)
Как анализировать признаки Пример – ложки и сахар
Ручной подбор Из общих соображений: Ложки более вытянутые, чем сахарные кусочки Ложки больше чем сахарные кусочки Сахарные кусочки квадратные Области появляющиеся из-за шума обычно небольшие и неквадратные Пытаемся сконструировать решающее правило, проверяем экспериментально Может быть весьма утомительно
Графический анализ Собрать тренировочную базу изображений Где только ложки Где только сахар Где только шум Как получить такие? Да просто закрасить все остальное. Брать признаки и строить графики
Графический анализ Диаграмма распределения эксцентриситета (проблема – не получается отличить шум от ложек)
Графический анализ График распределения эксцентриситета и площади (гораздо лучше – можем подобрать значения порогов)
Графический анализ Удобнее, но при большом кол-ве признаков все равно тяжело…
Машинное обучение Собрать тренировочную базу изображений Где только ложки Где только сахар Где только шум Как получить такие? Да просто закрасить все остальное. Заложить эти данные в один из алгоритмов машинного обучения
Машинное обучение Алгоритмы машинного обучения не входят в программу этого курса, поэтому коротко: Их существует большое количество Применять их нужно с пониманием их возможностей и потенциальных проблем Намного более надежный способ, нежели ручной
Машинное обучение Рассмотрим один пример – деревья решений. Деревья решений – это способ представления правил в иерархической, последовательной структуре.
Машинное обучение Конструирование деревьев решений описано, например, тут: Пример использования дерева решений – старая компьютерная игра animal (самообучающаяся программа разгадки слов)