Цвет, квантование, фильтрация, шумоподавление

advertisement
Лекция 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 , mQ
усреднение окружающих
пикселей
 ( 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
ik , 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)

–
Показывает чувствительность глаза к различным
частотам
Абсцисса – пространственная частота
(колебаний / градус угла обзора)
Download