Цифровая обработка видеоданных




 

Цифровое видео предполагает захват (оцифровка, сжатие, запоминание в видеофайле) и воспроизведение видеофайла. Оцифровку видео с целью их воспроизведения на экране монитора впервые реализовали фирмы IBM и Intel по технологии Indeo (In tel Vi deo) в 1992 году.

Изображения фиксируются с некоторыми интервалами времени в виде цифрового образа – кадра. Кадр представляет собой прямоугольное цветное изображение, элементы которого называют пикселами (Pixel – pic ture el ement). Каждому пикселу сопоставляется число или множество чисел, характеризующих его состояние. Количество пикселов и отношение чисела пикселов по горизонтали и вертикали может быть различным, например 4:3, 5:4 или 16:9.

Для создания видимости непрерывного движения частота смены кадров должна превышать 24 кадра в секунду. Для устранения мерцания экрана частота смены кадров должна происходить не менее 50 раз в секунду. Чтобы устранить мерцание и не увеличивать объём передаваемой информации, применяют чересстрочную развертку, при которой вначале отображаются нечётные строки (первый полукадр), а затем чётные, т.е. второй полукадр. Более современным является построчная (прогрессивная) развертка (рис.1).

Рис.1. Сканирование изображения на экране монитора и телевизора

При воспроизведении видеопоследовательности применяется частота не менее 25 кадров с секунду, т.е. не менее 50 полукадров в секунду, при которой мерцание незаметно. Аналогично телевизионным стандартам используются разрешения 720х576 и 640х480 и частоты 25 (стандарт PAL или SECAM) и 30 (стандарт NTSC) кадров в секунду.

Видеосигнал содержит последовательности полукадров, гасящих импульсов, синхронизирующих импульсов, звукового сигнала и характеризуется разрешением, частотой кадров и системой представления цветов. Перед началом активного участка каждой строки в конце строчного гасящего импульса передается синхросигнал начала активной строки, а после окончания активного участка каждой строки в начале строчного гасящего импульса передается синхросигнал конца активной строки. Каждый из синхросигналов содержит 4 байта. Первый байт равен 255, а следующие два байта равны нулю. Последний четвертый байт содержит признак полукадра (четный или нечетный), тип синхросигнала и код помехозащищенности. При использовании 10-разрядного квантования вместо числа 255 используется число 1023. Поэтому реальная (активная) область, отображаемая на дисплее, меньше общей области, т.к. из нее исключены служебные горизонтальные и вертикальные гасящие промежутки, которые имеются вне края кадра.

Рекомендации ITU-R BT.601определяют единый международный стандарт цифрового кодирования телевизионного сигнала. Кроме типовых кодирование видео предполагает также использование базисных "промежуточных" форматов, например, CIF (Common Intermediate Format). Характеристики семейства CIF показаны в таблице. Форматы с малым разрешением используются на частотах, меньших 30Гц.

Формат Разрешение яркости (гориз. х вертик.) Применение
Sub-QCIF 128 x 96 Мобильные мультимедиа
QCIF 176 x 144 Видеоконференции
CIF 352 x 288
4CIF 704 x 576 Телевидение и DVD

Для уменьшения объема цифрового потока разработаны методы преобразования, использующие особенности видео, следующие из временной и пространственной избыточности последовательности кадров:

· Подобие между кадрами – на частотах воспроизведения соседние кадры, как правило, изменяются незначительно (учитывается при компоновке видеоданных),

· Когерентность областей изображения – малое изменение параметров изображения в соседних пикселах,

· Избыточность в цветовых плоскостях – яркость имеет большую важность по сравнению с цветовыми компонентами.

 

Избыточность в цветовых плоскостях позволяет изменить компоновку яркостных и цветовых отсчетов для воспроизведения пикселов прореживанием по цвету (как следствие, допустимо использовать форматы 4:2:2, 4:2:0, 4:1:1).

Подобие между кадрами трактуется как временная избыточность, а когерентность областей изображения – как пространственная, учет которых в видеокодировщиках реализуется через временную и пространственную модели (рис.2).

