Обработка изображений • Компьютерная графика • Компьютерное (машинное) зрение • Обработка изображений

advertisement
Обработка изображений
• Компьютерная графика
Computer graphics
• Компьютерное (машинное) зрение
Computer (machine) vision
• Обработка изображений
Image processing
Вежневец Владимир
vvp@graphicon.ru
Обработка изображений
Семейство методов и задач, где входной и
выходной информацией являются изображения.
Примеры:

Улучшение качества изображения




В том числе устранение шума в изображениях
А так же усиления полезной и подавления нежелательной (в
контексте конкретной задачи) информации
Сжатие изображений
Спецэффекты
Изображение
Изображение оптическое – картина, получаемая в результате
прохождения через оптическую систему лучей,
распространяющихся от объекта, и воспроизводящая его контуры и
детали.
Физический энциклопедический словарь.
Компьютерное представление изображения:
Функция интенсивности (яркости) канала
I  g ( x, y), {x [ x0 , x1 ], y [ y0 , y1 ]}
Используется дискретное представление
I  g (i, j ),{i  1, n, j 1, m}
«Улучшение» изображения

Изменение контраста изображения

Компенсация:


Ограниченного диапазона яркостей датчика (камеры)
“Плохой” функции передачи датчика (камеры)
f ( x)  y
x – характеристика яркости света
y – яркость пиксела изображения
Изменение контраста изображения
Что нас может не устраивать в полученном изображении:
• Узкий или смещенный диапазон яркостей пикселей
• Концентрация яркостей вокруг определенных значений,
неравномерное заполнение диапазона яркостей
Способ коррекции - к изображению применяется преобразование
яркостей, компенсирующий нежелательный эффект:
1
f ( y)  x
y – яркость пиксела на исходном изображении,
x – яркость пиксела после коррекции.
Линейная коррекция
Компенсация узкого диапазона яркостей – линейное растяжение:
f 1 ( y )  ( y  ymin ) *
(255  0)
( ymax  ymin )
График функции f -1(y)
Линейная коррекция
Компенсация узкого диапазона яркостей – линейное растяжение:
Линейная коррекция
Линейное растяжение – «как autolevels в Photoshop»
Нелинейная коррекция
Нелинейная компенсация недостаточной контрастности
Часто применяемые функции:
• Гамма-коррекция
• Изначальная цель – коррекция для правильного
отображения на мониторе.
x  c  y
• Логарифмическая
• Цель – сжатие динамического диапазона при визуализации
данных
x  c  log( 1  y )
Гамма-коррекция
Гамма-коррекция
• Изначальная цель – коррекция для правильного
отображения на мониторе. Так называют преобразование вида:
x  c  y
Графики функции f -1(y)
Нелинейная коррекция
График функции f -1(y)
Сравнение линейной и нелинейной
коррекции
Компенсация разности освещения
Идея:
Формирование изображения:
I (i, j )  l (i, j )  f (i, j )
Плавные изменения яркости относятся к освещению,
резкие - к объектам.
объект f (i, j )
освещение
l (i, j )
Изображение
освещенного
объекта I (i , j )
Выравнивание освещения

Алгоритм

Получить приближенное изображение освещения
путем низкочастотной фильтрации
l (i, j )  I (i, j )  G

Восстановить изображение по формуле
I (i, j )
f (i, j ) 
l (i, j )
Выравнивание освещения
Пример
Цветовая коррекция изображений

Изменение цветового баланса

Компенсация:


Неверного цветовосприятия камеры
Цветного освещения
«Серый мир»

Предположение:


Сумма всех цветов на изображении естественной
сцены дает серый цвет;
Метод:

Посчитать средние яркости по всем каналам:
R

1
N
 R( x, y);
G
1
N
 G( x, y);
B
1
B( x, y );

N
Avg 
R G  B
;
3
Масштабировать яркости пикселей по следующим
коэффициентам:
R  R 
Avg
Avg
Avg
; G  G 
; B  B 
;
R
G
B
«Серый мир» - примеры
«Серый мир» - примеры
«Серый мир» - примеры
«Идеальный отражатель»

Предположение:


Наиболее яркие области изображения относятся к
бликам на поверхностях, модель отражения которых
такова, что цвет блика = цвету освещения;
(дихроматическая модель)
Метод


