SlideShare a Scribd company logo
1 of 69
Download to read offline
Применение современных
графических процессоров для
обработки видеоданных

           Илья Цветков
             Video Group
      CS MSU Graphics & Media Lab
Only for
 Maxus 



                Содержание доклада
           Введение
           Устройство современного графического
            процессора
               Графический конвейер
               Вершинные и пиксельные шейдеры
           Базовые концепции программирования на GPU
               Оптимизация
           Алгоритмы обработки видео на GPU
               Компенсация движения
               Фильтрация
           Результаты

                                                               2
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Почему GPU?
           Пиковая производительность GPU
            последнего поколения  около 600 GFLOPS
           Скорость обмена данными с видеопамятью
            составляет 60 Гбайт/с
           Даже low-end видеокарты позволяют
            обрабатывать большие изображения
            быстрее чем CPU.
           Очень широко распространены среди
            обычных пользователей компьютеров в
            отличие от FPGA или DSP.

                                                               3
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Рост производительности GPU




                                            J. D. Owens, D. Luebke et al., “A Survey of General-Purpose
                                                                  Computation on Graphics Hardware,”      4
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
                                                   EUROGRAPHICS 2005, State of the Art reports, 2005
Only for
 Maxus 
                Почему GPU так быстро
                работают

           CPU
               Оптимизирован для исполнения
                последовательных операций
               Ориентирован на обработку скалярных данных
           GPU
               Графическому процессору необходимо
                производить однотипные операции над
                большими объемами данных
               Изначально проектируется как векторный
                процессор

                                                               5
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
             Устройство современного
             графического процессора

           Графический конвейер
           Программируемый вершинный
            процессор
           Растеризация
           Текстуры
           Программируемый фрагментный
            процессор
           Рендеринг в текстуру
                                                               6
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Графический конвейер
          CPU              RAM


                  GPU
                                    Видеопамять



                   Вершинный                        Фрагментный   Кадровый
                                   Растеризация
                    процессор                        процессор      буфер
    Геометрия
     объектов

           Каждый этап конвейера может быть настроен с помощью
            графического API (например OpenGL или Direct3D)
           Некоторые этапы полностью программируемы, другие
            обладают фиксированной функциональностью

                                                                             7
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



             Геометрия объектов


       CPU                 RAM


                 GPU
                                    Видеопамять



                  Вершинный                         Фрагментный   Кадровый
                                   Растеризация
                   процессор                         процессор      буфер
    Геометрия
     объектов




                                                                             8
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Геометрия объектов
           Является массивом сгруппированных точек,
            обладающих атрибутами
           Виды группировки:
               отдельные точки;
               пары точек  линии;
               треугольники;
               многоугольники
           Атрибуты точек:
               координаты точки в пространстве;
               цвет;
               координаты текстуры (до 8 различных векторов);
               произвольные пользовательские атрибуты


                                                                 9
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



             Вершинный процессор


       CPU                 RAM


                 GPU
                                    Видеопамять



                  Вершинный                         Фрагментный   Кадровый
                                   Растеризация
                   процессор                         процессор      буфер
    Геометрия
     объектов




                                                                             10
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Вершинный процессор
           Полностью программируемый этап графического
            конвейера
           Входные данные  последовательность точек (и их
            атрибутов), задающих геометрию объектов
           Каждая точка обрабатывается независимо
           Точки обрабатываются параллельно на нескольких
            вершинных процессорах (например, на 12)
           Работает над векторами (координаты, цвет  вектора)
           Может изменять произвольным образом координаты и
            атрибуты точек
           Выходные данные  последовательность точек с
            преобразованными координатами и атрибутами
           Может добавить новые или убрать некоторые атрибуты

                                                                  11
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



             Растеризация


       CPU                 RAM


                 GPU
                                    Видеопамять



                  Вершинный                         Фрагментный   Кадровый
                                   Растеризация
                   процессор                         процессор      буфер
    Геометрия
     объектов




                                                                             12
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Растеризация
           Этап с фиксированной функциональностью
           Входные данные  набор преобразованных
            вершинным процессором точек
           Группирует точки в полигоны
           Проектирует полигоны на экран
           Определяются пиксели экрана, покрываемые
            полигоном
           Для каждого пикселя линейно интерполируются
            все атрибуты вершин (кроме координат)
           Выходные данных  поток пикселей
            (фрагментов), обладающих атрибутами
                                                               13
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



             Текстуры


       CPU                 RAM


                 GPU
                                    Видеопамять



                  Вершинный                         Фрагментный   Кадровый
                                   Растеризация
                   процессор                         процессор      буфер
    Геометрия
     объектов




                                                                             14
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Текстуры
           Текстуры  массивы
           Поддерживаются 1D-, 2D- и 3D-текстуры
           Ограничение на размер: максимум 40964096
            пикселей для 2D-текстуры
           Изначально поддерживаются только квадратные
            POT-текстуры
           Существуют расширения для поддержки
            прямоугольных NPOT-текстур
           Форматы пикселей: от однокомпонентных (только
            яркость) до четырехкомпонентных (ARGB)
           Значения могут храниться в виде байта или числа
            с плавающей точкой

                                                               15
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



             Фрагментный процессор


       CPU                 RAM


                 GPU
                                    Видеопамять



                  Вершинный                         Фрагментный   Кадровый
                                   Растеризация
                   процессор                         процессор      буфер
    Геометрия
     объектов




                                                                             16
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Фрагментный процессор
           Полностью программируемый этап графического
            конвейера
           Входные данные  поток пикселей (фрагментов) с
            интерполированными атрибутами
           Каждый фрагмент обрабатывается независимо
           Пиксели обрабатываются параллельно на нескольких
            фрагментных процессорах (например, на 24)
           Имеет доступ к видеопамяти и может получить по
            заданным координатам пиксель из текстуры (возможна
            интерполяция на лету)
           Работает с векторами без потери в производительности
           Является средством основных вычисление для GPGPU
           Выходные данные  пиксели конечного изображения

                                                                   17
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



             Рендеринг в текстуру


       CPU                 RAM


                 GPU
                                    Видеопамять



                  Вершинный                         Фрагментный   Кадровый
                                   Растеризация
                   процессор                         процессор      буфер
    Геометрия
     объектов




                                                                             18
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Рендеринг в текстуру
           Текстуры могут быть использованы для
            сохранения результатов рендеринга
           Текстура может находится либо в режиме
            только для чтения либо в режиме только
            для записи
           Текстуры могут быть использованы для
            хранения промежуточных результатов
            вычислений
           Текстуры могут быть выгружены обратно в
            оперативную память

                                                               19
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Multiple Rendering Target (MRT)

           Фрагментный шейдер может возвращать
            несколько результатов
           Рендеринг может производиться в
            несколько буферов одновременно
           На данный момент максимальное число
            «целей рендеринга»  четыре
           Использование MRT позволяет при
            вычислениях добиться оптимальной
            арифметической интенсивности алгоритмов

                                                               20
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
                Базовые концепции
                программирования на GPU

           Концепции программирования на GPU
               Массивы  текстуры
               Тело цикла  шейдер
               Вычисление  рисование
           Метод пинг-понга
           Редукция
           Перенос вычислений на вершинный
            процессор
                                                               21
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Программа для CPU
      coef1 = 0.76;
      coef2 = 1.0 – coef1;

      for (int i = 0; i < imageHeight; ++i) {
         for (int j = 0; j < imageWidth; ++j) {
              imgA[i, j].red =
                       coef1 * imgA[i, j].red + coef2 * imgB[i, j].red;

                imgA[i, j].green =
                        coef1 * imgA[i, j].green + coef2 * imgB[i, j].green;

                imgA[i, j].blue =
                        coef1 * imgA[i, j].blue + coef2 * imgB[i, j].blue;

            }
      }


                                                                               22
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Массивы  текстуры
           Двумерный массив  2D-текстура
           Структура текстуры: RGB
           Формат данных: байты
           Необходимы 3 текстуры, т. к. к imgA нужен доступ в режиме
            чтения и записи одновременно
           Создание необходимой текстуры средствами OpenGL:
      glTexImage2D(
              GL_TEXTURE_RECTANGLE_ARB,            //   Прямоугольная текстура
              GL_RGB8,                             //   RGB, 8 бит на канал
              imageWidth,                          //   Ширина текстуры
              imageHeight,                         //   Высота текстуры
              0,
              GL_BGR,                              // Структура данных в ОЗУ
              GL_UNSIGNED_BYTE,                    // Формат данных в ОЗУ
              imgA                                 // Изображение
      );

                                                                                 23
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Тело цикла  шейдер
           Вычисления в теле цикла можно производить
            параллельно
           Значение каждого пикселя  вектор
           Пример кода на Сg, реализующего «ядро»
            вычислений:
      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR
      {
         float3 valA = texRECT(imgA, coords).rgb;
         float3 valB = texRECT(imgB, coords).rgb;

            return valA * coef1 + valB * coef2;
      }


                                                                        24
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Векторные типы данных
      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR
      {
         float3 valA = texRECT(imgA, coords).rgb;
         float3 valB = texRECT(imgB, coords).rgb;

            return valA * coef1 + valB * coef2;
      }

           Поддерживаются векторные величины (до четырех
            компонент в векторе)
           Матрицы размера до 44 (например float3x4, float4x2)
           Соответствующие операции: умножение вектора на число,
            скалярное произведение векторов и т. п.
                                                                        25
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Оператор перестановки
      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR
      {
         float3 valA = texRECT(imgA, coords).rgb;
         float3 valB = texRECT(imgB, coords).rgb;

            return valA * coef1 + valB * coef2;
      }

           Компоненты в векторе могут быть переставлены
           Примеры:
      float3 a = valA.gbr + valB.yzx;
      float2 b = valA.xy + valB.yz;
      float4 c = valA.xxyy + valB.yzzx;

                                                                        26
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Обращение к текстурам
      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR
      {
         float3 valA = texRECT(imgA, coords).rgb;
         float3 valB = texRECT(imgB, coords).rgb;

            return valA * coef1 + valB * coef2;
      }

           Различные типы текстур используют различные типы
            адресации пикселей
           Текстуры задаются в виде параметров шейдера



                                                                        27
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
               Постоянные параметры
               шейдера

      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR
      {
         float3 valA = texRECT(imgA, coords).rgb;
         float3 valB = texRECT(imgB, coords).rgb;

            return valA * coef1 + valB * coef2;
      }

           Задаются функциями графической библиотеки
           Одинаковы для всех обрабатываемых элементов




                                                                        28
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
               Переменные параметры
               шейдера

      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR
      {
         float3 valA = texRECT(imgA, coords).rgb;
         float3 valB = texRECT(imgB, coords).rgb;

            return valA * coef1 + valB * coef2;
      }

           Являются атрибутами фрагментов, полученных после
            растеризации
           Тип атрибута, соответствующий данному параметру,
            указывается после двоеточия



                                                                        29
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Возвращаемое значение
      float3 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT imgA, uniform samplerRECT imgB,
                  uniform float coef1, uniform float coef2) : COLOR;

           Возвращение результата аналогично функциям в C
           Возвращаемому значению также приписывается
            определенная семантика
           При использовании MRT:
      struct output {
          float4 c0 : COLOR0;
          float4 c1 : COLOR1;
      };

      output main(float2 coords : TEXCOORD0, uniform samplerRECT texture);


                                                                             30
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Вычисление  рисование
           Устанавливается текстура, в которую будет
            производиться рендеринг
           Задается ортогональная проекция полигонов на экран
           Рисуется прямоугольник соответствующего размера с
            необходимыми атрибутами вершин
           Вершинный процессор может провести
            предварительные вычисления
           В процессе растеризации для каждого пикселя
            генерируется фрагмент с некоторыми атрибутами
           Пиксельный шейдер выполняется над каждым
            фрагментом
           Результаты могут быть выгружены обратно в
            оперативную память или использоваться далее

                                                                 31
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Ограничения на шейдеры
           Количество инструкций в шейдере ограничено
               Разделение шейдера на несколько частей и
                последовательное их исполнение  метод пинг-понга
           Количество обращений к текстурам также ограничено
               Метод редукции
           Несмотря на наличие кеша, обращение к текстуре
            занимает больше времени, чем выполнение
            арифметической операции
               Проектирование шейдера, в котором количество
                арифметических операций больше количества обращений
                к текстурам
           Ветвление доступно, но является «дорогой» операцией
               Использование доступных на GPU функций вычисления
                максимума, минимума и т. п.

                                                                      32
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Ограничения на шейдеры
                          Ограничения                      ATI 9600        ATI X800
                   Количество атрибутов                               16              16
      Вершинный
                   Количество инструкций                          256             256
        шейдер
                   Количество регистров                               32              32
                   Количество атрибутов                               10              10
      Пиксельный   Количество инструкций                              64          512
        шейдер     Количество обращений к текстурам                   32          512
                   Количество регистров                               32              64

           Количество инструкций измеряется в машинный командах
            вершинного и фрагментного процессоров
           Количество доступных регистров важно, т. к. при сложных
            вычислениях нет возможности сохранить промежуточные
            результаты в основную память (в отличие от CPU)

                                                                                           33
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Метод пинг-понга
           Используются только две текстуры: X и Y
           В текстуру X загружаются данные
           На первом шаге шейдер берет данные из
            текстуры X, а рендеринг происходит в текстуру Y
           Изменяется шейдер, тектуры меняются ролями


                  Шейдер A                Шейдер B                Шейдер C



     Текстура X              Текстура Y              Текстура X              Текстура Y




                                                                                          34
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Редукция
           Применяется для нахождения суммы значений, минимума,
            максимума в области
           Рендеринг производится в два раза меньшую область
           Шейдер находит локальный максимум в области 22

     47 2    3 57 5 12 7   8      47 57 15 17                  64 68   71
     10 20 6 13 14 15 16 17       38 64 68 35                  71 70
     19 11 21 22 23 68 25 26      46 49 61 52
     38 29 64 31 32 33 35 34      71 67 69 70
     37 28 39 49 53 42 41 52
     46 1 48 40 61 51 44 43
     55 71 4 58 69 62 50 60
     30 65 66 67 24 59 70 56



                                                                            35
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Использование min и max
           Пример  поиск медианы из трех значений a, b и с
           Обычный код с использование условных операторов:

     if (a < b)
     {
         if (b < c)
              return   b;
         else
              return   (a > c) ? a : c;
     }
     else
     {
         if (b > c)
              return   b;
         else
              return   (a < c) ? a : c;
     }



                                                               36
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Использование min и max
           Определим функцию clamp:
                                                                 a, x  a
                                                                 
                (a  b) clamp( x, a, b)  max( a, min( b, x))   x, a  x  b
                                                                 b, x  b
                                                                 
           Тогда медиану можно вычислить:
                     median( a, b, c)  clamp(c, min( a, b), max( a, b))
           Код вычисления медианы на Cg с использованием встроенной
            функции clamp:
     float4 a = texRECT(texA, coords);
     float4 b = texRECT(texB, coords);
     float4 c = texRECT(texC, coords);

     return clamp(c, min(a, b), max(a, b));



                                                                                  37
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
               Перенос вычислений на
               вершинный процессор
           Пример шейдера обращающегося к двум соседним текселям:
      float4 main(float2 coords : TEXCOORD0,
                  uniform samplerRECT texture) : COLOR
      {
         float4 a = texRECT(texture, coords);
         float4 b = texRECT(texture, coords + float2(1, 0));

            return abs(a – b);
      }

           Выделенная операция сложения не является частью
            «полезных» вычислений, но будет выполняться для каждого
            обрабатываемого пикселя
           Такие вычисления могут быть перенесены на вершинный
            процессор

                                                                      38
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
               Перенос вычислений на
               вершинный процессор
           Вершинный шейдер:
      void main(in float4 in_pos       : POSITION,
                in float2 in_coords    : TEXCOORD0,
                out float4 out_pos     : POSITION,
                out float2 out_coords0 : TEXCOORD0,
                out float2 out_coords1 : TEXCOORD1)
      {
         out_pos = in_pos;
         out_coords0 = in_coords;
         out_coords1 = in_coords + float2(1, 0);
      }

           На этапе растеризации TEXCOORD0 и TEXCOORD1 будут
            линейно интерполированы для каждого пикселя


                                                                39
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
               Перенос вычислений на
               вершинный процессор
           Тогда пиксельный шейдер можно упростить:
      float4 main(float2 coords0 : TEXCOORD0,
                  float2 coords1 : TEXCOORD1,
                  uniform samplerRECT texture) : COLOR
      {
         float4 a = texRECT(texture, coords0);
         float4 b = texRECT(texture, coords1);

            return abs(a – b);
      }

           Но число текстурных координат ограничено восемью и уже
            при реализации на GPU свертки с ядром 33 аналогичный
            способ применить не удастся
           Для решение этой проблемы используют упаковку координат

                                                                      40
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
               Упаковка текстурных
               координат
           TEXCOORD0TEXCOORD7 могут быть векторами из четырѐх
            компонент
           При выборке из 2D-текстуры нужно задать только две
            координаты
           Вектором из четырех компонент можно задать до четырех
            точек в двумерном пространстве:
                                                               y       z
                   y       z       w
                                                                              coords.xy
                                                                             coords.xz
                                                           1       2
                                                      x
               1       2       3
     x
                                                           3       4
                                                      w
                                          coords.xw
                                       coords.xz                             coords.wz

                               coords.xy                                   coords.wy

                                                                                          41
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
                 Упаковка текстурных
                 координат
           Пример  координаты текстур для свѐртки 55 (c0c6
            определяют координаты текстур TEXCOORD0TEXCOORD6
            соответственно; c  исходные координаты TEXCOORD0):



                                                       c0   =   c.xyxy   +   float4(-2, 2,-1, 1);
                                                       c1   =   c.xyxy   +   float4( 0, 2, 1, 1);
                                                       c2   =   c.xyyy   +   float4( 2, 2, 1, 0);
                                                       c3   =   c.xyxy   +   float4(-2, 0,-1,-1);
                                                       c4   =   c.xyxy   +   float4( 0, 0, 1,-1);
                                                       c5   =   c.xyxy   +   float4( 1,-1, 2,-2);
                                                       c6   =   c.xxxy   +   float4(-2,-1, 0,-2);




                                                   Viola, I., Kanitsar, A., Gröller, M.E., “Hardware-Based
                                                 Nonlinear Filtering and Segmentation using High-Level       42
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
                                           Shading Languages,” Proceedings of IEEE Visualization, 2003