Рис.2 Общая схема видеокодера

 

Для удаления избыточности между кадрами используется кадр-прототип, например предыдущий кадр, который вычитается из текущего кадра. При этом каждый кадр разбивается на квадраты, называемые макроблоками, размером 16х16 пикселей. Разбиение кадров на макроблоки распараллеливает алгоритм анализа и преобразования. Например, изображение размером 320х288 пикселей содержит 360 макроблоков, которые кодируются и декодируются независимо.

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

- среднеквадратическое отклонение

- среднее абсолютное отклонение

- сумма абсолютных отклонений ,

где - значения отсчетов текущего и предыдущего макроблоков, x и y – координаты отсчетов в макроблоке. Например, справочная программа для Н.264 использует в прогнозах SAE (SAD) по причине простоты вычислений.

При анализе результата используются два установленных уровня: минимальный и максимальный пороги. Если значение не превышает минимальный порог, то макроблоки считаются одинаковыми. Если значение находится между этими порогами, то кодируются координаты и разность величин отличающихся отсчетов. Если значение превышает максимальный порог, то кадр кодируется без учета остатка.

Но такой вариант, как правило, не обеспечивает необходимой степени сокращения данных, т.к. даже в соседних кадрах имеются существенные отличия в разных направлениях.

Лучшие результаты, т.е. формирование остаточного кадра ближе к нулевому значению, получаются при учете направления перемещения отдельных фрагментов от кадра к кадру. Алгоритм работы предполагает расширение области поиска подобных макроблоков, вплоть до сравнения со всеми макроблоками предыдущего кадра. Положительный результат поиска подобного макроблока трактуется как перемещение макроблока и, следовательно, кодируются координаты перемещения (вектор движения).

По причине использования в таком алгоритме понятия «перемещение макроблоков» полученная разница между кадрами называется компенсацией движения. Компенсация движения предполагает кодирование с предсказанием, при котором кодировщик прогнозирует кадр (макроблок) и вычитает его из фактического текущего.

Эффективность работы алгоритма зависит от применяемых методов перебора комбинаций и методов интерполяции значений пикселей, т.к. объекты видеокадров редко бывают выровнены по границам макроблоков (такая интерполяция называется подпиксельной, несмотря на ее применение к отсчетам, а не к пикселам). При поиске наиболее подобного фрагмента используется не только изменение его размера, но и интерполированные значения яркости и цветностей между пикселами кадра-прототипа. Применяется интерполяция на уровне подпиксела и четвертьпиксела, после чего текущий фрагмент вычитается из наиболее подобного фрагмента того же размера, вектор смещения которого может быть кратен целому значению, половине или четверти шага размещения пикселей.

При обработке кадров макроблоки разбиваются на блоки размером 8х8 отсчетов с возможным дальнейшим разбиением на субблоки 4х4. Размер блоков адаптируется к характеристикам изображения, т.е. большие блоки используются для однородных фрагментов кадра, а малые – для фрагментов со многими деталями и сложным перемещением.

Блоки и макроблоки формируются после преобразования исходного видеосигнала из цветовой модели RGB в YCbCr.

Например, для формата 4:2:0 при размере блока 8х8 макроблок состоит из одного блока цветоразностных компонент и 4 блоков яркости, что в целом определяет размер макроблока 16х16 пикселей, состояние которых описывается 6 блоками (рис.3).
Рис.3 Макроблок в формате 4:2:0  

Одной из существенных особенностей новейших стандартов кодирования видео, например MPEG-4 Visual, является трактовка видеопоследовательности не как набора прямоугольных кадров, а как семейства видеообъектов. Видеообъект (VO, video object) – это «пластическая сущность», доступная пользователю, к которой он может обращаться, наблюдать и манипулировать (вырезать, вставлять). Видеообъкт может существовать определенное время и заполнять область видеосцены произвольной формы. Реализация или значение видеообъекта в некоторый момент времени называется плоскостью видеообъекта (VOP, video object plane). Таким образом, VOP - это единичный кадр видеоряда, из последовательности которых образуются VO.