Обнаружить максимумы по каждому из каналов:
Rmax , Gmax , Bmax
Масштабировать яркости пикселов:
R*
255
;
Rmax
B*
255
;
Bmax
G*
255
;
Gmax
Цветовая коррекция изображений

Растяжение контрастности (“autolevels”)


Идея – растянуть интенсивности по каждому из
каналов на весь диапазон;
Метод:


Найти минимум, максимум по каждому из каналов:
Rmin , Rmax , Gmin , Gmax , Bmin , Bmax
Преобразовать интенсивности:
( R  Rmin ) *
(255  0)
(255  0)
; (G  Gmin ) *
;
( Rmax  Rmin )
(Gmax  Gmin )
( B  Bmin ) *
(255  0)
;
( Bmax  Bmin )
Растяжение контрастности (“autolevels”)
Растяжение контрастности (“autolevels”)
Коррекция с опорным цветом

Предположение


Источник:



Пользователь указывает цвет вручную;
Априорные знания – «облака – белые»
Хорошая фотография этой же сцены
Метод

Преобразовать по каждому из каналов цвета по
формуле:
R*
Rdst
;
Rsrc
G*
Gdst
;
Gsrc
B*
Bdst
;
Bsrc
Коррекция с опорным цветом

Примеры:
Борьба с шумом изображения

Подавление и устранение шума

Причины возникновения шума:


Несовершенство измерительных приборов
Хранение и передача изображений с потерей данных
Информация содержащаяся в
изображении
Изображение
Полезная информация
Шум/артефакты
Подавление и устранение шума
Устранение шума в бинарных изображениях
Бинарное изображение – изображение, пиксели
которого принимают всего два значения (0 и 1).
Широко известный способ - устранение шума с
помощью операций математической морфологии:
 Сужение (erosion)
 Расширение (dilation)
 Закрытие (closing)
 Раскрытие (opening)
Операции математической морфологии
Расширение
A (+) B = {t  R2: t = a + b, a  A, b  B}
A (+) B
B
Операции математической морфологии
Сужение
A (-) B = (AC (+) B)С, где AC – дополнение A
A
B
A(-)B
Свойства морфологических операций
Коммутативный закон
 A (+) B = B (+) A
 A (-) B < > B (-) A
Ассоциативный закон
 A (+) (B (+) C) = (A (+) B) (+) C
 A (-) (B (-) C) = (A (-) B) (-) C
Дискретные операции морфологии
A
B
A(+)B
Алгоритм морфологического сужения
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 <= MH/2; j++)
{
for(i = -MW/2; i <= MW/2; i++)
if((mask[i][j]) && (src[x + i][y + j] < min))
{
min = src[x + i][y + j];
}
}
dst[x][y] = min;
}
}
}
Алгоритм морфологического
расширения
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 <= MH/2; j++)
{
for(i = -MW/2; i <= MW/2; i++)
if((mask[i][j]) && (src[x + i][y + j] > max))
{
max = src[x + i][y + j];
}
}
dst[x][y] = max;
}
}
}
Операции раскрытия и закрытия
Морфологическое раскрытие (opening)
 open(A, B) = (A (-) B) (+) B
Морфологическое закрытие (closing)
 close(A, B) = (A (+) B) (-) B
Образовательные материалы по мат. морфологии
доступны по адресу:
http://projects.graphicon.ru/publiclib/catalog/214
Важное замечание
Множество A обычно является объектом обработки, а множество
B (назваемое структурным элементом) – инструментом.
Результат морфологических операций во многом определяется
применяемым структурным элементом. Выбирая различный
стуктурный элемент можно решать разные задачи обработки
изображений:
•
•
•
•
Шумоподавление
Выделение границ объекта
Выделение скелета объекта
Выделение сломанных зубьев на изображении шестерни
Устранение шума в бинарных
изображениях
Пример бинарного изображению с сильным шумом
Применения сужения к бинарному
изображению с сильным шумом
0 1 0 
1 [1] 1


0 1 0
1 1 1
1 [1] 1


1 1 1
0
0

1

1
1

0
0

0 1
1
1
1
1
1
0
1
1 1
1 1
1 [1]
1 1
1 1
1 1
1 0 0
1 1 0
1 1 1