Only for
 Maxus 
                Алгоритмы обработки
                видео на GPU

           Motion Estimation (ME) на GPU
               Постановка задачи ME
               Реализация алгоритма на GPU
               Sub-pixel Motion Estimation
               Результаты
           Фильтрация видео на GPU
               Схема работы фильтра шумоподавления
               Производительность
               Результаты

                                                               43
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Постановка задачи ME
           Текущий кадр разбивается на прямоугольные блоки
           Для каждого блока текущего кадра в предыдущем кадре
            ищется наиболее «похожий» блок
           В качестве меры схожести двух блоков B1 и B2 размера MN
            обычно выступает SAD:
                                       M   N
                   SAD( B1 , B2 )   B1 ( x, y )  B2 ( x, y )
                                      x 1 y 1


           Часто поиск векторов движения осуществляется только для
            яркостной составляющей изображения
           Самым простым методом поиска векторов движения является
            полный перебор в некоторой области


                                                                       44
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
              Внутреннее представление
              макро-блока

           Макро-блок разбивается на 16 матриц 44
           Каждая из матриц передается в шейдер как
            постоянный параметр. Это позволяет значительно
            уменьшить число обращений к текстурам

                                  // Установка параметра шейдера
                                  float matrix[16];
                                  cgSetMatrixParameterfr(param, matrix);

                                  float3 main(float2 coords : TEXCOORD0,
                                              uniform samplerRECT texture,
                                              uniform float4x4 block) : COLOR
                                  {
                                      // Вычисления
                                  }
                                                   C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion
                                                Estimation for H.264/AVC using Programmable Graphics Hardware,”      45
