Кодиране на видео от данни - част 1

- Секция Мултимедия

 

    Съществуването на съвременното цифрово видео е свързано с развитието на технологията за кодиране (компресиране и разкомпресиране). Тази технология се     изпълнява    с     помощта      на     т.нар.    кодеци    (codec  - Compression/DECompression). Кодеците компресират и разкомпресират файловете като използват определени математически алгоритми, от които в
голяма степен зависи размера на файла и качеството на видеоизображението.
    Компресирането на цифрови сигнали представлява процес на премахване на определена информация от всеки видеокадър. Това дава възможност по-голямо количество данни да бъдат предавани за единица време. Разкомпресирането е процес, при който от компресираната по определени алгоритми информация се възстановява видеоизображението.
    Днес съществуват значителен брой технологии за компресиране на цифрово видео: MPEG-1, MPEG-2, MPEG-4, Indeo, Cinepak, M-JPEG, H.261, DivX, XviD и др. Всеки метод за компресиране има предимства и недостатъци. Правилният избор на кодек може да осигури високо качество на видеообраза при нормална големина и скорост на възпроизвеждане.
 
    1.Видове видео кодеци
 
    Всички съществуващи кодеци могат да бъдат разделени на няколко категории в зависимост от времето, необходимо за компресиране и качеството:
 
    • симетрично компресиране - времето за компресиране и декомпресиране на цифровия видеосигнал е приблизително еднакво;
    • асиметрично компресиране - времето за компресиране е значително по-голямо от времето за декомпресиране. Осигурява по-малък обем на видеофайла и по-високо качество.
    • компресиране със загуба на информация - почти всички методи за компресиране на цифрово видео са със загуба на информация, което означава, че при възпроизвеждане на екрана няма да бъдат възпроизведени абсолютно същите пиксели, каквито са били записани преди компресирането. Някои от този тип кодеци предлагат, въпреки загубата на информация предлагат високо качество: M-JPEG, DV, DivX, XviD и др.
    • компресиране без загуба на информация - при този тип компресиране не се премахва информация и видеофайлът е с оригинално качество. При използването на такъв тип кодеци, видеофайловете се получават с голям обем.
 
     Пример за такъв кодек е HuffYUV.
     В зависимост от предназначението си, кодеците могат да бъдат разделени на следните категории:
 
    • кодеци, използвани при прехващане на видео сигнали - по-голяма част от видеограберите имат ограничен набор от кодеци, които могат да използват.
 
Евтините видеограбери използват софтуерни кодеци (собствени или YUV базирани). По-скъпите модели притежават хардуерни кодеци и едновременно с дигитализирането компресират видеоизображението в М-JPEG или DV формат. При използване на видеодекодер за RGB или YUV видеосигнали, могат да бъдат използвани в реално време различни (съществуващи на системата) кодеци.
 
    • кодеци, използвани при редактиране на цифрово видео. При редактиране трябва да се използват кодеци, които осигуряват високо качество, независимо от по-големия обем на файловете, които се получават. Най-често се използват M-JPEG, ОУили HuffYUV.
 
    • кодеци, използвани при разпространение на цифрово видео. При разпространение на цифрово видео и на ММП с негово използване, целта е да се постигне по-малък обем при приемливо качество. Трябва да се отчита и вероятността евентуалните потребители да притежават избрания кодек, за да могат да възпроизвеждат видеото. Най-подходящи и с най-голямо разпространение в настоящия момент са MPEG-1, MPEG-2 и MPEG-4 (DivX, XviD) кодеци, както и такива за AVI видео файлов формат.
 
    2. Методи за кодиране
 
    2.1. Н.261
 
    Н.261 е стандарт за кодиране на видеоинформация, който е публикуван от ITU (International Telecom Union) през 1990 г. Този стандарт е предназначен за предаване на данни със скорост кратна на 64 Kbit/s в ISDN мрежи с фиксирано времезакъснение и понякога се нарича р х 64 (където р може да приема стойности в границите от 1 до 30). Като алгоритми за компресия в този стандарт се използва комбинация от дискретно косинусово преобразувание (DCT) и компенсация на движението. Н.261 поддържа две разделителни способности: QCIF (Quarter Common Interchange Format) и CIF (Common Interchange Format) - табл.6.... При формат CIF разделителната способност е 352x288 пиксела за канала Y и 176x144 за каналите Сг и СЬ, а при форма QCIF разделителната способност е 176x144 пиксела за канала и 88x72 за каналите Сг и