1 1 1
1 1 1

1 1 0
1 0 0
Применения открытия к бинарному
изображению с сильным шумом
0 1 0 
1 1 1


0 1 0
1 1 1
1 1 1


1 1 1
0
0

1

1
1

0
0

0 1 1 1 0 0
1 1 1 1 0
1 1 1 1 1

1 1 1 1 1
1 1 1 1 1

1 1 1 1 0
1 1 1 0 0
1
1
1
1
1
0
Устранение шума в бинарных
изображениях
Пример бинарного изображению с дефектами
распознаваемых объектов
Применения закрытия к бинарному
изображению с дефектами объектов
1 1 1
1 1 1


1 1 1
0
1

1

1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1

1
0
0
0

1

1
1

0
0

0 1 1 1 0 0
1 1 1 1 0
1 1 1 1 1

1 1 1 1 1
1 1 1 1 1

1 1 1 1 0
1 1 1 0 0
1
1
1
1
1
0
Не лучший пример для морфологии
Не во всех случаях математическая морфология так
легко убирает дефекты, как хотелось бы…
Применения операции открытия
0 1 0 
1 1 1


0 1 0
1 1 1
1 1 1


1 1 1
0
0

1

1
1

0
0

0 1 1 1 0 0
1 1 1 1 0
1 1 1 1 1

1 1 1 1 1
1 1 1 1 1

1 1 1 1 0
1 1 1 0 0
1
1
1
1
1
0
Подавление и устранение шума

Устранение шума в полутоновых и
цветных изображениях



Усреднение (box filter)
Медианный фильтр
Фильтр Гаусса (gaussian blurring)
Устранение шума в полутоновых и
цветных изображениях
Пример: изображение с равномерным шумом.
I (i, j )  gr (i, j )  Err (i, j)
Err(i,j) – нормально распределенная случайная
величина.
Операция «свертка» (convolution)
Свертка двумерной функции f по функции g в
непрерывном и дискретном случае.
 f ( x  λ)( y  μ)  g (λ,μ)ddμ
 f  g  ( x, y ) 
 λ,μ 
n1
 f  g  (i, j )  
m1
 f (i  l )( j  k )  g (l , k )
l  n0 k  m0
Часто, свертка изображения по какой-либо функции
называется применением фильтра к изображению.
Усреднение (box filter)
Операция усреднения значения каждого пикселя –
cвертка по константной функции:
n
m
1
I (i, j )    I (i  l )( j  k ) 
4nm
l  n k  m
Результат применения:
Подавление и устранение шума
Устранение шума в полутоновых, цветных и бинарных
изображениях с помощью медианного фильтра - выбор
медианы среди значений яркости пикселей в некоторой
окрестности.
Определение медианы:
Ai , i  1,n; - отсортированный набор чисел,
An / 2   медиана набора.
Медианный фильтр радиусом r – выбор медианы среди
пикселей в окрестности [-r,r].
Медианный фильтр
Результат применения медианного фильтра с радиусом 5 пикселей.
Результат применения медианного фильтра с радиусом в 7 пикселей
к изображению с шумом и артефактами в виде тонких светлых
окружностей.
Очистка изображения с помощью медианного
фильтра
Фильтр с окрестностью 3x3
Фильтр Гаусса (gaussian blurring)
Свертка по функции:
I (i, j ) 
n
m

I (i  l )( j  k ) 
l  n k  m
d  l2  k2
Параметр σ задает степень
размытия.
На графике функция с
σ  5.
1
e
2πσ