CS MSU Graphics & Media Lab (Video Group)   www.compression.ru Conference on Multimedia Expo, 2006.
                                              Proceedings IEEE International
Only for
 Maxus 



              Формат данных
           ME выполняется только для яркостной компоненты
            кадра
           Используются текстуры BGRA, 8 бит на канал
           При загрузке изображения в текстуру исходные
            значения яркости упаковываются по 4 подряд
            идущих пикселя в один тексель

                                                               Тексель 1          Тексель 2

                                                               B G R A            B G R A




                1   2   3   4   5   6   7   8                  1    2   3    4    5   6    7    8


                                                       C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion
                                                    Estimation for H.264/AVC using Programmable Graphics Hardware,”      46
CS MSU Graphics & Media Lab (Video Group)       www.compression.ru Conference on Multimedia Expo, 2006.
                                                  Proceedings IEEE International
Only for
 Maxus 



                Вычисление SAD
           Пиксельный шейдер загружает из текстуры два
            соседних текселя (8 значений яркости)
           Вычисление SAD выполняется сразу для
            4 соседних позиций
           На примере одной строки блока 44:




            Строка: C1 , C2 , C3 , C4                           ADi , j  Ri  C j
                                                   C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion
                                                Estimation for H.264/AVC using Programmable Graphics Hardware,”      47
CS MSU Graphics & Media Lab (Video Group)   www.compression.ru Conference on Multimedia Expo, 2006.
                                              Proceedings IEEE International
Only for
 Maxus 



                 Вычисление SAD



     float4 pix1, pix2;                         // Два соседних текселя
     float4 c;                                  // Строка блока {C1, C2, C3, C4}
     float4 ad1, ad2, ad3, ad4;

     ad1    =   abs(c.xxxx   –   pix1.xyzw);                         //   {AD1,1,      AD2,1,    AD3,1,     AD4,1}
     ad2    =   abs(c.yyyy   –   float4(pix1.yzw, pix2.x));          //   {AD2,2,      AD3,2,    AD4,2,     AD5,2}
     ad3    =   abs(c.zzzz   –   float4(pix1.zw, pix2.xy));          //   {AD3,3,      AD4,3,    AD5,3,     AD6,3}
     ad4    =   abs(c.wwww   –   float4(pix1.w, pix2.xyz));          //   {AD4,4,      AD5,4,    AD6,4,     AD7,4}

     float4 sad = ad1 + ad2 + ad3 + ad4;                             // {SAD1, SAD2, SAD3, SAD4}

                                                     C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion
                                                  Estimation for H.264/AVC using Programmable Graphics Hardware,”      48
CS MSU Graphics & Media Lab (Video Group)     www.compression.ru Conference on Multimedia Expo, 2006.
                                                Proceedings IEEE International
Only for
 Maxus 



                Arithmetic Intensity
           Арифметическая интенсивность шейдера
            (arithmetic intensity)  отношение числа операций
            АЛУ к числу выборок из текстур
           Необходимо, чтобы арифметическая
            интенсивность шейдеров была достаточно высока
             около 8 операций АЛУ на один доступ
            к текстуре
               Причина  «медленный» доступ к памяти
               Во время получения текселя АЛУ продолжает работу
           Для различных GPU оптимальная арифметическая
            интенсивность различна
               Решение  реализация нескольких версий шейдера для
                различных GPU

                                                                     49
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Arithmetic Intensity
           Решением проблемы малой арифметической интенсивности
            может быть использование MRT
           Для одних и тех же текселей одновременно вычисляются
            сразу несколько результатов
           В предлагаемой реализации ME SAD можно вычислять более
            чем для одного блока за один проход
           Число выборок из текстуры при этом не изменяется, т. к.
            исходный блок задается в качестве параметра




       Сравнение времени выполнения ME для видео формата 1080p и областью перебора ±256
    пикселей при различном числе обрабатываемых блоков за один проход на GeForce 7800GT PCIe
                                                   C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion
                                                Estimation for H.264/AVC using Programmable Graphics Hardware,”      50
CS MSU Graphics & Media Lab (Video Group)   www.compression.ru Conference on Multimedia Expo, 2006.
                                              Proceedings IEEE International
Only for
 Maxus 
               Производительность
               предлагаемого метода ME




           Накладные расходы вызовов API не позволяют полностью раскрыть
            потенциал GPU при малых областях перебора
           «Узким местом» при вычислениях является выгрузка результатов
                                                   C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion
                                                Estimation for H.264/AVC using Programmable Graphics Hardware,”      51
CS MSU Graphics & Media Lab (Video Group)   www.compression.ru Conference on Multimedia Expo, 2006.
                                              Proceedings IEEE International
Only for
 Maxus 



              Sub-pixel Motion Estimation

           Пиксельная точность обычно недостаточна для
            качественной компенсации движения
           Для повышения качества используется
            полупиксельная, четверть-пиксельная или
            бóльшая точность
           Необходима интерполяция
           GPU позволяет проводить билинейную
            интерполяцию текстур во время обращения к ним
           Скорость интерполяции очень высока, т. к. эта
            функция GPU полностью реализована на
            аппаратном уровне

                                                               52
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Скорость интерполяции на GPU

                                                  CPU




                                                  GPU
                                               (readback)



                                                  GPU
                                           (w/o readback)




            Сравнение времени выполнения билинейной интерполяции на Pentium 4 1,6 ГГц и
            GeForce FX 5600 с учетом времени выгрузки результатов обратно в ОЗУ и без него

                                           Francis Kelly and Anil Kokaram, “Fast Image Interpolation for
                                               Motion Estimation using Graphics Hardware,” IS&T/SPIE       53
CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004
                                                    Electronic Imaging
Only for
 Maxus 



                Схема sub-pixel ME на GPU
                                                            В видеопамять загружаются
                          CPU                                текущий и предыдущий кадры
                                                             Для каждого вектора
                                                             движения из области поиска:
         Предыдущий
                                Текущий кадр                Задаются два вектора
            кадр
                                                             текстурных координат: для
                                                             текущего кадра и предыдущего
            Смещение
                                                             с учетом вектора движения
                                                             Находится разность текущего и
                          −
                                                         
                                                             предыдущего кадров с учетом
                                                             вектора движения
                     Вычисление                             Методом редукции для всех
                     SAD блоков                              блоков вычисляется SAD
                                             GPU            Результаты выгружаются в ОЗУ
                                           Francis Kelly and Anil Kokaram, “Fast Image Interpolation for
                                               Motion Estimation using Graphics Hardware,” IS&T/SPIE       55
CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004
                                                    Electronic Imaging
Only for
 Maxus 
                Производительность
                предлагаемого метода
                              CPU




                              GPU
                              (w/o SAD)




                              GPU
                              (with SAD)




            Время работы ME при различной точности и реализации без использования GPU, с
         использованием GPU и с использованием GPU в том числе и для вычисления SAD блоков
                                           Francis Kelly and Anil Kokaram, “Fast Image Interpolation for
                                               Motion Estimation using Graphics Hardware,” IS&T/SPIE       56
CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004
                                                    Electronic Imaging
Only for
 Maxus 
                  Точность предлагаемого
                  метода

            CPU




            GPU




        Качество кадров, скомпенсированных с                  Гистограмма ошибок вычисления SAD
       четверть-пиксельной точностью на CPU и              полученных на GPU из-за погрешностей при
        GPU, по сравнению с исходным кадром                             интерполяции
                                           Francis Kelly and Anil Kokaram, “Fast Image Interpolation for
                                               Motion Estimation using Graphics Hardware,” IS&T/SPIE       57
CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004
                                                    Electronic Imaging