СЬ. Използва цветово описание YCrCb 4:2:0, като всеки пиксел се описва с осем бита. Скоростта на кодиращия алгоритъм е оптимизирана за скорости между 40 Kbits/s и 2 Mbits/s.
 
    2.2. Н.263
 
    Н.263 е ITU стандарт за кодиране на видео, създаден през 1995/1996 година. Първоначално е разработен за използване в нискоскоростна среда до 64 Kbits/s, но днес това ограничение е отпаднало.
    Н.263 поддържа пет разделителни способности. Като допълнение към QCIF и CIF, поддържани от Н.261, са добавени SQCIF, 4CIF и 16CIF (табл. 2). QCIF е приблизително на половината разделителна способност на CIF. 4CIF и 16CIF са съответно с 4 и 16 пъти по-голяма разделителна способност от CIF. Поддържането на последните две разделителни способности означава, че кодекът е съпоставим с останалите стандарти за кодиране на видео като MPEG.
Стандартът също, както Н.261 използва DCT и алгоритъм за компенсация на движението. В сравнение с по-стария стандарт Н.261 има много подобрения в областта на компенсацията на движението, което позволява постигане на по- голямо компресиране и подобрения при коригирането на грешки. На фиг. 5. е дадена блок-схема на алгоритъма за кодиране.
 
     Таблица 2
 
 
            
     
                         фиг. 5. Блох схема на алгоритъм за компресиране
 
    Основните стъпки за компресиране, които се използват в стандарта Н.263 са следните:
 
    1) Входните видеоданни попадат в блок за анализ параметрите на движението (Motion Estimation) и в блок за компенсация на движението (Motion Compensation). Целта на обработката е да бъдат кодирани само разликите между текущия кадър и предходния (фиг. 6.). В процеса на анализ на параметрите на движението, кодекът намалява размера на компресирания файл
като отчита само областта от кадъра, която се е променила в сравнение с предходния. Блокът за компенсация на движението формира матрица от пиксели с размерност 16x16 (макроблок). От своя страна всеки макроблок се състои от четири матрици с размерност 8x8.
    2) Всеки макроблок на текущия кадър се получава като разлика между собствените стойности на макроблока и съответните стойности на макроблока в предишния кадър.
    3) Върху така получените данни за всяка матрица се извършва кодиране като се използва дискретно косинусово преобразование (Discrete Cosine Transformation - DCT). Получава се матрица с амплитуди на честотите на сигнала с размерност 8x8. Особеното при нея е, че амплитудите на високите честоти са близки до 0-ла.
    4) Матрицата на амплитудите се преобразува във вектор с помощта на зиг-заг сканиране, като се започва от горния ляв ъгъл. По този начин амплитудите, съответстващи на ниските честоти се получават в началото на вектора, а тези на високите (със стойности близки до 0-ла) в края на вектора.
    5) Следващата стъпка е квантуване (Quantizing). За целта се извършва поетапно деление на всеки от елементите на вектора на квантуващ вектор и последващо закръгляване до цяло число. Чрез промяна на стойностите на вектора на квантуване може да се увеличава или намалява значението на отделни честоти и да се управлява качеството на изображението. Полученият след
квантуването вектор съдържа много последователни нули в областта на високите честоти.
    6) На следващия етап в блока Entrope Encode се извършва ентропно кодиране над вектора. Ентропното кодиране представлява разделяне на вектора на двойки (п,т), където п указва броя на пропусканите нули, ат- значението, което трябва да бъде записано в следващия байт. Например вектор: 47, 93, 0, 0, 0, 9, 6, 0, 0, 4, ... ще бъде записан като: (0,47), (0,93), (3,9), (0,6), (2,4), ... .
    7) След това върху резултата се прилага кодиране с помощта на алгоритъма на Хофман. Получава се последователност от битове, която се предава.
 
    По време на целия процес на кодиране текущия кадър се съхранява в буфер (Frame Store). При разкомпресиране се изпълнява обратната последователност от действия.
 
 
 
      Фиг. 6. Два последователни видеокадъра и разликата между тях
 
    Основните стъпки за компресиране, които се използват в стандарта Н.263 са следните:
 
    1) Входните видеоданни попадат в блок за анализ параметрите на движението (Motion Estimation) и в блок за компенсация на движението (Motion Compensation). Целта на обработката е да бъдат кодирани само разликите между текущия кадър и предходния (фиг. 5.). В процеса на анализ на параметрите на движението, кодекът намалява размера на компресирания файл като отчита само областта от кадъра, която се е променила в сравнение с предходния. Блокът за компенсация на движението формира матрица от пиксели с размерност 16x16 (макроблок). От своя страна всеки макроблок се състои от четири матрици с размерност 8x8.
    2) Всеки макроблок на текущия кадър се получава като разлика между собствените стойности на макроблока и съответните стойности на макроблока в предишния кадър.
    3) Върху така получените данни за всяка матрица се извършва кодиране като се използва дискретно косинусово преобразование (Discrete Cosine Transformation -DCT). Получава се матрица с амплитуди на честотите на сигнала с размерност 8x8. Особеното при нея е, че амплитудите на високите честоти са близки до 0-ла.
    4) Матрицата на амплитудите се преобразува във вектор с помощта на зиг-заг сканиране, като се започва от горния ляв ъгъл. По този начин амплитудите, съответстващи на ниските честоти се получават в началото на вектора, а тези на високите (със стойности близки до 0-ла) в края на вектора.
    5) Следващата стъпка е квантуване (Quantizing). За целта се извършва поетапно деление на всеки от елементите на вектора на квантуващ вектор и последващо закръгляване до цяло число. Чрез промяна на стойностите на вектора на квантуване може да се увеличава или намалява значението на отделни честоти и да се управлява качеството на изображението. Полученият след
