6. Виды цифровой обработки
6
- Распознавание образов/текста
- Задачи классификации
- Нейронные сети
- Геометрические
преобразования
- Цветовая коррекция
- Наложение эффектов
13. Размытие по Гауссу
(блюр)
где
x, y - координаты точки изображения (пикселя)
𝞼 - стандартное отклонение распределения Гаусса (радиус блюра)
G(x,y) =
1
2πσ 2
e
−
x2
+y2
2σ 2
13
14. Размытие по Гауссу
- Вершина колокола -
обрабатываемый пиксель
- Значение пикселя - средне-
взвешенное значение по
окрестности
- Учитываются только пиксели
в районе 3𝞼 (правило трех
сигм)
14
15. Размытие по Гауссу,
общий алгоритм
1. Построение матрицы свертки размером 3𝞼
2. ДЛЯ каждой точки изображения
Вычисляем средне-взвешенное значение цвета точки
по окрестности, используя матрицу свертки.
Note: На практике используют массив вместо матрицы, для достижения O(n)
15
21. GPU
- Много параллельных процессоров
- Векторные операции нативно
- Сравнимая с CPU частота
- Сверх-быстрая видео память
*iPhone6’s GPU GX6450 - 300 Giga FLOPS
21
22. OpenGL ES 2.0
- Простой интерфейс
- Прямой доступ к GPU
- Поддержка шейдеров
- Широкое распространение
22
23. Шейдер
- GLSL, C-like language
- Вертексные - для вершин объектов сцены
- Пиксельные - для точек изображения
- Встроенные команды для векторных типов и
операций, like vec3 color = vec3(1.0, 1.0, 1.0)*0.5
- Не нужно думать как параллелить выполнение
23
25. Размытие по Гауссу на GPU
Вычисляем средне-взвешенное значение для
пикселя, используя матрицу свертки
Шаг 1 - CPU
Строим матрицу свертки (единичный набор операций)
Шаг 2 - GPU (шейдер)
25
26. Шейдер размытия по Гауссу
void main(void)
{
fragmentColor = texture2D(image, gl_FragCoord)*convolutionMatrix.mid
int kMatrixSize = 3sigma;
for (int i = 0; i < kMatrixSize; ++i)
{
for (int j = 0; j < kMatrixSize; ++j)
{
fragmentColor += texture2D(image, gl_FragCoord + vec2(i, j)) *
convolutionMatrix[i][j];
}
}
gl_FragColor = fragmentColor / (kMatrixSize*kMatrixSize)
}
26
27. Итоги
- Рассмотрели теорию цифровой обработки видео и
изображений
- Разобрали примеры простейших алгоритмов
- Подробно изучили как работает размытие по Гауссу
- Узнали о способе быстрой реализации алгоритма
на GPU с помощью шейдеров
27