Only for
 Maxus 
               Схема работы фильтра
               шумоподавления
           Схема фильтрации, полностью реализованная на GPU:


      Предыдущий                                               Расчет дисперсии
   скомпенсированный                                              области 33
          кадр                                                 каждого пикселя

                         −       Усреднение в
                                  области 33
                                                                  Размытие с
                                                 Медианная
       Текущий кадр                                            учетом дисперсии
                                                 фильтрация
                                                                    области

                         −       Усреднение в
                                  области 33
       Следующий
   скомпенсированный                                              Результат
          кадр



                                                                                  58
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                Реализация на GPU
           Формат данных
               Фильтрация проводится отдельно для яркостной и цветностных
                компонент
               Изображения находятся в текстурах в упакованном виде  по
                четыре точки в одном текселе
           Усреднение в области 33 реализовано в два прохода:
            суммирование проводится сначала по горизонтали, затем по
            вертикали
           Медианная фильтрация
               Проводится для пикселя только, если разности между
                скомпенсированными и исходным кадром в данной точке
                меньше заданного порога
               Для реализации порога условный оператор не используется.
                Применяется функция step:
                                            0, x  a
                               step(a, x)  
                                             1, x  a
                                                                             59
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                 Реализация на GPU
           Для области 33 каждого пикселя вычисляется дисперсия
              Расчет проводится по формуле (S  множество пикселей
               области; NS  число пикселей в S; f(q)  значение пикселя q):
                                                            
                                                              2

                          D( S )  2 N S  f (q)    f (q)  
                                   1       2

                                  N S  qS                  
                                                   qS      
                Вычисление проходит за 6 проходов
                   Вычисляется f (q) для каждого пикселя
                                 2

                     Аналогично усреднению находятся суммы
                     Вычисляется результирующее значение
           В зависимости от дисперсии, рассчитанной для области
            каждого пикселя, происходит размытие изображения
            полученного после медианной фильтрации


                                                                               61
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                 Размытие на GPU
           Так как сила размытия должна быть различна в разных областях
            изображения, то фильтр не может быть реализован как сепарабельный
           Коэффициенты нормированы так, чтобы сумма элементов ядра свѐртки
            равнялась 1
           Для области 33 в ядре свѐртки присутствуют только 3 различных значения
           Все коэффициенты хранятся в видеопамяти в виде одномерной RGB-
            текстуры
                Каждый тексель задает матрицу размытия
                Различным точкам текстуры соответствуют матрицы размытия различной
                 интенсивности
                Элементы RGB-векторов  байты

            51 32 19 63 31 17 71 32 14                                   0,066 0,122 0,066
             (N − 1)    Тексель N    (N + 1)
                                                                         0,122 0,248 0,122

                                       tex1D(texture, N);
                                                                         0,066 0,122 0,066
                                        Приведение к float3


                                                                                             62
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Размытие на GPU
           Получение коэффициентов матриц размытия для четырѐх
            соседних пикселей:
      float4 disp = texRECT(dispersion, c);            // Получение дисперсии

      float4x3 kern;
      kern[0] = tex1D(kernel, disp.x).zyx;             // Выборка коэффициентов
      kern[1] = tex1D(kernel, disp.y).zyx;
      kern[2] = tex1D(kernel, disp.z).zyx;
      kern[3] = tex1D(kernel, disp.w).zyx;
      float3x4 coef = transpose(kern);                 // Транспонирование

      float4 value = texRECT(texture, c) * coef[0]; // Вычисления

           Транспонирование проводится для получения вектора,
            состоящего из четырех коэффициентов, отвечающих одной
            позиции в матрицах размытия четырех соседних пикселей

                                                                                  63
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
                 Производительность шейдеров,
                 млрд. точек в секунду

                     Шейдер                     ATI 9600        ATI X800        ATI X1950
      Вычисление разности                              0,909           2,807              3,213
      Суммирование по горизонтали                      0,417           1,351              3,457
      Суммирование по вертикали                        0,522           1,550              2,076
      Медианная фильтрация                             0,412           1,272              3,546
      Возведение в квадрат                             1,162           2,886              4,430
      Расчет дисперсии                                 0,546           1,763              2,225
      Размытие                                        0,0842           0,288              1,152
      Размытие (этап 1)1                               0,273           0,859         3
      Размытие (этап 2)1                               0,124           0,407         3
      1
           из-за нехватки ресурсов ATI 9600 шейдер размытия пришлось разделить на два;
      2
           вычислено по результатов двух этапов размытия;
      3
           измерения не проводились
                                                                                                  65
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                                 Производительность шейдеров
                            5
                           4,5
                            4
   Млрд. точек в секунду




                           3,5
                            3
                           2,5
                            2
                           1,5
                            1
                           0,5
                            0
                                 Разность    Сумма по   Сумма по    Медиана    Квадрат   Дисперсия   Размытие
                                            горизонтали вертикали

                                                      ATI 9600      ATI X800   ATI X1950
                                                                                                                66
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                          Качество шумоподавления
                                  Предлагаемый фильтр на GPU   MSU Denoiser

                41
               40,5
                40
               39,5
    PSNR, дБ




                39
               38,5
                38
               37,5
                37
               36,5
                      0      20          40         60         80        100   120
                                                 Параметр

                                                                                     67
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



               Производительность

          40
          35
          30
          25
    FPS




          20
          15
          10
           5
           0
                         352288                           720576

                      Предлагаемый фильтр на GPU         MSU Denoiser


                                                                        68
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



              Дальнейшая работа
           Реализация на GPU других методов
            шумоподавления
           Перенос компенсации движения на GPU
           Создание фильтра шумоподавления для
            VirtualDub, выполняющего всю обработку
            исключительно на GPU
           Перенос большинства алгоритмов
            обработки видео на GPU

                                                               69
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                 Список литературы
           GPGPU
                http://www.gpgpu.org
                J. D. Owens, D. Luebke, N. Govindaraju, M. Harris, J. Kuger, A. E. Lefohn, and T. J. Purcell, “A survey
                 of General-Purpose Computation on Graphics Hardware”. In EUROGRAPHICS 2005, State of the Art
                 reports, pp. 21–51, 2005
           Motion Estimation
                Francis Kelly and Anil Kokaram, “General Purpose Graphics Hardware for Accelerating Motion
                 Estimation,” in Irish Machine Vision and Image Processing Conference (IMVIP), Sept. 2003
                Francis Kelly and Anil Kokaram, “Fast Image Interpolation for Motion Estimation using Graphics
                 Hardware,” in IS&T/SPIE Electronic Imaging  Real-Time Imaging VIII, May 2004, vol. 5297,
                 pp. 184–194
                Sébastien Mazaré, Renaud Pacalet, Jean-Luc Dugelay, “Using GPU for Fast Block-matching,”
                 EUSIPCO 2006, 14th European Signal Processing Conference, September 4–8, 2006, Florence, Italy
                C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using
                 Programmable Graphics Hardware,” Proceedings IEEE International Conference on Multimedia Expo
                 (ICME) , pp. 2049–2052, Toronto, Canada, 9–12 July, 2006
           Шумоподавление
                Andreas Langs, Matthias Biedermann, “Filtering Video Volumes using the Graphics Hardware,” 15th
                 Scandinavian Conference on Image Analysis, SCIA 2007, LNCS 4522, p. 878–887, June 10–14, 2007,
                 Aalborg, Denmark
                Ivan Viola, Armin Kanitsar, Meister Eduard Gröller, “Hardware-Based Nonlinear Filtering and
                 Segmentation using High-Level Shading Languages,” Proceedings of the 14th IEEE Visualization 2003,
                 2003




                                                                                                                           70
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 



                 Список литературы
           Декодирование видео
                Guobin Shen, Guang-Ping Gao, Shipeng Li, Heung-Yeung Shum, and Ya-Qin Zhang, “Accelerate Video
                 Decoding with Generic GPU,” IEEE Transactions on Circuits and Systems for Video Technology,
                 vol. 15, no. 5, pp. 685–693, May 2005
                Bart Pieters, Dieter Van Rijsselbergen, Wesley De Neve, Rik Van de Walle, “Motion Compensation and
                 Reconstruction of H.264/AVC Video Bitstreams using the GPU,” Image Analysis for Multimedia
                 Interactive Services, 6–8 June, 2007 pp. 69–69
           Вейвлеты
                Carsten Stocklöw, Stefan Noll, “Realtime Wavelet Video Encoding with Generic Graphics Processing
                 Unit,” Proceedings Eurographics Italian Chapter Conference, 2007, pp. 73–78
                T. T. Wong, C. S. Leung, P. A. Heng and J. Wang, “Discrete Wavelet Transform on Consumer-Level
                 Graphics Hardware,” IEEE Transactions on Multimedia, Vol. 9, No. 3, April 2007, pp. 668–673
           DCT/IDCT
                Bo Fang, Guobin Shen, Shipeng Li, and Huifang Chen, “Techniques for Efficient DCT/IDCT
                 Implementation on Generic GPU,” in Proceedings of the IEEE International Symposium on Circuits and
                 Systems, May 2005, vol. 2, pp. 1126–1129




                                                                                                                      71
CS MSU Graphics & Media Lab (Video Group) www.compression.ru
Only for
 Maxus 
            Лаборатория компьютерной
            графики и мультимедиа

      Видеогруппа это:
       Выпускники в аспирантурах Англии,

        Франции, Швейцарии (в России в МГУ и
        ИПМ им. Келдыша)
       Выпускниками защищено 5 диссертаций

       Наиболее популярные в мире сравнения
        видеокодеков
       Более 3 миллионов скачанных фильтров
        обработки видео
                                                               72
CS MSU Graphics & Media Lab (Video Group) www.compression.ru

More Related Content

What's hot

Обзор методов сравнения фильмов
Обзор методов сравнения фильмовОбзор методов сравнения фильмов
Обзор методов сравнения фильмовMSU GML VideoGroup
 
Способы построения saliency map
Способы построения saliency mapСпособы построения saliency map
Способы построения saliency mapMSU GML VideoGroup
 
Некоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныНекоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныMSU GML VideoGroup
 
Обзор процессоров Phillips Nexperia
Обзор процессоров Phillips NexperiaОбзор процессоров Phillips Nexperia
Обзор процессоров Phillips NexperiaMSU GML VideoGroup
 
Обзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCОбзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCMSU GML VideoGroup
 
Методы деинтерлейсинга
Методы деинтерлейсингаМетоды деинтерлейсинга
Методы деинтерлейсингаMSU GML VideoGroup
 
Детектирование объектов переднего плана в видео
Детектирование объектов переднего плана в видеоДетектирование объектов переднего плана в видео
Детектирование объектов переднего плана в видеоMSU GML VideoGroup
 
Обзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовОбзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовMSU GML VideoGroup
 
Современные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейСовременные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейMSU GML VideoGroup
 
Обзор методов вычисления базовой геометрии сцены
Обзор методов вычисления базовой геометрии сценыОбзор методов вычисления базовой геометрии сцены
Обзор методов вычисления базовой геометрии сценыMSU GML VideoGroup
 
Обработка областей открытия при распространении карт глубины
Обработка областей открытия при распространении карт глубиныОбработка областей открытия при распространении карт глубины
Обработка областей открытия при распространении карт глубиныMSU GML VideoGroup
 
Обзор методов оценки True-motion
Обзор методов оценки True-motionОбзор методов оценки True-motion
Обзор методов оценки True-motionMSU GML VideoGroup
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Обработка границ объектов при генерации стерео
Обработка границ объектов при генерации стереоОбработка границ объектов при генерации стерео
Обработка границ объектов при генерации стереоMSU GML VideoGroup
 
Новые методы деинтерлейсинга
Новые методы деинтерлейсингаНовые методы деинтерлейсинга
Новые методы деинтерлейсингаMSU GML VideoGroup
 
Обзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видеоОбзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видеоMSU GML VideoGroup
 
Некоторые методы сегментации видео
Некоторые методы сегментации видеоНекоторые методы сегментации видео
Некоторые методы сегментации видеоMSU GML VideoGroup
 
Вычитание фона с использованием карт глубины
Вычитание фона с использованием карт глубиныВычитание фона с использованием карт глубины
Вычитание фона с использованием карт глубиныMSU GML VideoGroup
 
Точное выделение границ объектов
Точное выделение границ объектовТочное выделение границ объектов
Точное выделение границ объектовMSU GML VideoGroup
 
Обзор методов сегментации видео
Обзор методов сегментации видеоОбзор методов сегментации видео
Обзор методов сегментации видеоMSU GML VideoGroup
 

What's hot (20)

Обзор методов сравнения фильмов
Обзор методов сравнения фильмовОбзор методов сравнения фильмов
Обзор методов сравнения фильмов
 