квантуването вектор съдържа много последователни нули в областта на високите честоти.
    6) На следващия етап в блока Entrope Encode се извършва ентропно кодиране над вектора. Ентропното кодиране представлява разделяне на вектора на двойки (п,т), където п указва броя на пропусканите нули, ат- значението, което трябва да бъде записано в следващия байт. Например вектор: 47, 93, 0, 0, 0, 9, 6, 0, 0, 4, ...ще бъде записан като: (0,47), (0,93), (3,9), (0,6), (2,4), ... .
    7) След това върху резултата се прилага кодиране с помощта на алгоритъма на Хофман. Получава се последователност от битове, която се предава.
 
    По време на целия процес на кодиране текущия кадър се съхранява в буфер (Frame Store). При разкомпресиране се изпълнява обратната последователност от действия.
 
 
    2.3. M-JPEG
 
    Стандартът JPEG е известен с възможностите си за компресиране на неподвижни изображения. M-JPEG представлява нестандартизирано разширение на JPEG, което компресира и запазва всеки кадър от видео последователността, а не разликата между кадрите. По-този начин мястото, което заемат видео файлове, компресирани по метода M-JPEG е по-голямо в сравнение с MPEG, но осигурява по-лесно и бързо редактиране. Поддържат се различни степени на компресия (между 2:1 и 12:1), като стойности 4:1 и 5:1 са без видима загуба на качество. Този кодек работи най-добре, когато е записан като микрокод в чипа на видео прехващащата карта. По този начин централният процесор на компютъра се разтоварва и може да изпълнява задачи по управление записването на информацията на диска. Кодекът съществува и в софтуерен вариант, използва се в програми като Adobe Premiere и осигурява лесно редактиране на цифрово видео. M-JPEG се използва при създаване и редактиране на видео, но не и при разпространение.
 
    2.4. HufFYUV
 
    HuffYUV представлява кодек, компресиращ видео без загуба на информация. Използва се за временно запазване на прехваната видеоинформация преди редактиране. При този формат се използва само вътрешнокадрово кодиране, което дава възможност за достъп до всеки кадър. Алгоритъмът на кодека работи по следния начин:
 
    • предсказва се стойността на всеки пиксел като се използват стойностите на съседните пиксели;
    • изчислява се разликата между предсказаната и действителната стойност;
    • резултатът се компресира с помощта на алгоритъма на Хофман като за всеки канал се използва различна таблица.
 
    При разкомпресиране се постъпва по обратния начин - извлича се разликата за пикселите от потока от данни и с помощта на стойностите на съседните пиксели се възстановява оригиналната стойност.
    Видеофайловете, кодирани с HuffYUV обикновено са двойно по-големи, от тези, кодирани с използване на M-JPEG или DV.
 
    2.5. DV (Digital Video)
 
    DV представлява формат за представяне на видеоданни, който се използва за обмен между цифрови видеокамери, видеокасетофони и компютри. Като интерфейс за пренос се използва IEEE 1394. DV има среден коефициент на компресиране 5:1 и съответно постоянен поток от 3,515 Mbits/s. Разделителната способност, с която работи е 720x576 за PAL и 720x480 за NTSC. Форматът поддържа запис и възпроизвеждане на звук по два начина: 4 канала с честота на
дискретизация 32 kHz и разрядност 12 bits или 2 канала с дискретизация 48 kHz и разрядност 16 bits. Работи с цветови представяния YUV 4:2:0 или 4:1:1. В DV се използват два типа компресия: вътрешнокадрова (посредством DCT) за всеки кадър и междублокова, използваща анализ на съдържанието на съседни блокове в един кадър. DV се различава от M-JPEG по възможността си да компресира различни части от изображението с различна степен, като за целта извършва
анализ на цветовете и прилага различни квантуващи матрици. Например някои части, с цветове в еднаква тоналност, могат да бъдат компресирани 30:1, докато други (по-сложни) да бъдат компресирани 3:1. По този начин DV оптимизира видеопотока кадър по кадър.
 
    2.6. Microsoft Video 1
 
    Това е оригиналният кодек, използван във файловия формат AVI. Кодирането на видеосигнал с този кодек е бързо, но качеството не е високо. Работи с блокове от пиксели с големина 4x4, поради което входната информация трябва да има размери по височина и ширина, деляща се на 4. Подходящ е за първоначално компресиране с цел тестване и преди да се избере по-добър