Например, видеосцена может быть составлена из заднего плана (VOP1) и из нескольких сцен переднего плана (VOP2, VOP3). Каждая из сцен присутствует в отдельном кадре и жестко не связана с другими сценами. Следовательно, разделенные в пространстве и времени объекты можно кодировать с различным визуальным качеством и временным разрешением в соответствии с их значимостью для объединенной сцены, т.е. VO. Кроме того, имеется широкая вариативность в формировании видеообъетов, по причине несложной замены отдельных составляющих.

 

Анализ пикселей видеокадра. Аналогично межкадровому прогнозированию применяется также предсказание значений пиксела текущего кадра по результатам предварительного анализа пикселей непосредственно в кадре. Например, по отношению к пикселу X (рис.4) процедура предполагает:

· формирование предсказания (прогноза) пиксела на основе комбинации соседних, ранее закодированых, пикселов: P(X)= f (A,B,C),

· определение разности между реальным значением пиксела и его прогнозом: R(X)=X-P(X),

· кодирование разности (ошибки прогноза) R(X) и его передачу.

Рис.4 Пример прогнозирования

Декодер, получив ошибку прогноза, вычисляет прогноз P(X) и корректирует его ошибкой R(X), формируя тем самым реальное значение X пиксела.

Эффективность метода зависит от точности предсказания, получившего название DPCM (по аналогии обработке звука).

 

Структура видеокодека. Большинство стандартов видеокодирования основаны на типовой модели видеокодека, которая предусматривает оценку движения, компенсацию, преобразование и энтропийное кодирование. Такую схему часто называют гибридной моделью DPCM/DCT (рис.5).

Видеокодер обрабатывает текущий кадр поблочно, сравнивая его с ранее закодированным кадром. Смещение текущего макроблока по отношению к ссылочному макроблоку записывается в вектор движения, на основе которого строится прогноз компенсированного движения Р (область 16х16, выбранная функцией оценки движения). Макроблок Р вычитается из текущего макроблока, а их разность, называемая остаточным макроблоком, преобразуется с помощью DCT. Каждый подблок макроблока квантуется, после чего коэффициенты DCT переупорядочиваются. Коэффициенты, векторы движения и связанные с ними информационные заголовки каждого макроблока кодируются энтропийным кодером для получения выходного сжатого битового потока.

Для каждого квантованного макроблока выполняется его деквантование и обратное преобразование для получения декодированного остаточного макроблока. Прогноз компенсации движения складывается с остаточным макроблоком для получения реконструированного макроблока, который сохраняется в реконструированном кадре.

 

Рис.5 Типовая схема кодера

Сжатый поток декодируется энтропийным декодером для извлечения из него коэффициентов преобразования, векторов движения и заголовков каждого макроблока (рис.6).

Рис.6 Типовая схема декодера

Макроблок деквантуется и к результату применяется обратное преобразование DCT, в результате чего формируется остаточный макроблок. Декодированный вектор движения используется для поиска позиции области 16х16 на предыдущем (ссылочном) кадре, копия которого хранится декодером. Эта область становится прогнозом с компенсацией движения Р. Макроблок Р прибавляется к остаточному макроблоку и формируется восстановленный макроблок, который сохраняется на своей позиции в декодированном кадре. После полного восстановления кадр готов для воспроизведения и использования в качестве ссылочного.

 

 

Пример.

Яркость остаточного блока 8х8   Коэффициенты преобразования Фурье
-4 -4 -1         -2
        -1 -3 -6 -5
      -4 -9 -5 -6 -5
    -1 -4 -6 -1    
    -5 -9 -3      
    -9 -12 -8 -9 -4  
-1   -9 -13 -8 -16 -18 -13
    -1 -6   -5 -12 -7

 

 