Способы построения saliency map
Способы построения saliency mapСпособы построения saliency map
Способы построения saliency map
 
Некоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныНекоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубины
 
Обзор процессоров Phillips Nexperia
Обзор процессоров Phillips NexperiaОбзор процессоров Phillips Nexperia
Обзор процессоров Phillips Nexperia
 
Обзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCОбзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVC
 
Методы деинтерлейсинга
Методы деинтерлейсингаМетоды деинтерлейсинга
Методы деинтерлейсинга
 
Детектирование объектов переднего плана в видео
Детектирование объектов переднего плана в видеоДетектирование объектов переднего плана в видео
Детектирование объектов переднего плана в видео
 
Обзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовОбзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектов
 
Современные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейСовременные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализацией
 
Обзор методов вычисления базовой геометрии сцены
Обзор методов вычисления базовой геометрии сценыОбзор методов вычисления базовой геометрии сцены
Обзор методов вычисления базовой геометрии сцены
 
Обработка областей открытия при распространении карт глубины
Обработка областей открытия при распространении карт глубиныОбработка областей открытия при распространении карт глубины
Обработка областей открытия при распространении карт глубины
 
Обзор методов оценки True-motion
Обзор методов оценки True-motionОбзор методов оценки True-motion
Обзор методов оценки True-motion
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Обработка границ объектов при генерации стерео
Обработка границ объектов при генерации стереоОбработка границ объектов при генерации стерео
Обработка границ объектов при генерации стерео
 
Новые методы деинтерлейсинга
Новые методы деинтерлейсингаНовые методы деинтерлейсинга
Новые методы деинтерлейсинга
 
Обзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видеоОбзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видео
 
Некоторые методы сегментации видео
Некоторые методы сегментации видеоНекоторые методы сегментации видео
Некоторые методы сегментации видео
 
Вычитание фона с использованием карт глубины
Вычитание фона с использованием карт глубиныВычитание фона с использованием карт глубины
Вычитание фона с использованием карт глубины
 
Точное выделение границ объектов
Точное выделение границ объектовТочное выделение границ объектов
Точное выделение границ объектов
 
Обзор методов сегментации видео
Обзор методов сегментации видеоОбзор методов сегментации видео
Обзор методов сегментации видео
 

Similar to Применение современных графических процессоров для обработки видео

Обзор новинок в области GPGPU
Обзор новинок в области GPGPUОбзор новинок в области GPGPU
Обзор новинок в области GPGPUMSU GML VideoGroup
 
Обзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зренияОбзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зренияMSU GML VideoGroup
 
Декодирование видео на GPU
Декодирование видео на GPUДекодирование видео на GPU
Декодирование видео на GPUMSU GML VideoGroup
 
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камерБыстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камерMSU GML VideoGroup
 
Генерация текстур
Генерация текстурГенерация текстур
Генерация текстурMSU GML VideoGroup
 
Обзор библиотеки Boost
Обзор библиотеки BoostОбзор библиотеки Boost
Обзор библиотеки BoostMSU GML VideoGroup
 
Распознавание и удаление субтитров
Распознавание и удаление субтитровРаспознавание и удаление субтитров
Распознавание и удаление субтитровMSU GML VideoGroup
 
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...MSU GML VideoGroup
 
Параллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахПараллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахAlex Tutubalin
 
Вычисление глубины по одному изображению
Вычисление глубины по одному изображениюВычисление глубины по одному изображению
Вычисление глубины по одному изображениюMSU GML VideoGroup
 
Hpc 2.26.03.2013.
Hpc 2.26.03.2013.Hpc 2.26.03.2013.
Hpc 2.26.03.2013.Boris Kizko
 
"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDAOleg Nazarevych
 
58
5858
58JIuc
 
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игрCodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игрCodeFest
 

Similar to Применение современных графических процессоров для обработки видео (20)

Обзор новинок в области GPGPU
Обзор новинок в области GPGPUОбзор новинок в области GPGPU
Обзор новинок в области GPGPU
 
Обзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зренияОбзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зрения
 
Декодирование видео на GPU
Декодирование видео на GPUДекодирование видео на GPU
Декодирование видео на GPU
 
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камерБыстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
 
Генерация текстур
Генерация текстурГенерация текстур
Генерация текстур
 
Обзор OpenCL
Обзор OpenCLОбзор OpenCL
Обзор OpenCL
 
Обзор библиотеки Boost
Обзор библиотеки BoostОбзор библиотеки Boost
Обзор библиотеки Boost
 
Распознавание и удаление субтитров
Распознавание и удаление субтитровРаспознавание и удаление субтитров
Распознавание и удаление субтитров
 
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
 
Параллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахПараллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартах
 
Вычисление глубины по одному изображению
Вычисление глубины по одному изображениюВычисление глубины по одному изображению
Вычисление глубины по одному изображению
 
Hpc 2.26.03.2013.
Hpc 2.26.03.2013.Hpc 2.26.03.2013.
Hpc 2.26.03.2013.
 
"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA"Лавриненко Ярослав" HPC GPU CUDA
"Лавриненко Ярослав" HPC GPU CUDA
 
Диплом
ДипломДиплом
Диплом
 
Gpgpu
GpgpuGpgpu
Gpgpu
 
Deringing Cartoons
Deringing CartoonsDeringing Cartoons
Deringing Cartoons
 
58
5858
58
 
Developing our own rendering
Developing our own renderingDeveloping our own rendering
Developing our own rendering
 
9270
92709270
9270
 
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игрCodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
 

More from MSU GML VideoGroup

Обзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоОбзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоMSU GML VideoGroup
 
Методы цветокоррекции стереовидео
Методы цветокоррекции стереовидеоМетоды цветокоррекции стереовидео
Методы цветокоррекции стереовидеоMSU GML VideoGroup
 
Некоторые методы сопоставления стерео
Некоторые методы сопоставления стереоНекоторые методы сопоставления стерео
Некоторые методы сопоставления стереоMSU GML VideoGroup
 
Некоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоНекоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоMSU GML VideoGroup
 
Способы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиСпособы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиMSU GML VideoGroup
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаMSU GML VideoGroup
 
Research & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиResearch & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиMSU GML VideoGroup
 
Использование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоИспользование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоMSU GML VideoGroup
 
Алгоритмы для задачи матирования
Алгоритмы для задачи матированияАлгоритмы для задачи матирования
Алгоритмы для задачи матированияMSU GML VideoGroup
 
Исправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоИсправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоMSU GML VideoGroup
 
Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)MSU GML VideoGroup
 
Некоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времениНекоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времениMSU GML VideoGroup
 
Метрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стереоМетрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стереоMSU GML VideoGroup
 
Цветонезависимое сопоставление стерео
Цветонезависимое сопоставление стереоЦветонезависимое сопоставление стерео
Цветонезависимое сопоставление стереоMSU GML VideoGroup
 
Некоторые методы восстановления фона
Некоторые методы восстановления фонаНекоторые методы восстановления фона
Некоторые методы восстановления фонаMSU GML VideoGroup
 
Методы повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фонаМетоды повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фонаMSU GML VideoGroup
 

More from MSU GML VideoGroup (16)

Обзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоОбзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видео
 
Методы цветокоррекции стереовидео
Методы цветокоррекции стереовидеоМетоды цветокоррекции стереовидео
Методы цветокоррекции стереовидео
 
Некоторые методы сопоставления стерео
Некоторые методы сопоставления стереоНекоторые методы сопоставления стерео
Некоторые методы сопоставления стерео
 
Некоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоНекоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видео
 
Способы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиСпособы построения и оценки карт салиентности
Способы построения и оценки карт салиентности
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кода
 
Research & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиResearch & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибки
 
Использование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоИспользование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видео
 
Алгоритмы для задачи матирования
Алгоритмы для задачи матированияАлгоритмы для задачи матирования
Алгоритмы для задачи матирования
 
Исправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоИсправление различий резкости в 3D видео
Исправление различий резкости в 3D видео
 
Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)
 
Некоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времениНекоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времени
 
Метрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стереоМетрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стерео
 
Цветонезависимое сопоставление стерео
Цветонезависимое сопоставление стереоЦветонезависимое сопоставление стерео
Цветонезависимое сопоставление стерео
 
Некоторые методы восстановления фона
Некоторые методы восстановления фонаНекоторые методы восстановления фона
Некоторые методы восстановления фона
 
Методы повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фонаМетоды повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фона
 