кодек. В Microsoft Video 1 се поддържат 8-битов и 16-битов цвят и може да се използва за кодиране на видео с ограничен брой цветове. Големината на компресирания видеофайл е малка, но не толкова, колкото с използване на други кодеци.
 
     2.7. Microsoft RLE (Run Length Encoding)
 
     Този кодек е подходящ за използване в компютърно генерирани изображения и анимация, където има ясни цветове. Освен 24-битов, поддържа и 8-битов цвят. Може да се използва единствено cAVI.
 
     2.8. Cinepak
 
     Представлява асиметричен софтуерен видео кодек, разработен съвместно от фирмите Apple и SuperMac. Може да работи с 8 и 24 битов цвят. Времето за компресия е от 60 до 300 пъти по-голямо от времето за възпроизвеждане. Кодекът поддържа добро видео качество при 320x240 пиксела и 15 кадъра/секунда. При бързи компютри скоростта може да достигне 30 кадъра/секунда. Големината на компресиран с Cinepak видеофайл е около 10% от големината на същия файл, но некомпресиран. Cinepak може да се използва в AVI w в Quick Time. Подходящ е за компресиране на видео, не съдържащо много статични изображения и анимация.
 
     2.9. Indeo 5.1
 
     Това е кодек, разработен от фирмата Intel. Indeo може да компресира видео симетрично (в реално време, но се получават големи файлове), или асиметрично (off-line, малък размер на файла, високо качество). Поддържа пълноекранно, пълноскоростно видео. Този кодек е скалируем, т.е. в зависимост от възможностите на компютърната система, където ще се възпроизвежда цифровото видео автоматично се променят параметрите на кодека и съответно качеството на изходния сигнал. Може да се използва в AVI, в Apple Quick Time и в ActiveMovie.
 
     2.10. Sorenson
 
     Кодекът Sorenson е разработен от фирмата Sorenson Video. Използува усъвършенствани алгоритми за векторно квантуване и компенсация на движението, а също и за адаптивно управление на потока от данни. Оптимизиран е за работа със скорости от 2 до 100 KB/s. Съществуват две версии на кодека: основна и професионална. Професионалната версия дава възможност за компресиране с използване на VBR (променлив битрейт) и превключване на по-
ниска честота на кадрите при възпроизвеждане на по-слаби компютри. Възможна е защита на данните с използване на парола и показване на прозрачно лого върху видеоматериала. Дава отлични резултати по отношение на компресирането и качеството на видео изображението. Може да се използва само с QuickTime.
 
     2.11. DivX 5.1
 
     DivX е най-популярната видео технология, която към настоящия момент се използва от над 50 млн. потребители. Кодекът е проектиран за пълноекранно, пълно скоростно възпроизвеждане на видео. Дава възможност за бързо кодиране и декодиране в реално време на видео с висока разделителна способност без използване на специален хардуер. DivX 5.1 декодира MPEG-4
Sample Profile и MPEG-4 Advanced Sample Profile видео. По този начин кодекът успешно може да бъде използван в съвременни преносими устройства като например портативни видео възпроизвеждащи устройства. DivX 5.1 използва най-съвременна технология за премахване на ненужна видеоинформация, наречена психовизуално моделиране (Psychovisual Modeling). Посредством използване на знания за визуалната система на човека, кодекът прилага оценка
на психовизуалната сложност (Psychovisual Complexity Rating — PCR) за всеки кадър и премахва данните, които не могат да се видят от човешките очи при пълноскоростно възпроизвеждане на видео. По този начин се намалява значително обемът, заеман от видеофайла и се повишава качеството на видеоизображението.
 
    2.12. XviD
 
    Представлява MPEG-4 кодек с отворен код, което е причина за неговата голяма популярност. Осигурява качество съпоставимо с останалите MPEG-4 кодеци при висок битрейт. Влошаване на изображението има при нисък битрейт (под 500 Kbit/s) или при бързо променящи се сцени във видеото. Големината на видео файла, който се получава е по-малка от тази, която се получава при използване на DivX кодек. Все още съществуват проблеми с поддържането и възпроизвеждането от различни програми.

 

 






Коментирай свободно: