Лекция 4 Цвет, квантование, фильтрация, шумоподавление Алексей Лукин lukin@ixbt.com План лекции Свет и цвет – Восприятие цвета – Цветовые системы Палитры и квантование цветов – Кластеризация K-средних Псевдотонирование – Метод диффузии ошибки Фильтрация – Свертка – Простейшие фильтры Шумоподавление – Метод K nearest neighbors – Метод Non-local means Меры качества изображений Свет и цвет Свет и его спектр 380 500 560 590 – – – – 470 560 590 760 нм нм нм нм – – – – фиолетовый, синий зеленый желтый, оранжевый красный Свет и цвет R I ( ) PR ( )d Восприятие цвета G I ( ) PG ( )d B I ( ) PB ( )d P (чувствительность колбочек глаза) G I R (интенсивность) I (λ) B 440 540 580 λ, нм (длина волны) λ Какой это цвет? Свет и цвет Цветовые системы – RGB и дисплеи, гамма-коррекция – Аддитивные (RGB) и субтрактивные (CMYK) системы RGB CMY Свет и цвет Цветовые системы – HSV (Hue/Saturation/Value) – Система YUV и прореживание хроматических компонент Свет и цвет Система YUV: разделение яркости и хроматических компонент Y 0.299R 0.587G 0.114B U -0.147R - 0.289G 0.436B V 0.615R - 0.515G - 0.100B Системы CIE Lab, Luv, CIEDE2000 и равномерность восприятия Квантование цвета Квантование – Раньше: ограничение видеопамяти → ограничение числа цветов → программируемые палитры – Теперь: уменьшение размера графических файлов, другие нужды (для спецэффектов, повышение резкости границ) Палитры в видеоадаптерах и BMP-файлах RGB 64 цвета 16 цветов Квантование цвета Палитризация – Равномерное квантование – По популярности Гистограмма – Медианное сечение цветового куба Квантование цвета Метод кластеризации K-средних 1. 2. 3. 4. Выбрать начальное приближение палитры из N различных цветов Классифицировать все пиксели на N кластеров по цвету Найти средний цвет (центроиду) каждого кластера и назначить их новыми цветами палитры Пока цвета обновляются – goto 2 Псевдотонирование Цель: уменьшить видимые артефакты палитризации Округление 16 цветов RGB Псевдотонирование Псевдотонирование 1-й шаг – сведение к градациям серого Mono 0.3 red 0.59 green 0.11 blue Псевдотонирование 1-й шаг – сведение к градациям серого Mono 0.3 red 0.59 green 0.11 blue Псевдотонирование Методы – Округление Dst [ x, y ] truncate( Mono[ x, y ]) Псевдотонирование Методы – Dithering (добавление шума) Dst [ x, y ] truncate( Src[ x, y ] Noise[ x, y ]) Белый шум – случайные числа с нулевым мат. ожиданием Псевдотонирование Методы – Упорядоченное псевдотонирование 1. 2. 3. 4. Изображение разбивается на блоки В каждом блоке вычисляется средняя интенсивность В зависимости от интенсивности выбирается нужный шаблон Шаблон записывается в блок Примеры шаблонов с разными степенями заполнения: Псевдотонирование for (i=0; i<Height; i++) for (j=0; j<Width; j++) { Dest[i][j] = quantize(Src[i][j]); e = Dest[i][j] – Src[i][j]; Src[i][j+1] -= e; } Методы – Диффузия ошибки Идея алгоритма: ошибка, внесенная при квантовании текущего пикселя, распределяется между соседними (еще не квантованными) пикселями. Примеры видов распределения ошибки: e e 7e/16 e 3e/16 5e/16 простейший e/16 Floyd-Steinberg Фильтры Как работают фильтры Коэффициенты фильтра, ядро свертки 3x3, «функция размытия точки» 0 1 0 1 Ker[k , p] 1 2 1 6 0 1 0 -1 ≤ k ≤ 1, -1 ≤ p ≤ 1 Фильтры Свертка Dst [i, j ] Src[i, j ] Ker[k , p] Dst [i, j ] Src[i k , j p] Ker[k , p ] k,p // Обнулить изображение Dest[i][j] ... // Выполнить свертку for (i=0; i<Height; i++) // Для каждого пикс. Dest[i][j]... for (j=0; j<Width; j++) for (k=-1; k<=1; k++) // ...превратить его в ядро свертки for (p=-1; p<=1; p++) Dest[i+k][j+p] += Src[i][j] * Ker[k][p]; // и сложить Подводные камни: • Выход за границы массива • Выход за пределы допустимого диапазона яркости пикселей • Обработка краев. Фильтры Свойства фильтров 1. Результат фильтрации однотонного (константного) изображения – константное изображение. Его цвет равен Dest Src Ker[k , p ] k, p 2. Следствие: чтобы фильтр сохранял цвет однотонных областей, нужно чтобы Ker[k , p] 1 k, p 3. Следствие: если сумма коэффициентов фильтра равна нулю, то он переводит однотонные области в нулевые. Примеры фильтров Размытие (blur) Примеры фильтров Повышение четкости (sharpen) Примеры фильтров Нахождение границ (edges) Примеры фильтров Тиснение (embossing) Примеры фильтров 1 2 1 Простейшее размытие Константное размытие “box-фильтр” Ker[k , p] 1 2 3 2 15 1 2 1 1 Ker[k , p ] Sum (любой размер фильтра) Гауссово размытие (любой размер фильтра) 1 k 2 p2 Ker[k , p] exp Sum 2 2 Примеры фильтров 1 2 1 2 22 2 10 1 2 1 Повышение резкости Нахождение границ Тиснение 1 0 1 0 1 4 1 0 1 0 1 1 0 0 1 0 0 1 0 + модуль, нормировка, применение порога… + сдвиг яркости, нормировка… Фильтры Некоторые свойства свертки Пусть X и Y – изображения, H – ядро свертки 1. Линейность (const X ) H const ( X H ) ( X Y ) H ( X H ) (Y H ) 2. Инвариантность к сдвигу ( X [i i0 , j j0 ] H ( X H )[i i0 , j j0 ] Фильтры Сепарабельные (разделимые) фильтры Ker[k , p] F (k ) G ( p) Если фильтр сепарабельный, то фильтрацию можно производить быстрее: 1. Отфильтровать все столбцы одномерным фильтром F(k) 2. Отфильтровать все строки одномерным фильтром G(p) Гауссиан – сепарабельный фильтр, т.к. 1 k2 p2 Gauss[k , p] exp exp 2 Sum 2 2 2 Еще один сепарабельный фильтр – box-фильтр Фильтры Unsharp Mask – – Параметры: радиус, сила эффекта, порог срабатывания Идея: вычесть из изображения его размытую копию, скомпенсировав уменьшение яркости R[i, j ] (1 ) X [i, j ] GX [i, j ] α контролирует силу эффекта, GX – размытая копия изображения (обычно фильтр Гаусса) – Переменная сила эффекта α помогает избежать усиления шума. Обычно α уменьшают при малых значениях разности X – GX (меньше порога срабатывания) Фильтры Медианный фильтр – – – – – Каждый пиксель принимает значение, являющееся медианой значений пикселей в окрестности Медиана – средний элемент в отсортированном массиве Позволяет подавить шум (особенно, единичные «выпадающие» пиксели), не размывая границ Медианный фильтр нелинейный (как доказать?) Векторная медиана – такой элемент массива, для которого сумма L1-расстояний до остальных элементов минимальна (для одномерного случая – совпадает с предыдущим определением) Фильтры Понятие о частотах в изображении и звуке – – – – Частоты и гармонические колебания (звук) Частоты и детали (изображение) Постоянная составляющая Действие фильтров Фильтр размытия – НЧ-фильтр Фильтр повышения четкости – ВЧ-фильтр Фильтр нахождения границ – ВЧ-фильтр Фильтры и обработка звука Шумоподавление Простейшие методы – Размытие изображения – вместе с шумом размывает детали – Размытие в гладких областях – остается шум вблизи границ Медианная фильтрация – хорошо подавляет импульсный шум, но удаляет мелкие детали – Шумоподавление Адаптивные алгоритмы – yi , j xi k , j m W (i, j , k , m) K nearest neighbors (K-NN) k , mQ усреднение окружающих пикселей ( xi , j xi k , j m ) 2 k 2 m2 exp W (i, j , k , m) exp 2 2 с весами h фотометрическая близость пространственная близость Шумоподавление Адаптивные алгоритмы – Non-local means (NL-means) – веса зависят от близости целых блоков, а не отдельных пикселей (x ) (x i, j ik , j m ) W (i, j, k , m) exp h2 2 ν(xi,j) – блок вокруг пикселя xi,j Метрики качества Как измерить похожесть двух изображений? исходное изображение искаженное изображение Метрики качества Среднеквадратичная ошибка (MSE) 1 MSE N N (x y ) i 1 i 2 i N – число пикселей Пиковое отношение сигнал/шум (PSNR) M2 PSNRdB 10 lg MSE M – максимальное значение пикселя Метрики качества PSNR и MSE не учитывают особенности человеческого восприятия! Оригинал Далее будут использованы рисунки из статьи Wang, Bovik, Lu “WHY IS IMAGE QUALITY ASSESMENT SO DIFFICULT?” Метрики качества У этих изображений одинаковые PSNR с оригиналом (примерно 25 dB) Повышена контрастность Добавлен белый гауссов шум Метрики качества И у этих – тоже примерно 25 dB! Добавлен импульсный шум Размытие Метрики качества И у этого – тоже! Артефакт блочности после JPEG Метрики качества Вывод: PSNR не всегда отражает реальный видимый уровень искажений. Как улучшить? – HVS models (human visual system) – – Использовать функцию чувствительности глаза к различным частотам (CSF) Использовать свойство маскировки Использовать равномерные к восприятию цветовые пространства (CIE Lab, CIEDE2000) Метрики качества Contrast sensitivity function (CSF) – Показывает чувствительность глаза к различным частотам Абсцисса – пространственная частота (колебаний / градус угла обзора)