Обработка изображений Компьютерная графика Computer graphics Компьютерное (машинное) зрение Computer (machine) vision Обработка изображений Image processing Антон Конушин
Цель лекции Рассказать о нескольких способах обработки изображений, которые могут пригодиться в «реальной жизни» Зачем обрабатывать? 1.Улучшение изображения для восприятия человеком цель – чтобы стало «лучше» с субъективной точки зрения человека 2.Улучшение изображения для восприятия компьютером цель – упрощение последующего распознавания 3.Развлечение (спецэффекты) цель – получить эстетическое удовольствие от красивого эффекта
План лекции Введение Коррекция контрастности/яркости изображения Коррекция цветового баланса изображения Подавление шума в изображениях Метрики качества Подчеркивание резких границ (краев) на изображении Спецэффекты
Изображение Изображение оптическое – картина, получаемая в результате прохождения через оптическую систему лучей, распространяющихся от объекта, и воспроизводящая его контуры и детали. Физический энциклопедический словарь. Компьютерное представление изображения: Функция интенсивности (яркости) канала Используется дискретное представление
Обработка изображений Семейство методов и задач, где входной и выходной информацией являются изображения. Примеры : Устранение шума в изображениях Улучшение качества изображения Усиления полезной и подавления нежелательной (в контексте конкретной задачи) информации
Как получается цифровое изображение? Свет, падая на светочувствительный элемент преобразуется в электрические сигналы Сигналы оцифровываются, превращаются в массив чисел x – характеристика яркости света y – яркость пиксела изображения
Почему оно может получиться плохо? Ограниченный диапазона чувствительности датчика «Плохой» функции передачи датчика
«Улучшение» изображения Изменение контраста изображения Компенсация: Ограниченного диапазона яркостей датчика Плохой функции передачи датчика x – характеристика яркости света y – яркость пиксела изображения
Что такое гистограмма? Гистограмма – это график распределения тонов на изображении. На горизонтальной оси - шкала яркостей тонов от белого до черного, на вертикальной оси - число пикселей заданной яркости
Изменение контраста изображения Что может не устраивать в полученном изображении: Узкий или смещенный диапазон яркостей пикселей (тусклое или «пересвеченное» изображение) Концентрация яркостей вокруг определенных значений, неравномерное заполнение диапазона яркостей (узкий диапазон - тусклое изображение) Коррекция - к каждому пикселю применяется преобразование яркостей, компенсирующий нежелательный эффект: y – яркость пиксела на исходном изображении, x – яркость пиксела после коррекции.
Линейная коррекция Компенсация узкого диапазона яркостей – линейное растяжение: График функции f -1 (y)
Линейная коррекция Компенсация узкого диапазона яркостей – линейное растяжение:
Линейная коррекция Линейное растяжение – «как AutoContrast в Photoshop»
Линейная коррекция Линейная коррекция помогает не всегда!
Нелинейная коррекция График функции f -1 (y)
Нелинейная коррекция Часто применяемые функции: Гамма-коррекция Изначальная цель – коррекция для правильного отображения на мониторе. Логарифмическая Цель – сжатие динамического диапазона при визуализации данных
Гамма-коррекция Изначальная цель – коррекция для правильного отображения на мониторе. Так называют преобразование вида: Графики функции f -1 (y)
Нелинейная коррекция График функции f -1 (y)
Сравнение линейной и нелинейной коррекции
Компенсация разности освещения Пример
План лекции Введение Коррекция контрастности/яркости изображения Коррекция цветового баланса изображения Подавление шума в изображениях Метрики качества Подчеркивание резких границ (краев) на изображении Спецэффекты
Цветовая коррекция изображений Изменение цветового баланса Компенсация: Неверного цветовосприятия камеры Цветного освещения
«Серый мир» Предположение: Сумма всех цветов на изображении естественной сцены дает серый цвет; Метод: Посчитать средние яркости по всем каналам: Масштабировать яркости пикселей по следующим коэффициентам:
«Серый мир» - примеры
«Идеальный отражатель» Предположение: Наиболее яркие области изображения относятся к бликам на поверхностях, модель отражения которых такова, что цвет блика = цвету освещения; (дихроматическая модель) Метод Обнаружить максимумы по каждому из каналов: Масштабировать яркости пикселов:
Цветовая коррекция изображений Растяжение контрастности (autolevels) Идея – растянуть интенсивности по каждому из каналов на весь диапазон; Метод: Найти минимум, максимум по каждому из каналов: Преобразовать интенсивности:
Растяжение контрастности всех каналов (autolevels)
Растяжение контрастности (autolevels)
Коррекция с опорным цветом Предположение Пользователь указывает цвет вручную; Источник: Априорные знания – «облака – белые» Хорошая фотография этой же сцены Метод Преобразовать по каждому из каналов цвета по формуле:
Коррекция с опорным цветом Примеры:
План лекции Введение Коррекция контрастности/яркости изображения Коррекция цветового баланса изображения Подавление шума в изображениях Метрики качества Подчеркивание резких границ (краев) на изображении
Борьба с шумом изображения Подавление и устранение шума Причины возникновения шума: Несовершенство измерительных приборов Хранение и передача изображений с потерей данных Шум фотоаппарата Сильное сжатие JPEG
Шум в бинарных изображениях Пример бинарного изображению с сильным шумом
Шум в бинарных изображениях По одному пикселю невозможно определить – шум или объект? Нужно рассматривать окрестность пикселя!
Подавление и устранение шума Устранение шума в бинарных изображениях Бинарное изображение – изображение, пиксели которого принимают всего два значения (0 и 1). Широко известный способ - устранение шума с помощью операций математической морфологии: Сужение (erosion) Расширение (dilation) Закрытие (closing) Раскрытие (opening)
Математическая морфология A B Множество A обычно является объектом обработки, а множество B (называемое структурным элементом) – инструментом.
Расширение в дискретном случае A BA(+)B Операция «расширение» - аналог логического «или»
Операции математической морфологии Расширение A (+) B = {t R 2 : t = a + b, a A, b B} B A (+) B
Операции математической морфологии Сужение A (-) B = (A C (+) B) С, где A C – дополнение A A(-)B B A
Свойства морфологических операций Коммутативный закон A (+) B = B (+) A A (-) B B (-) A Ассоциативный закон A (+) (B (+) C) = (A (+) B) (+) C A (-) (B (-) C) = (A (-) B) (-) C
Алгоритм морфологического расширения void Dilation(BIT* src[], bool* mask[], BIT* dst[]) { // W, H – размеры исходного и результирующего изображений // MW, MH – размеры структурного множества for(y = MH/2; y < H – MH/2; y++) { for(x = MW/2; x < W – MW/2; x++) { BIT max = 0; for(j = -MH/2; j
Алгоритм морфологического сужения void Erosion(BIT* src[], bool* mask[], BIT* dst[]) { // W, H – размеры исходного и результирующего изображений // MW, MH – размеры структурного множества for(y = MH/2; y < H – MH/2; y++) { for(x = MW/2; x < W – MW/2; x++) { BIT min = MAXBIT; for(j = -MH/2; j
Операции раскрытия и закрытия Морфологическое раскрытие (opening) open(A, B) = (A (-) B) (+) B Морфологическое закрытие (closing) close(A, B) = (A (+) B) (-) B Образовательные материалы по мат. морфологии доступны по адресу:
Важное замечание Результат морфологических операций во многом определяется применяемым структурным элементом. Выбирая различный структурный элемент можно решать разные задачи обработки изображений: Шумоподавление Выделение границ объекта Выделение скелета объекта Выделение сломанных зубьев на изображении шестерни
Применения сужения к бинарному изображению с сильным шумом
Применения открытия к бинарному изображению с сильным шумом
Сужение vs Открытие СужениеОткрытие
Устранение шума в бинарных изображениях Пример бинарного изображению с дефектами распознаваемых объектов
Применения закрытия к бинарному изображению с дефектами объектов
Не лучший пример для морфологии Не во всех случаях математическая морфология так легко убирает дефекты, как хотелось бы…
Применения операции открытия
Подавление и устранение шума Устранение шума в полутоновых и цветных изображениях Усреднение (box filter) Фильтр Гаусса (gaussian blurring) Медианный фильтр Адаптивные фильтры
Операция «свертка» (convolution) Свертка двумерной функции f по функции g в непрерывном и дискретном случае. Часто, свертка изображения по какой-либо функции называется применением фильтра к изображению. g(l,k) – ядро (kernel) свертки или фильтра размером (n1-n0)x(m1-m0)
Применение фильтров g(l,k)
Свертка // Обнулить изображение Dest[i][j]... // Выполнить свертку for (i=0; i
Свойства фильтров 1.Результат фильтрации однотонного (константного) изображения – константное изображение. Его цвет равен 2.Следствие: чтобы фильтр сохранял цвет однотонных областей, нужно чтобы 3.Следствие: если сумма коэффициентов фильтра равна нулю, то он переводит однотонные области в нулевые.
Устранение шума в полутоновых и цветных изображениях Пример: изображение с равномерным шумом. Err(i,j) – нормально распределенная случайная величина.
Усреднение (box filter) Операция усреднения значения каждого пикселя – cвертка по константной функции: Результат применения:
Фильтр Гаусса (gaussian blurring) Свертка по функции: Параметр задает степень размытия. На графике функция с.
Маленькая экскурсия к Фурье + Низкие частоты Высокие частоты
Фильтр Гаусса (gaussian blurring) Результаты свертки по функции Гаусса и по константной функции (усреднения). Исходное изображение Фильтр Гаусса с Sigma = 4 Усреднение по 49 пикселям (7x7) Важное свойство фильтра Гаусса – он по сути является низкочастотным фильтром.
Подавление и устранение шума Устранение шума в полутоновых, цветных и бинарных изображениях с помощью медианного фильтра - выбор медианы среди значений яркости пикселей в некоторой окрестности. Определение медианы: Медианный фильтр радиусом r – выбор медианы среди пикселей в окрестности [-r,r].
Медианный фильтр Результат применения медианного фильтра с радиусом 5 пикселей. Результат применения медианного фильтра с радиусом в 7 пикселей к изображению с шумом и артефактами в виде тонких светлых окружностей.
Очистка изображения с помощью медианного фильтра Фильтр с окрестностью 3x3
Быстрая реализация медианного фильтра Медианный фильтр считается дольше, чем операция свертки, поскольку требует частичной сортировки массива яркостей окрестных пикселей. Возможности ускорения: Использовать алгоритмы быстрой сортировки Конкретная реализация для каждого радиуса (3x3, 5x5) Не использовать сортировку вообще – считать через гистограмму окрестности точки
Адаптивные фильтры Чего бы хотелось? Размывать шум, резкие границы – сохранять. Как бы этого добиться? Предположение: перепады яркости из-за шума относительно перепадов на резких границах невелики Алгоритм: При расчете новой яркости усреднять только по тем пикселям из окрестности, которые не сильно отличаются по яркости от обрабатываемого
Адаптивный фильтр - пример for (each pixel of the current video frame) { GetRGB (source_pixel, r, g, b); tot_red = tot_green = tot_blue = 0; count_red = count_green = count_blue = 0; for (each pixel in the specified radius) { GetRGB (neighbour_pixel, r1, g1, b1); if (abs(r1-r) < Threshold) {tot_red += r1; count_red ++;} if (abs(g1-g) < Threshold) {tot_green += g1; count_green ++;} if (abs(b1-b) < Threshold) {tot_blue += b1; count_blue ++;} } destination_pixel = RGB (tot_red / count_red, tot_green / count_green, tot_blue / count_blue ); }
Адаптивные фильтры Примеры таких фильтров:
«Продвинутые» фильтры
В чем отличие разных фильтров? Box filer (простое размытие) – помимо подавления шума портит резкие границы и размывает мелкие детали изображения Gaussian filter – меньше размывает мелкие детали, лучше убирает шум Median filter – резких границ не портит, убирает мелкие детали, изображение становится менее естественным Адаптивные фильтры – меньше портят детали, зависят от большего числа параметров. Иногда изображение становится менее естественным. «Продвинутые» фильтры – лучшее сохранение деталей, меньше размытие. Часто сложны в реализации и очень медленные. Что лучше? – зависит от конкретной задачи
Повышение резкости Ядро свертки
Как бороться с шумом аппаратуры? Предположим, камера, которой производится съемка заметно «шумит». Обычно шум измерительной аппаратуры моделируется как случайная нормально распределенная случайная величина с нулевым средним - Err(i,j) ;
Примеры шумоподавления Зашумленные изображенияУсреднение по 10 изображениям Так работают камеры в некоторых сотовых телефонах
Примеры шумоподавления Исходное изображение Испорченное изображение
Примеры шумоподавления Усреднение по 9 пикселям (3x3) Медианный фильтр (3x3)
Компенсация разности освещения Пример
Компенсация разности освещения Идея: Формирование изображения: Плавные изменения яркости относятся к освещению, резкие - к объектам. объектосвещение Изображение освещенного объекта
Выравнивание освещения Алгоритм Получить приближенное изображение освещения путем низочастотной фильтрации Восстановить изображение по формуле
Выравнивание освещения Пример
Компенсация разности освещения Пример /= Gauss 14.7 пикселей
План лекции Введение Коррекция контрастности/яркости изображения Коррекция цветового баланса изображения Подавление шума в изображениях Метрики качества Подчеркивание резких границ (краев) на изображении Спецэффекты
Метрики качества Как измерить похожесть двух изображений? исходное изображение искаженное изображение
Метрики качества Среднеквадратичная ошибка (MSE) Пиковое отношение сигнал/шум (PSNR) N – число пикселей M – максимальное значение пикселя
Метрики качества PSNR и MSE не учитывают особенности человеческого восприятия! Оригинал Далее будут использованы рисунки из статьи Wang, Bovik, Lu WHY IS IMAGE QUALITY ASSESMENT SO DIFFICULT?
Метрики качества У этих изображений одинаковые PSNR с оригиналом (примерно 25 dB) Повышена контрастностьДобавлен белый гауссов шум
Метрики качества И у этих – тоже примерно 25 dB! Добавлен импульсный шумРазмытие
Метрики качества И у этого – тоже! Артефакт блочности после JPEG
Метрики качества Вывод: PSNR не всегда отражает реальный видимый уровень искажений. Как улучшить? –Использовать функцию чувствительности глаза к различным частотам (CSF) –Использовать свойство маскировки –Использовать равномерные к восприятию цветовые пространства (CIE Lab, CIEDE2000) HVS models (human visual system)
План лекции Введение Коррекция контрастности/яркости изображения Коррекция цветового баланса изображения Подавление шума в изображениях Метрики качества Подчеркивание резких границ (краев) на изображении Спецэффекты
Подчеркивание контуров объекта Рассмотрим подчеркивание краев (границ) Край(edge) – резкое изменение яркости на изображении, часто соответствует границам объектов на изображении.
Операция оконтуривания объекта При работе с бинарными изображениями контуры объекта можно получить с помощью операций математической морфологии Внутреннее оконтуривание C I = A – (A (-) B) Внешнее оконтуривание C O = (A (+) B) – A
Пример оконтуривания объекта
Подчеркивание краев Нас интересуют области резкого изменения яркости – нахождение таких областей можно организовать на основе анализа первой и второй производной изображения. График функции График производной График 2ой производной
Подчеркивание краев Известно, что наибольшее изменение функции происходит в направлении ее градиента. Величина изменения измеряется абсолютной величиной градиента. Часто используется приближенное вычисление градиента:
Подчеркивание краев Математический смысл – приближенное вычисление производных по направлению. Робертса ПревиттСобеля Семейство методов основано на приближенном вычисление градиента, анализе его направления и абсолютной величины. Свертка по функциям:
Подчеркивание краев Примеры применения операторов подчеркивания краев: Робертса Превитт Собеля
План лекции Введение Коррекция контрастности/яркости изображения Коррекция цветового баланса изображения Подавление шума в изображениях Метрики качества Подчеркивание резких границ (краев) на изображении Спецэффекты
Рассмотрим Тиснение Негатив «Светящиеся» края Геометрические эффекты Перенос/поворот Искажение «Эффект стекла»
Тиснение Фильтр + сдвиг яркости, нормировка…
Цифровой негатив
Светящиеся края Медианный фильтра + выделение краев + фильтр «максимума»
Перенос/поворот Перенос: x(k; l) = k + 50; y(k; l) = l; Поворот: x(k; l) = (k. x0)cos(µ) + (l. y0)sin(µ) + x0; y(k; l) =.(k. x0)sin(µ) + (l. y0)cos(µ) + y0; x0 = y0 = (центр поворота), µ = /6
«Волны» Волны 1: x(k; l) = k + 20sin(2 l / 128); y(k; l) = l; Волны 2: x(k; l) = k + 20sin(2 k / 30); y(k; l) = l;
«Эффект стекла» x(k; l) = k + (rand(1, 1) – 0.5) * 10; y(k; l) = l + (rand(1, 1) – 0.5) * 10;