d2
2σ2
Маленкая экскурсия к Фурье
+
Низкие частоты
Высокие частоты
Фильтр Гаусса (gaussian blurring)
Результаты свертки по функции Гаусса и по
константной функции (усреднения).
Фильтр Гаусса с
Sigma = 4
Усреднение по 49
пикселям (7x7)
Исходное изображение
Важное свойство фильтра Гаусса – он по сути является
низкочастотным фильтром.
Как бороться с шумом аппаратуры?
Предположим, камера, которой производится съемка
заметно «шумит». Обычно шум измерительной
аппаратуры моделируется как случайная нормально
распределенная случайная величина с нулевым
средним - Err(i,j) ;
I (i, j )  g r (i, j )  Err (i, j );
1
I (i, j ) 
N
N
I
k 1
k
(i, j );
E ( I (i, j ))  g r (i, j );
Примеры шумоподавления
Зашумленные изображения
Усреднение по 10
изображениям
Примеры шумоподавления
Исходное изображение
Усреднение по 9
пикселям (3x3)
Медианный фильтр
(3x3)
Фильтр Гаусса с
Sigma = 0,5
Примеры шумоподавления
Исходное изображение
Испорченное
изображение
Примеры шумоподавления
Усреднение по 9
пикселям (3x3)
Медианный фильтр
(3x3)
Подчеркивание контуров объекта
Рассмотрим подчеркивание краев (границ)
Край(edge) – резкое изменение яркости на изображении, часто
соответствует границам объектов на изображении.
Подчеркивание краев
Нас интересуют области
резкого изменения яркости –
нахождение таких областей
можно организовать на основе
анализа первой и второй
производной изображения.
График
функции
График
производной
График 2ой
производной
Подчеркивание краев
Известно, что наибольшее изменение функции происходит
в направлении ее градиента. Величина изменения
измеряется абсолютной величиной градиента.
 I

I
I ( x, y )   ( x, y ), ( x, y ) ;
y
 x


 I
  I
I ( x, y )   ( x, y )    ( x, y ) 
 x
  y

2
2
Часто используется приближенное вычисление градиента:
I
I
I ( x, y ) 
( x, y ) 
( x, y )
x
y
Подчеркивание краев
Семейство методов основано на приближенном вычисление
градиента, анализе его направления и абсолютной
величины. Свертка по функциям:
 1
0

0
1 
0
1

Робертса
 1  - 1  1  1
0 0 0
0  
 1
1
1 
 -1
 1

 1
Превитт
0
0
0
1
1 
1 
 -1
0

 1
2
0
2
 1
0 
1 
 -1
 2

  1
0
0
0
1
2 
1 
Собеля
Математический смысл – приближенное вычисление
производных по направлению.
Подчеркивание краев
Примеры применения операторов подчеркивания краев:
Робертса
Превитт
Собеля
Подчеркивание краев
Выделение краев с помощью второй производной по
направлению.
Матрица оператора вычисления второй производной:
1
1
1
  2  2  2


 1
1
1 
По вертикали
Вертикальная маска
1  2 1
1  2 1


1  2 1
По горизонтали
Горизонтальная маска
Подчеркивание краев
Моделирование процесса человеческого зрения – Marr и
Hildreth предложили анализ нулей результатов свертки по
оператору Лапласа от функции Гаусса (LoG):
f ( x, y ) 
 f  f
 2 ; g ( x, y )  Ae
2
 x  y
2
2
x

x2  y2  
e
g ( x, y )  A 2 
σ 

2

x2  y2
σ
;
 y2
σ
График второй производной одномерной
функции Гаусса с sigma = 8
Подчеркивание краев
Маски соответствующие операторам LoG с различными
sigma:
 0 1 0 
 1 4  1


 0  1 0 
Маска 3x3
 0
 0

 0

 1
 1

 2
 1

 1
 0

 0

 0
0
0
2
4
8
9
8
4
2
0
0
0
2
7
 15
 22
 23
 22
 15
7
2
0
1
4
 15
 24
 14
1
 14
 24
 15
4
1
1  2
8 9
 22  23
 14  1
52 103
103 178
52 103
 14  1
 22  23
8 9
1  2
1
8
 22
 14
52
103
52
 14
 22
8
1
Маска 11x11
1
0
4 2
 15  7
 24  15
 14  22
 1  23
 14  22
 24  15
 15  7
4 2
1
0
0
0
2
4
8
9
8
4
2
0
0
0 
0 
0 

1 
1 

2 
1 

1 
0 

0 

0 
Подчеркивание краев
Результат применения оператора LoG:
Маска 3x3
Маска 5x5
Операция оконтуривания объекта
При работе с бинарными изображениями контуры объекта можно
получить с помощью операций математической морфологии
Внутреннее оконтуривание

CI = A – (A (-) B)
Внешнее оконтуривание

CO = (A (+) B) – A
Пример оконтуривания объекта
Download