Применение современных графических процессоров для обработки видео

  • 1. Применение современных графических процессоров для обработки видеоданных Илья Цветков Video Group CS MSU Graphics & Media Lab
  • 2. Only for Maxus  Содержание доклада  Введение  Устройство современного графического процессора  Графический конвейер  Вершинные и пиксельные шейдеры  Базовые концепции программирования на GPU  Оптимизация  Алгоритмы обработки видео на GPU  Компенсация движения  Фильтрация  Результаты 2 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 3. Only for Maxus  Почему GPU?  Пиковая производительность GPU последнего поколения  около 600 GFLOPS  Скорость обмена данными с видеопамятью составляет 60 Гбайт/с  Даже low-end видеокарты позволяют обрабатывать большие изображения быстрее чем CPU.  Очень широко распространены среди обычных пользователей компьютеров в отличие от FPGA или DSP. 3 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 4. Only for Maxus  Рост производительности GPU J. D. Owens, D. Luebke et al., “A Survey of General-Purpose Computation on Graphics Hardware,” 4 CS MSU Graphics & Media Lab (Video Group) www.compression.ru EUROGRAPHICS 2005, State of the Art reports, 2005
  • 5. Only for Maxus  Почему GPU так быстро работают  CPU  Оптимизирован для исполнения последовательных операций  Ориентирован на обработку скалярных данных  GPU  Графическому процессору необходимо производить однотипные операции над большими объемами данных  Изначально проектируется как векторный процессор 5 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 6. Only for Maxus  Устройство современного графического процессора  Графический конвейер  Программируемый вершинный процессор  Растеризация  Текстуры  Программируемый фрагментный процессор  Рендеринг в текстуру 6 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 7. Only for Maxus  Графический конвейер CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов  Каждый этап конвейера может быть настроен с помощью графического API (например OpenGL или Direct3D)  Некоторые этапы полностью программируемы, другие обладают фиксированной функциональностью 7 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 8. Only for Maxus  Геометрия объектов CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов 8 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 9. Only for Maxus  Геометрия объектов  Является массивом сгруппированных точек, обладающих атрибутами  Виды группировки:  отдельные точки;  пары точек  линии;  треугольники;  многоугольники  Атрибуты точек:  координаты точки в пространстве;  цвет;  координаты текстуры (до 8 различных векторов);  произвольные пользовательские атрибуты 9 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 10. Only for Maxus  Вершинный процессор CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов 10 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 11. Only for Maxus  Вершинный процессор  Полностью программируемый этап графического конвейера  Входные данные  последовательность точек (и их атрибутов), задающих геометрию объектов  Каждая точка обрабатывается независимо  Точки обрабатываются параллельно на нескольких вершинных процессорах (например, на 12)  Работает над векторами (координаты, цвет  вектора)  Может изменять произвольным образом координаты и атрибуты точек  Выходные данные  последовательность точек с преобразованными координатами и атрибутами  Может добавить новые или убрать некоторые атрибуты 11 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 12. Only for Maxus  Растеризация CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов 12 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 13. Only for Maxus  Растеризация  Этап с фиксированной функциональностью  Входные данные  набор преобразованных вершинным процессором точек  Группирует точки в полигоны  Проектирует полигоны на экран  Определяются пиксели экрана, покрываемые полигоном  Для каждого пикселя линейно интерполируются все атрибуты вершин (кроме координат)  Выходные данных  поток пикселей (фрагментов), обладающих атрибутами 13 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 14. Only for Maxus  Текстуры CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов 14 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 15. Only for Maxus  Текстуры  Текстуры  массивы  Поддерживаются 1D-, 2D- и 3D-текстуры  Ограничение на размер: максимум 40964096 пикселей для 2D-текстуры  Изначально поддерживаются только квадратные POT-текстуры  Существуют расширения для поддержки прямоугольных NPOT-текстур  Форматы пикселей: от однокомпонентных (только яркость) до четырехкомпонентных (ARGB)  Значения могут храниться в виде байта или числа с плавающей точкой 15 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 16. Only for Maxus  Фрагментный процессор CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов 16 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 17. Only for Maxus  Фрагментный процессор  Полностью программируемый этап графического конвейера  Входные данные  поток пикселей (фрагментов) с интерполированными атрибутами  Каждый фрагмент обрабатывается независимо  Пиксели обрабатываются параллельно на нескольких фрагментных процессорах (например, на 24)  Имеет доступ к видеопамяти и может получить по заданным координатам пиксель из текстуры (возможна интерполяция на лету)  Работает с векторами без потери в производительности  Является средством основных вычисление для GPGPU  Выходные данные  пиксели конечного изображения 17 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 18. Only for Maxus  Рендеринг в текстуру CPU RAM GPU Видеопамять Вершинный Фрагментный Кадровый Растеризация процессор процессор буфер Геометрия объектов 18 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 19. Only for Maxus  Рендеринг в текстуру  Текстуры могут быть использованы для сохранения результатов рендеринга  Текстура может находится либо в режиме только для чтения либо в режиме только для записи  Текстуры могут быть использованы для хранения промежуточных результатов вычислений  Текстуры могут быть выгружены обратно в оперативную память 19 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 20. Only for Maxus  Multiple Rendering Target (MRT)  Фрагментный шейдер может возвращать несколько результатов  Рендеринг может производиться в несколько буферов одновременно  На данный момент максимальное число «целей рендеринга»  четыре  Использование MRT позволяет при вычислениях добиться оптимальной арифметической интенсивности алгоритмов 20 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 21. Only for Maxus  Базовые концепции программирования на GPU  Концепции программирования на GPU  Массивы  текстуры  Тело цикла  шейдер  Вычисление  рисование  Метод пинг-понга  Редукция  Перенос вычислений на вершинный процессор 21 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 22. Only for Maxus  Программа для CPU coef1 = 0.76; coef2 = 1.0 – coef1; for (int i = 0; i < imageHeight; ++i) { for (int j = 0; j < imageWidth; ++j) { imgA[i, j].red = coef1 * imgA[i, j].red + coef2 * imgB[i, j].red; imgA[i, j].green = coef1 * imgA[i, j].green + coef2 * imgB[i, j].green; imgA[i, j].blue = coef1 * imgA[i, j].blue + coef2 * imgB[i, j].blue; } } 22 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 23. Only for Maxus  Массивы  текстуры  Двумерный массив  2D-текстура  Структура текстуры: RGB  Формат данных: байты  Необходимы 3 текстуры, т. к. к imgA нужен доступ в режиме чтения и записи одновременно  Создание необходимой текстуры средствами OpenGL: glTexImage2D( GL_TEXTURE_RECTANGLE_ARB, // Прямоугольная текстура GL_RGB8, // RGB, 8 бит на канал imageWidth, // Ширина текстуры imageHeight, // Высота текстуры 0, GL_BGR, // Структура данных в ОЗУ GL_UNSIGNED_BYTE, // Формат данных в ОЗУ imgA // Изображение ); 23 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 24. Only for Maxus  Тело цикла  шейдер  Вычисления в теле цикла можно производить параллельно  Значение каждого пикселя  вектор  Пример кода на Сg, реализующего «ядро» вычислений: float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR { float3 valA = texRECT(imgA, coords).rgb; float3 valB = texRECT(imgB, coords).rgb; return valA * coef1 + valB * coef2; } 24 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 25. Only for Maxus  Векторные типы данных float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR { float3 valA = texRECT(imgA, coords).rgb; float3 valB = texRECT(imgB, coords).rgb; return valA * coef1 + valB * coef2; }  Поддерживаются векторные величины (до четырех компонент в векторе)  Матрицы размера до 44 (например float3x4, float4x2)  Соответствующие операции: умножение вектора на число, скалярное произведение векторов и т. п. 25 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 26. Only for Maxus  Оператор перестановки float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR { float3 valA = texRECT(imgA, coords).rgb; float3 valB = texRECT(imgB, coords).rgb; return valA * coef1 + valB * coef2; }  Компоненты в векторе могут быть переставлены  Примеры: float3 a = valA.gbr + valB.yzx; float2 b = valA.xy + valB.yz; float4 c = valA.xxyy + valB.yzzx; 26 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 27. Only for Maxus  Обращение к текстурам float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR { float3 valA = texRECT(imgA, coords).rgb; float3 valB = texRECT(imgB, coords).rgb; return valA * coef1 + valB * coef2; }  Различные типы текстур используют различные типы адресации пикселей  Текстуры задаются в виде параметров шейдера 27 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 28. Only for Maxus  Постоянные параметры шейдера float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR { float3 valA = texRECT(imgA, coords).rgb; float3 valB = texRECT(imgB, coords).rgb; return valA * coef1 + valB * coef2; }  Задаются функциями графической библиотеки  Одинаковы для всех обрабатываемых элементов 28 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 29. Only for Maxus  Переменные параметры шейдера float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR { float3 valA = texRECT(imgA, coords).rgb; float3 valB = texRECT(imgB, coords).rgb; return valA * coef1 + valB * coef2; }  Являются атрибутами фрагментов, полученных после растеризации  Тип атрибута, соответствующий данному параметру, указывается после двоеточия 29 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 30. Only for Maxus  Возвращаемое значение float3 main(float2 coords : TEXCOORD0, uniform samplerRECT imgA, uniform samplerRECT imgB, uniform float coef1, uniform float coef2) : COLOR;  Возвращение результата аналогично функциям в C  Возвращаемому значению также приписывается определенная семантика  При использовании MRT: struct output { float4 c0 : COLOR0; float4 c1 : COLOR1; }; output main(float2 coords : TEXCOORD0, uniform samplerRECT texture); 30 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 31. Only for Maxus  Вычисление  рисование  Устанавливается текстура, в которую будет производиться рендеринг  Задается ортогональная проекция полигонов на экран  Рисуется прямоугольник соответствующего размера с необходимыми атрибутами вершин  Вершинный процессор может провести предварительные вычисления  В процессе растеризации для каждого пикселя генерируется фрагмент с некоторыми атрибутами  Пиксельный шейдер выполняется над каждым фрагментом  Результаты могут быть выгружены обратно в оперативную память или использоваться далее 31 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 32. Only for Maxus  Ограничения на шейдеры  Количество инструкций в шейдере ограничено  Разделение шейдера на несколько частей и последовательное их исполнение  метод пинг-понга  Количество обращений к текстурам также ограничено  Метод редукции  Несмотря на наличие кеша, обращение к текстуре занимает больше времени, чем выполнение арифметической операции  Проектирование шейдера, в котором количество арифметических операций больше количества обращений к текстурам  Ветвление доступно, но является «дорогой» операцией  Использование доступных на GPU функций вычисления максимума, минимума и т. п. 32 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 33. Only for Maxus  Ограничения на шейдеры Ограничения ATI 9600 ATI X800 Количество атрибутов 16 16 Вершинный Количество инструкций 256 256 шейдер Количество регистров 32 32 Количество атрибутов 10 10 Пиксельный Количество инструкций 64 512 шейдер Количество обращений к текстурам 32 512 Количество регистров 32 64  Количество инструкций измеряется в машинный командах вершинного и фрагментного процессоров  Количество доступных регистров важно, т. к. при сложных вычислениях нет возможности сохранить промежуточные результаты в основную память (в отличие от CPU) 33 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 34. Only for Maxus  Метод пинг-понга  Используются только две текстуры: X и Y  В текстуру X загружаются данные  На первом шаге шейдер берет данные из текстуры X, а рендеринг происходит в текстуру Y  Изменяется шейдер, тектуры меняются ролями Шейдер A Шейдер B Шейдер C Текстура X Текстура Y Текстура X Текстура Y 34 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 35. Only for Maxus  Редукция  Применяется для нахождения суммы значений, минимума, максимума в области  Рендеринг производится в два раза меньшую область  Шейдер находит локальный максимум в области 22 47 2 3 57 5 12 7 8 47 57 15 17 64 68 71 10 20 6 13 14 15 16 17 38 64 68 35 71 70 19 11 21 22 23 68 25 26 46 49 61 52 38 29 64 31 32 33 35 34 71 67 69 70 37 28 39 49 53 42 41 52 46 1 48 40 61 51 44 43 55 71 4 58 69 62 50 60 30 65 66 67 24 59 70 56 35 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 36. Only for Maxus  Использование min и max  Пример  поиск медианы из трех значений a, b и с  Обычный код с использование условных операторов: if (a < b) { if (b < c) return b; else return (a > c) ? a : c; } else { if (b > c) return b; else return (a < c) ? a : c; } 36 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 37. Only for Maxus  Использование min и max  Определим функцию clamp: a, x  a  (a  b) clamp( x, a, b)  max( a, min( b, x))   x, a  x  b b, x  b   Тогда медиану можно вычислить: median( a, b, c)  clamp(c, min( a, b), max( a, b))  Код вычисления медианы на Cg с использованием встроенной функции clamp: float4 a = texRECT(texA, coords); float4 b = texRECT(texB, coords); float4 c = texRECT(texC, coords); return clamp(c, min(a, b), max(a, b)); 37 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 38. Only for Maxus  Перенос вычислений на вершинный процессор  Пример шейдера обращающегося к двум соседним текселям: float4 main(float2 coords : TEXCOORD0, uniform samplerRECT texture) : COLOR { float4 a = texRECT(texture, coords); float4 b = texRECT(texture, coords + float2(1, 0)); return abs(a – b); }  Выделенная операция сложения не является частью «полезных» вычислений, но будет выполняться для каждого обрабатываемого пикселя  Такие вычисления могут быть перенесены на вершинный процессор 38 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 39. Only for Maxus  Перенос вычислений на вершинный процессор  Вершинный шейдер: void main(in float4 in_pos : POSITION, in float2 in_coords : TEXCOORD0, out float4 out_pos : POSITION, out float2 out_coords0 : TEXCOORD0, out float2 out_coords1 : TEXCOORD1) { out_pos = in_pos; out_coords0 = in_coords; out_coords1 = in_coords + float2(1, 0); }  На этапе растеризации TEXCOORD0 и TEXCOORD1 будут линейно интерполированы для каждого пикселя 39 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 40. Only for Maxus  Перенос вычислений на вершинный процессор  Тогда пиксельный шейдер можно упростить: float4 main(float2 coords0 : TEXCOORD0, float2 coords1 : TEXCOORD1, uniform samplerRECT texture) : COLOR { float4 a = texRECT(texture, coords0); float4 b = texRECT(texture, coords1); return abs(a – b); }  Но число текстурных координат ограничено восемью и уже при реализации на GPU свертки с ядром 33 аналогичный способ применить не удастся  Для решение этой проблемы используют упаковку координат 40 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 41. Only for Maxus  Упаковка текстурных координат  TEXCOORD0TEXCOORD7 могут быть векторами из четырѐх компонент  При выборке из 2D-текстуры нужно задать только две координаты  Вектором из четырех компонент можно задать до четырех точек в двумерном пространстве: y z y z w coords.xy coords.xz 1 2 x 1 2 3 x 3 4 w coords.xw coords.xz coords.wz coords.xy coords.wy 41 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 42. Only for Maxus  Упаковка текстурных координат  Пример  координаты текстур для свѐртки 55 (c0c6 определяют координаты текстур TEXCOORD0TEXCOORD6 соответственно; c  исходные координаты TEXCOORD0): c0 = c.xyxy + float4(-2, 2,-1, 1); c1 = c.xyxy + float4( 0, 2, 1, 1); c2 = c.xyyy + float4( 2, 2, 1, 0); c3 = c.xyxy + float4(-2, 0,-1,-1); c4 = c.xyxy + float4( 0, 0, 1,-1); c5 = c.xyxy + float4( 1,-1, 2,-2); c6 = c.xxxy + float4(-2,-1, 0,-2); Viola, I., Kanitsar, A., Gröller, M.E., “Hardware-Based Nonlinear Filtering and Segmentation using High-Level 42 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Shading Languages,” Proceedings of IEEE Visualization, 2003
  • 43. Only for Maxus  Алгоритмы обработки видео на GPU  Motion Estimation (ME) на GPU  Постановка задачи ME  Реализация алгоритма на GPU  Sub-pixel Motion Estimation  Результаты  Фильтрация видео на GPU  Схема работы фильтра шумоподавления  Производительность  Результаты 43 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 44. Only for Maxus  Постановка задачи ME  Текущий кадр разбивается на прямоугольные блоки  Для каждого блока текущего кадра в предыдущем кадре ищется наиболее «похожий» блок  В качестве меры схожести двух блоков B1 и B2 размера MN обычно выступает SAD: M N SAD( B1 , B2 )   B1 ( x, y )  B2 ( x, y ) x 1 y 1  Часто поиск векторов движения осуществляется только для яркостной составляющей изображения  Самым простым методом поиска векторов движения является полный перебор в некоторой области 44 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 45. Only for Maxus  Внутреннее представление макро-блока  Макро-блок разбивается на 16 матриц 44  Каждая из матриц передается в шейдер как постоянный параметр. Это позволяет значительно уменьшить число обращений к текстурам // Установка параметра шейдера float matrix[16]; cgSetMatrixParameterfr(param, matrix); float3 main(float2 coords : TEXCOORD0, uniform samplerRECT texture, uniform float4x4 block) : COLOR { // Вычисления } C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” 45 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Conference on Multimedia Expo, 2006. Proceedings IEEE International
  • 46. Only for Maxus  Формат данных  ME выполняется только для яркостной компоненты кадра  Используются текстуры BGRA, 8 бит на канал  При загрузке изображения в текстуру исходные значения яркости упаковываются по 4 подряд идущих пикселя в один тексель Тексель 1 Тексель 2 B G R A B G R A 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” 46 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Conference on Multimedia Expo, 2006. Proceedings IEEE International
  • 47. Only for Maxus  Вычисление SAD  Пиксельный шейдер загружает из текстуры два соседних текселя (8 значений яркости)  Вычисление SAD выполняется сразу для 4 соседних позиций  На примере одной строки блока 44: Строка: C1 , C2 , C3 , C4  ADi , j  Ri  C j C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” 47 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Conference on Multimedia Expo, 2006. Proceedings IEEE International
  • 48. Only for Maxus  Вычисление SAD float4 pix1, pix2; // Два соседних текселя float4 c; // Строка блока {C1, C2, C3, C4} float4 ad1, ad2, ad3, ad4; ad1 = abs(c.xxxx – pix1.xyzw); // {AD1,1, AD2,1, AD3,1, AD4,1} ad2 = abs(c.yyyy – float4(pix1.yzw, pix2.x)); // {AD2,2, AD3,2, AD4,2, AD5,2} ad3 = abs(c.zzzz – float4(pix1.zw, pix2.xy)); // {AD3,3, AD4,3, AD5,3, AD6,3} ad4 = abs(c.wwww – float4(pix1.w, pix2.xyz)); // {AD4,4, AD5,4, AD6,4, AD7,4} float4 sad = ad1 + ad2 + ad3 + ad4; // {SAD1, SAD2, SAD3, SAD4} C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” 48 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Conference on Multimedia Expo, 2006. Proceedings IEEE International
  • 49. Only for Maxus  Arithmetic Intensity  Арифметическая интенсивность шейдера (arithmetic intensity)  отношение числа операций АЛУ к числу выборок из текстур  Необходимо, чтобы арифметическая интенсивность шейдеров была достаточно высока  около 8 операций АЛУ на один доступ к текстуре  Причина  «медленный» доступ к памяти  Во время получения текселя АЛУ продолжает работу  Для различных GPU оптимальная арифметическая интенсивность различна  Решение  реализация нескольких версий шейдера для различных GPU 49 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 50. Only for Maxus  Arithmetic Intensity  Решением проблемы малой арифметической интенсивности может быть использование MRT  Для одних и тех же текселей одновременно вычисляются сразу несколько результатов  В предлагаемой реализации ME SAD можно вычислять более чем для одного блока за один проход  Число выборок из текстуры при этом не изменяется, т. к. исходный блок задается в качестве параметра Сравнение времени выполнения ME для видео формата 1080p и областью перебора ±256 пикселей при различном числе обрабатываемых блоков за один проход на GeForce 7800GT PCIe C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” 50 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Conference on Multimedia Expo, 2006. Proceedings IEEE International
  • 51. Only for Maxus  Производительность предлагаемого метода ME  Накладные расходы вызовов API не позволяют полностью раскрыть потенциал GPU при малых областях перебора  «Узким местом» при вычислениях является выгрузка результатов C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” 51 CS MSU Graphics & Media Lab (Video Group) www.compression.ru Conference on Multimedia Expo, 2006. Proceedings IEEE International
  • 52. Only for Maxus  Sub-pixel Motion Estimation  Пиксельная точность обычно недостаточна для качественной компенсации движения  Для повышения качества используется полупиксельная, четверть-пиксельная или бóльшая точность  Необходима интерполяция  GPU позволяет проводить билинейную интерполяцию текстур во время обращения к ним  Скорость интерполяции очень высока, т. к. эта функция GPU полностью реализована на аппаратном уровне 52 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 53. Only for Maxus  Скорость интерполяции на GPU CPU GPU (readback) GPU (w/o readback) Сравнение времени выполнения билинейной интерполяции на Pentium 4 1,6 ГГц и GeForce FX 5600 с учетом времени выгрузки результатов обратно в ОЗУ и без него Francis Kelly and Anil Kokaram, “Fast Image Interpolation for Motion Estimation using Graphics Hardware,” IS&T/SPIE 53 CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004 Electronic Imaging
  • 54. Only for Maxus  Схема sub-pixel ME на GPU  В видеопамять загружаются CPU текущий и предыдущий кадры Для каждого вектора движения из области поиска: Предыдущий Текущий кадр  Задаются два вектора кадр текстурных координат: для текущего кадра и предыдущего Смещение с учетом вектора движения Находится разность текущего и −  предыдущего кадров с учетом вектора движения Вычисление  Методом редукции для всех SAD блоков блоков вычисляется SAD GPU  Результаты выгружаются в ОЗУ Francis Kelly and Anil Kokaram, “Fast Image Interpolation for Motion Estimation using Graphics Hardware,” IS&T/SPIE 55 CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004 Electronic Imaging
  • 55. Only for Maxus  Производительность предлагаемого метода CPU GPU (w/o SAD) GPU (with SAD) Время работы ME при различной точности и реализации без использования GPU, с использованием GPU и с использованием GPU в том числе и для вычисления SAD блоков Francis Kelly and Anil Kokaram, “Fast Image Interpolation for Motion Estimation using Graphics Hardware,” IS&T/SPIE 56 CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004 Electronic Imaging
  • 56. Only for Maxus  Точность предлагаемого метода CPU GPU Качество кадров, скомпенсированных с Гистограмма ошибок вычисления SAD четверть-пиксельной точностью на CPU и полученных на GPU из-за погрешностей при GPU, по сравнению с исходным кадром интерполяции Francis Kelly and Anil Kokaram, “Fast Image Interpolation for Motion Estimation using Graphics Hardware,” IS&T/SPIE 57 CS MSU Graphics & Media Lab (Video Group) www.compression.ru  Real-Time Imaging VIII, 2004 Electronic Imaging
  • 57. Only for Maxus  Схема работы фильтра шумоподавления  Схема фильтрации, полностью реализованная на GPU: Предыдущий Расчет дисперсии скомпенсированный области 33 кадр каждого пикселя − Усреднение в области 33 Размытие с Медианная Текущий кадр учетом дисперсии фильтрация области − Усреднение в области 33 Следующий скомпенсированный Результат кадр 58 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 58. Only for Maxus  Реализация на GPU  Формат данных  Фильтрация проводится отдельно для яркостной и цветностных компонент  Изображения находятся в текстурах в упакованном виде  по четыре точки в одном текселе  Усреднение в области 33 реализовано в два прохода: суммирование проводится сначала по горизонтали, затем по вертикали  Медианная фильтрация  Проводится для пикселя только, если разности между скомпенсированными и исходным кадром в данной точке меньше заданного порога  Для реализации порога условный оператор не используется. Применяется функция step: 0, x  a step(a, x)    1, x  a 59 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 59. Only for Maxus  Реализация на GPU  Для области 33 каждого пикселя вычисляется дисперсия  Расчет проводится по формуле (S  множество пикселей области; NS  число пикселей в S; f(q)  значение пикселя q):     2 D( S )  2 N S  f (q)    f (q)   1  2 N S  qS      qS    Вычисление проходит за 6 проходов  Вычисляется f (q) для каждого пикселя 2  Аналогично усреднению находятся суммы  Вычисляется результирующее значение  В зависимости от дисперсии, рассчитанной для области каждого пикселя, происходит размытие изображения полученного после медианной фильтрации 61 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 60. Only for Maxus  Размытие на GPU  Так как сила размытия должна быть различна в разных областях изображения, то фильтр не может быть реализован как сепарабельный  Коэффициенты нормированы так, чтобы сумма элементов ядра свѐртки равнялась 1  Для области 33 в ядре свѐртки присутствуют только 3 различных значения  Все коэффициенты хранятся в видеопамяти в виде одномерной RGB- текстуры  Каждый тексель задает матрицу размытия  Различным точкам текстуры соответствуют матрицы размытия различной интенсивности  Элементы RGB-векторов  байты 51 32 19 63 31 17 71 32 14 0,066 0,122 0,066 (N − 1) Тексель N (N + 1) 0,122 0,248 0,122 tex1D(texture, N); 0,066 0,122 0,066 Приведение к float3 62 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 61. Only for Maxus  Размытие на GPU  Получение коэффициентов матриц размытия для четырѐх соседних пикселей: float4 disp = texRECT(dispersion, c); // Получение дисперсии float4x3 kern; kern[0] = tex1D(kernel, disp.x).zyx; // Выборка коэффициентов kern[1] = tex1D(kernel, disp.y).zyx; kern[2] = tex1D(kernel, disp.z).zyx; kern[3] = tex1D(kernel, disp.w).zyx; float3x4 coef = transpose(kern); // Транспонирование float4 value = texRECT(texture, c) * coef[0]; // Вычисления  Транспонирование проводится для получения вектора, состоящего из четырех коэффициентов, отвечающих одной позиции в матрицах размытия четырех соседних пикселей 63 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 62. Only for Maxus  Производительность шейдеров, млрд. точек в секунду Шейдер ATI 9600 ATI X800 ATI X1950 Вычисление разности 0,909 2,807 3,213 Суммирование по горизонтали 0,417 1,351 3,457 Суммирование по вертикали 0,522 1,550 2,076 Медианная фильтрация 0,412 1,272 3,546 Возведение в квадрат 1,162 2,886 4,430 Расчет дисперсии 0,546 1,763 2,225 Размытие 0,0842 0,288 1,152 Размытие (этап 1)1 0,273 0,859 3 Размытие (этап 2)1 0,124 0,407 3 1  из-за нехватки ресурсов ATI 9600 шейдер размытия пришлось разделить на два; 2  вычислено по результатов двух этапов размытия; 3  измерения не проводились 65 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 63. Only for Maxus  Производительность шейдеров 5 4,5 4 Млрд. точек в секунду 3,5 3 2,5 2 1,5 1 0,5 0 Разность Сумма по Сумма по Медиана Квадрат Дисперсия Размытие горизонтали вертикали ATI 9600 ATI X800 ATI X1950 66 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 64. Only for Maxus  Качество шумоподавления Предлагаемый фильтр на GPU MSU Denoiser 41 40,5 40 39,5 PSNR, дБ 39 38,5 38 37,5 37 36,5 0 20 40 60 80 100 120 Параметр 67 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 65. Only for Maxus  Производительность 40 35 30 25 FPS 20 15 10 5 0 352288 720576 Предлагаемый фильтр на GPU MSU Denoiser 68 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 66. Only for Maxus  Дальнейшая работа  Реализация на GPU других методов шумоподавления  Перенос компенсации движения на GPU  Создание фильтра шумоподавления для VirtualDub, выполняющего всю обработку исключительно на GPU  Перенос большинства алгоритмов обработки видео на GPU 69 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 67. Only for Maxus  Список литературы  GPGPU  http://www.gpgpu.org  J. D. Owens, D. Luebke, N. Govindaraju, M. Harris, J. Kuger, A. E. Lefohn, and T. J. Purcell, “A survey of General-Purpose Computation on Graphics Hardware”. In EUROGRAPHICS 2005, State of the Art reports, pp. 21–51, 2005  Motion Estimation  Francis Kelly and Anil Kokaram, “General Purpose Graphics Hardware for Accelerating Motion Estimation,” in Irish Machine Vision and Image Processing Conference (IMVIP), Sept. 2003  Francis Kelly and Anil Kokaram, “Fast Image Interpolation for Motion Estimation using Graphics Hardware,” in IS&T/SPIE Electronic Imaging  Real-Time Imaging VIII, May 2004, vol. 5297, pp. 184–194  Sébastien Mazaré, Renaud Pacalet, Jean-Luc Dugelay, “Using GPU for Fast Block-matching,” EUSIPCO 2006, 14th European Signal Processing Conference, September 4–8, 2006, Florence, Italy  C.-W. Ho, O. Au, S.-H. Chan, S.-K. Yip, and H.-M. Wong, “Motion Estimation for H.264/AVC using Programmable Graphics Hardware,” Proceedings IEEE International Conference on Multimedia Expo (ICME) , pp. 2049–2052, Toronto, Canada, 9–12 July, 2006  Шумоподавление  Andreas Langs, Matthias Biedermann, “Filtering Video Volumes using the Graphics Hardware,” 15th Scandinavian Conference on Image Analysis, SCIA 2007, LNCS 4522, p. 878–887, June 10–14, 2007, Aalborg, Denmark  Ivan Viola, Armin Kanitsar, Meister Eduard Gröller, “Hardware-Based Nonlinear Filtering and Segmentation using High-Level Shading Languages,” Proceedings of the 14th IEEE Visualization 2003, 2003 70 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 68. Only for Maxus  Список литературы  Декодирование видео  Guobin Shen, Guang-Ping Gao, Shipeng Li, Heung-Yeung Shum, and Ya-Qin Zhang, “Accelerate Video Decoding with Generic GPU,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 15, no. 5, pp. 685–693, May 2005  Bart Pieters, Dieter Van Rijsselbergen, Wesley De Neve, Rik Van de Walle, “Motion Compensation and Reconstruction of H.264/AVC Video Bitstreams using the GPU,” Image Analysis for Multimedia Interactive Services, 6–8 June, 2007 pp. 69–69  Вейвлеты  Carsten Stocklöw, Stefan Noll, “Realtime Wavelet Video Encoding with Generic Graphics Processing Unit,” Proceedings Eurographics Italian Chapter Conference, 2007, pp. 73–78  T. T. Wong, C. S. Leung, P. A. Heng and J. Wang, “Discrete Wavelet Transform on Consumer-Level Graphics Hardware,” IEEE Transactions on Multimedia, Vol. 9, No. 3, April 2007, pp. 668–673  DCT/IDCT  Bo Fang, Guobin Shen, Shipeng Li, and Huifang Chen, “Techniques for Efficient DCT/IDCT Implementation on Generic GPU,” in Proceedings of the IEEE International Symposium on Circuits and Systems, May 2005, vol. 2, pp. 1126–1129 71 CS MSU Graphics & Media Lab (Video Group) www.compression.ru
  • 69. Only for Maxus  Лаборатория компьютерной графики и мультимедиа Видеогруппа это:  Выпускники в аспирантурах Англии, Франции, Швейцарии (в России в МГУ и ИПМ им. Келдыша)  Выпускниками защищено 5 диссертаций  Наиболее популярные в мире сравнения видеокодеков  Более 3 миллионов скачанных фильтров обработки видео 72 CS MSU Graphics & Media Lab (Video Group) www.compression.ru