-13.50 20.47 20.20 2.14 -0.50 -10.48 -3.50 -0.62
10.93 -11.58 -10.29 -5.17 -2.96 10.44 4.96 -1.26
-8.75 9.22 -17.19 2.26 3.83 -2.45 1.77 1.89
-7.10 -17.54 1.24 -0.91 0.47 -0.37 -3.55 0.88
19.00 -7.20 4.08 5.31 0.50 0.18 -0.61 0.40
-13.06 3.12 -2.04 -0.17 -1.19 1.57 -0.08 -0.51
1.73 -0.69 1.77 0.78 -1.86 1.47 1.19 0.42
-1.99 -0.05 1.24 -0.48 -1.86 -1.17 -0.21 0.92

 

 

Квантованные коэффициенты (шаг квантования равен 12)   Алгоритм переупорядочивания
-1         -1    
  -1 -1          
-1   -1          
-1 -1            
  -1            
-1              
               
               

 

 

 

Массив чисел после переупорядочивания: -1, 2, 1, -1, -1, 2, 0, -1, 1, -1, 2, -1, -1, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, …, 0.

Последовательность пар «серия», «значение»: (0,-1) (0,2) (0,1) (0,-1) (0,-1) (0,2) (1,-1) (0,1) (0,-1) (0,2) (0,-1) (0,-1) (2,-1) (3,-1) (0,-1) (5,1) (EOB).

 

Каждая пара кодируется кодом VLC (Variable Length Codes). Коды VLC для коэффициентов преобразования в MPEG-4 (TCOEF) приведены в таблице (показаны первые 26 кодов длиной менее 9 бит). Всего имеется 102 кода (остальные 76 кодов имеют длину до 13 бит). Кодовые слова, содержащие более 8 подряд нулей, не допускаются.

Серия Значение Признак окончания Код (s – знак значения)   Серия Значение Признак окончания Код (s – знак значения)
      10s         001111s
      110s         001110s
      1110s         001101s
      1111s         001100s
      0111s         0010111s
      01101s         0010110s
      01100s         0010101s
      01011s         0010100s
      010101s         0010011s
      010100s         0010010s
      010011s         0010001s
      010010s         0010000s
      010001s   ESCAPE 0000011s
      010000s   …. …. ….

 

Коды VLC для примера равны:

«серия», «значение» Код VLC   «серия», «значение» Код VLC
(0,-1)     (0,2)  
(0,2)     (0,-1)  
(0,1)     (0,-1)  
(0,-1)     (2,-1)  
(0,-1)     (3,-1)  
(0,2)     (0,-1)  
(1,-1)     (5,1,EOB)  
(0,-1)    

 

В свою очередь, векторы движения (MVD) кодируются парой кодов VLC – один для горизонтального направления, а второй – для вертикального. Часть кодов приведена в таблице (остальные 49 кодов имеют длину от 8 до 13 бит):

MVD Код   MVD Код
      -2  
+0.5     +2.5  
-0.5     -2.5  
+1     +3  
-1     -3  
+1.5     +3.5  
-1.5     -3.5  
+2    

 

Для примера MVDx=0, MVDy=+1. Следовательно, коды равны (1) и (0010) соответственно.

Декодировщик из принятых кодов восстанавливает блок квантованных коэффициентов, после чего они деквантуются умножением значения на установленный шаг (в примере равен 12). В результате получается следующая матрица:

-12         -12    
  -12 -12          
-12   -12          
-12 -12            
  -12            
-12              
               
               

 

Деквантованные коэффициенты используются для восстановления остаточного блока, который подобен исходному блоку, но не идентичен ему:

-3 -3 -1   -1 -1 -1 -3
        -3 -4 -5 -6
      -3 -5 -6 -5 -4
      -4 -1      
    -1 -6 -1      
    -8 -15 -11 -11 -11 -2
    -7 -17 -13 -16 -20 -11
      -6 -1 -6 -11 -3

 

Декодер восстанавливает вектор движения и формирует собственное предсказание. В итоге, кадр реконструируется. Восстановленный кадр имеет отличия от исходного, но уровень погрешностей обеспечивается в допустимых пределах при одновременном существенном сжатии кадра (в примере – примерно в 300 раз).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-05-09 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: