четвъртък, 14 януари 2016 г.

Принцип на диференциалната импулсно-кодова модулация. Дискретна косинусова трансформация. Компенсация на движението.

Принцип на диференциалната импулсно-кодова модулация

Диференциалната импулсно-кодова модулация представлява метод за кодиране с предсказване. При нея вместо предаване стойността на `N`-тия отчет `a_N`, се предава предсказаната стойност `a_{Nпр}=a_N-a_N^'`, където `a_N^'` е стойността, изчислена по фиксирана функция от няколко предходни отчета `a_{N-1}, a_{N-2}, a_{N-3}, ..., a_{N-Z}`. В най-простия случай `a_N^'` е равна на стойността на предходния отчет `a_{N-1}` и в канала за връзка се предава само разликата в стойностите на два съседни отчета.



На фиг.3.5а е показан вариант на структурна схема за кодиране с предсказване. При определяне стойността на предсказването `a_N^'` на `N`-тия отчет се използва определена зависимост, включваща линейна комбинация от стойностите на няколко предходни отчета. Стойностите на предходните отчети се запомнят в преместващ регистър, а зависимостта за формиране на предсказването `a_N^'`, се генерира в предскавзащия блок, представляващ комбинационна схема. За кодиране и предаване в канала за връзка се подава стойността `a_N-a_N^'`. В приемната страна по същата зависимост се определя предсказаната стойност `a_N^'` и след сумираща схема се получава истинската стойност на отчета `a_N` (фиг.3.5б). Такава схема на диференциална импулсно-кодова модулация може да работи при всякаква формула за предсказване като се спазва условието в приемната и предавателната страна да се използва една и съща формула за предсказване. Колкото по-точно е предсказването, толкова по-малък ще бъде информационният поток, предаван по канала за връзка. Кодирането с предсказване е без загуба на информация тъй като в приемната страна се възстановява входния сигнал.

Дискретна косинусова трансформация

При кодиране на изображението с предсказване възможностите за съкращаване на цифровия поток са ограничени - на практика могат да се съкратят най-много 4 бита на отчет.

Значително по-добри възможности за съкращаване има груповото кодиране, при което изображението се разпределя на блокове, които се подлагат на кодиране.

При груповото кодиране се използва преобразуване на изходните данни, което не довежда до визуално забележими изменения, но позволява значително да се съкрати обемът на цифровия поток. Ефективността на груповото кодиране на груповото кодиране на изображението се базира на:

  • в процеса на преобразуване отчетите на изображението, редица коефициенти придобиват такива малки стойности, че могат да се пренебрегнат, без това да доведе до забележимо изменение в качеството на възстановеното изображение;
  • в процеса на преобразуване на изображението се осъществява декорелация на цифровата информация, което повишава ефективността на статистическото кодиране;
  • нелинейното квантуване на коефициентите на преобразуване позволява съществено да се съкрати обемът на предаваната информация без забележимо изменение в качеството на изображението при възстановяването му.
При груповото кодиране матрицата с отчетите на блока се подлага на дискретно линейно ортогонално преобразуване, при което линейният оператор е обратим, т.е. матрицата, с която се реализира преобразуването има своя транспонирана матрица, с чиято помощ изходните данни се възстановяват. Преобразуването на изображението може да се разглежда  като разлагане на изходното изображение на в обобщен двумерен спектър.

За преобразуването на изображение могат да се използват дискретното преобразуване на Фурие, преобразуването на Хаар, преобразуването на Уолш-Адемар, дискретното синусово преобразуване, дискретното косинусово преобразуване, преобразуването на Кархунен-Лоев и др. В стандарта `MPEG-2` се използва дискретно косинусово преобразуване. При него матрицата `f(x,y)` на блок с `8xx8` отчета на сигнала за яркост и на матриците на блока на сигналите за цветовите разлики се заместват с матрици `F(bar omega_x, bar omega_y)` на `DCT` - коефициентите, равни на амплитудите на косинусовите хармонични функции (фиг.3.6). Всеки един от коефициентите съответства на определена честота на видеосигнала. Дискретното косинусово преобразуване е обратимо.

В резултат от двумерното преобразуване на Фурие от функцията `f(x,y)`, описваща изображението, се получава спектъра на това изображение:
`F(bar omega_x, bar omega_y)=int_A int f(x,y) e^{-i(bar omega_x x, bar omega_yy)}dxdy`,
където `bar omega_x` и `bar omega_y` са пространствените честоти, а `i=(-1)^{1/2}` е имагинерната единица.

Изходната функция може да бъде възстановена чрез обратно преобразуване на Фурие:

f(x,y)=(1/4pi^2)int_A int F(bar omega_x, bar omega_y) e^{-i(bar omega_x x, bar omega_yy)}dxdy


  • f(x,y)=(1/4pi^2)int_A int F(bar omega_x, bar omega_y) e^{-i(bar omega_x x, bar omega_yy)}dxdy

  • Недостатък на преобразуването на Фурие е това, че за всяка честота се получават по два коефициента - за синусовата и косинусовата компонента. Редът на Фурие на произволна непрекъсната реална и симетрична (четна) функция съдържа само реални коефициенти, които съответстват на косинусовите членове на реда. При косинусовата трансформация за всяка честота има само по един коефициент, което намалява обема на информацията двойно.

    При дискретната косинусова трансформация `DCT` - коефициентите се определят от зависимостта:
    `F(u,v)=2/N C(u)C(v) sum_{x=0}^{N-1}sum_{y=0}^{N-1}f(x,y)cos({(2x+1)upi}/{2N})cos({(2y+1)vpi}/{2N})`, където `N=8` е броят на отчетите в един блок; `u, v, x, y =0,1,2,...,N-1`; `x, y` - координатите на отчетите; `u, v` - координатите на `DCT` коефициентите (честотни координати); `F(u,v)` - `DCT` коефициент ; `f(x,y)` - стойността на пиксела; `C(u), C(v)` - коефициенти, чиято стойност е равна на `1/2^{1/2}` при `u=0` и  `v=0` и е равна на `1`, когато `u` и `v` приемат други стойности.

    Обратното (инверсното) дискретно косинусово преобразуване (IDCT) се дава със зависимостта:
    `f(x,y)=2/N sum_{x=0}^{N-1}sum_{y=0}^{N-1}C(u)C(v) F(u,v)cos({(2x+1)upi}/{2N})cos({(2y+1)vpi}/{2N})`

    На фиг.3.7а са дадени базовите функции за `DCT` преобразуване при 'N=8'. От фигурата се вижда, че при ниски честоти базовите функции представляват груба апроксимация на непрекъсната синусоида. С повишаване на честотата сходството на базовите функции със синусоида се губи и при най-високата честота базисната функция представлява поредица от правоъгълни импулси с коефициент на запълване `1/2`.

    На фиг.3.7б са дадени базовите функции за `DCT` преобразуване в матрицата `8xx8` на `DCT` коефициентите. В матрицата коефициентите по хоризонтали представляват увеличаващите се отляво надясно хоризонтални честоти, а по вертикали - увеличаващите се вертикални честоти отгоре надолу. Коефициентът в горния ляв ъгъл (първият коефициент) представлява нулевата хоризонтална и вертикална честота (постоянна съставка) и се нарича постояннотоков коефициент. Долният най-десен коефициент е с най-висока пространствена честота. Постоянната съставка на спектъра на Фурие е пропорционална на средната яркост на изображението, а високочестотните съставки характеризират големината и ориентацията на контурите му.

    При реалните изображения основната информация след `DCT` преобразуване е съсредоточена в горния ляв ъгъл на матрицата. Постояннотоковата съставка и `DCT` коефициентите около нея имат най-високи стойности. Тежестта на коефициентите се намалява с увеличаване честотата на хармоничните съставки (фиг.3.8). Това е показано на фиг.3.9 - в лявата част на фигурата е показано изображението, което се определя от първите шест `DCT` коефициента, а в дясната част - останалите 58 `DCT` коефициента. Основната информация за изображението практически се носи от първите `DCT` коефициенти, а останалите добавят само рязкостта на контурите. Фактът на съсредоточаване на информацията за изображението в част от `DCT` коефициентите е в основата на кодирането на източника и намаляването скоростта на цифровия поток в канала за връзка. Отстраняването на високочестотните `DCT` коефициенти от матриците на сигнала за яркост и от матриците на сигналите за цветовите разлики практически не води до забележимо влошаване в качеството на изображението. В зависимост от зададената стойност на скоростта на цифровия поток след кодирането на източника се отстраняват повече или по-малко `DCT` коефициенти от матриците.

    Процесът на груповото кодиране с използване на дискретно косинусово преобразуване е показан по-долу в примера на блока `8xx8` на изображение на яркостна градация. Този блок има следната матрица `f(x,y)` на отчетите на сигнала за яркост:


    От матрицата `f(x,y)` се съставя нова матрица `f^'(x,y)`, в която отделните стойности на отчетите са извадени от 128 - средната стойност на сигнала за яркост:


    В матрицата `f^'(x,y)` отчетите със стойност над 128 са с отрицателен знак. Тя се подлага на дискретно косинусово преобразуване, в резултат на което се формира матрицата `F(u,v)` на `DCT` коефициентите:

    От получената матрица `F(u,v)`  на `DCT` коефициентите се вижда, че съществени стойности имат само коефициентите в левия горен край на матрицата, а останалите коефициенти рязко намаляват и стават нули.

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

    При `MPEG-2` квантуването се осъществява чрез делениена матрицата на `DCT` коефициентите с таблици (матрици `Q(u,v)`, дефинирани от стандарта `ISO-IEC 13818-2`). Тези таблици се получават емпирично и са еднакви за квантуване на сигнала за яркост и на сигнала за цветовите разлики, но са различни при `I` кадъра и при `B`, и `P` кадъра. Характерно за матрицата `Q(u,v)` е това, че първият ѝ член (в горния ляв ъгъл) има най-малка стойност - 8, а последният ѝ член (в долния десен ъгъл) - най-голяма стойност - 83 :

    Стойностите на елементите на `Q(u,v)` наразтват отгоре надолу и отляво надясно. Така при разделяне на матрицата с `DCT` коефициентите с матрицата `Q(u,v)`, най-малко ще се измени постоянната съставка и нискочестотните хармонични, а най-много ще се подтиснат високочестотните съставки - около 10 пъти по-силно от нискочестотните. Следователно, след квантуването, от матрицата с `DCT` коефициентите ще се отстранят високочестотните съставки, чието влияние върху качеството на изображението е най-незабележимо.

    Матрицата `Q_{B,P}(u,v)`, с която се квантуват матриците с `DCT` коефициентите, в `B` и `P` кадрите, има еднакви стойности на всички елементи:

    След квантуване от матрицата `F(u,v)` се получава:

    Очевидно е, че след квантуването на `F(u,v)`, основната част от `DCT` коефициентите са нули или имат много ниска стойност, почти равна на нула. Получената матрица се подлага на закръгляване на коефициентите до цели числа:

    Както се вижда, в новата матрица `F(u,v)` повечето от коефициентите са нули.

    Освен този начин на квантуване съществува и "глобално" квантуване, при което всички коефициенти на матриците в макроблока се делят с число, чиято стойност се определя от зададената скорост на изходния цифров поток, т.е. от зададената степен на съкращаване на цифровия поток. Чрез промяна на това число се влияе върху разпределението на битовете в информационния поток. Колкото по-малка трябва да бъде изходната му скорост, толкова по-силно е квантуването. Глобалното квантуване е променливо в течение на предаване на изображението и се определя от съдържанието на картината. Числото, с което се осъществява глобалното квантуване, както и самите квантуващи матрици, се предават в приемното устройство, за да се изпълни обратното квантуване.

    Това, че `DCT` коефициентите, чиято стойност е различна от нула, са съсредоточени в горния ляв ъгъл на матрицата, обуславя зиг-заг метод за четене на матрицата, който е приет в стандарта MPEG (фиг.3.10). Зиг-заг четенето на матриците с `DCT` коефициентите започва от горния ляв ъгъл на матрицата и завършва в долния ѝ десен ъгъл. Този начин на четене значително съкращава предаваните цифрови данни в сравнение с последователното четене ред по ред. В разглеждания случай, при четене на матрицата `F(u,v)` вместо `[3, -4, 0, 0, 0, ..., 0]`, се записва `[3, -4, 62xx0]`.

    Друг ефективен начин за съкращаване обема на предаваната информация скед кодиращото устройство, е зиползването на променлива дължина на двоичния код за `DCT` коефициенти. От показания по-горе пример се вижда, че в матрицата на `DCT` коефициенти преобладават ниски стойности. Затова коефициентите се кодират в двоичен код с променлива дължина (VLC - Variable Lenght Coding), при който за статистически по-често срещаните стойности на `DCT` коефициентите, се използва по-малък брой битове, в сравнение с кодовете за по-рядко срещаните по-високи стойности. Този подход значително намалява скоростта на цифровия поток. Средно коефициентите на `DCT` матрицата при използване на `VLC` се кодират с около `40` бита сравнено с `512` (`8 xx 8xx8=512` бита) при обикновеното кодиране, т.е. 12 пъти по-ниска скорост на цифровия поток.

    В `MPEG-2` стандарта са посочени таблиците за `VLC` за трите вида кадри - `I`, `P` и `B`.

    Компенсация на движението

    Реалното телевизионно изображение се състои от двe компоненти:

    • новите части (ентропия) на изображението;
    • частите на изображението, които остават непроменени в следващите един след друг кадри.
    Ентропията носи същинската информация в сигнала, а непроменяемата компонента не носи информация. Задачата на кодера е да отдели ентропията и да я предаде в канала за връзка. Колкото по-прецизно се филтрира ентропията, толкова по-ефективна е работата на кодера и съответно толкова по-малка ще бъде скоростта на изходния цифров поток. В `MPEG-2`кодерите от ново поколение, се прилага и високоефективни управляващи програмни продукти, които постигат впечатляващо качество на телевизионното изображение при значително снижена скорост на цифровия поток.

    Ентропията се създава от движението на елементи в изображението. Съдържанието на телевизионното изображение се изменя поради това, че отделни обекти в него се движат или пък самата гледна точка (TV камерата) се движи.

    В стандарта `MPEG` важен елемент е процесът на компенсацията на движението. Този процес се състои в определяне вектора на движението - вектор, който  посоката и местоположението на преместването на всеки макроблок от 'N`-тия кадър в 'N+1`-вия (фиг.3.11). Векторът на движението може да се определя както в полукадрите, така и в кадрите на изображението. Всеки вектор има хоризонтална и вертикална съставка. Към приемното устройство се предава разликата на векторите на движението в съседните кадри и там се използва за реконструиране на предаваното изображение.

    Допълнително към векторите на движението се предава и предсказаната разлика между макроблоковете. Комбинацията от предаването на векторите на движението на блоковете и `DCT` кодираната предсказана разлика на блоковете е силно средство за намаляване скоростта на цифровия поток.

    В стандарта `MPEG-2` се използват два варианта за предсказване на разликата между кадрите:

    • еднопосочно предсказване - предсказването става на база разликата между изображението на предишния кадър или на следващия кадър, т.е. на два поредни кадъра;
    • двупосочно предсказване - предсказването става на база разликата между изображението на предишния кадър и на следващия кадър, т.е. на три поредни кадъра.

    При `MPEG-2` междукадровото блоково кодиране се използват три вида кадри:

    • `I` - кадър - вътрешно кодиран кадър (Intraframe Coded Picture). Това е кадър от от изображението, изцяло кодиран чрез `DCT` предсказване;
    • `P` - кадър - предсказан кадър (Predictive Picture). Това е изображение, получено на базата на еднопосочно предсказване (от предходния кадър);
    • `B` - кадър - двупосочно предсказан кадър (Bidirectional Predictive Picture). Това е изображение, което се формира от предсказване на изображението от предходен и от следващ кадър.
    `I` - кадърът съдържа пълна информация за изображението в един кадър. Той "стартира" декодера. Между `I`-кадрите се предават `P`-кадри и `B`-кадри, в които се предават само прогнозираните разлики в изображението. Комбинацията от трите вида кадри образуват видеогрупа

    Във всяка видеогрупа има един `I`-кадър и няколко `P`- и `B`-кадри. Видеогрупата се дефинира еднозначно с числата `N` и `M`, където `N` е броят на `P`- и `B`-кадрите между два `I`-кадъра, а `M` е броят на `B`-кадрите между два `P`-кадъра. Например при `N=12` и `M=2`, видеогрупата е подредена така: `I, B, B, P, B, B, P, B, B, P, B, B, I`, а при `N=15` и `M=3`, видеогрупата придобива вида: `I, B, B, B, P, B, B, B, P, B, B, B, P, B, B, B, I` (фиг.3.12)


    При `N=12` продължителността на една видеогрупа е `480 ms`, т.е. почти на всяка половин секунда се предава по един `I`-кадър. При смяна характера на телевизионното изображение, видеогрупата се прекъсва и се започва с нов `I`-кадър (нова видеогрупа).

    Всеки `P`-кадър се получава от предсказването му с предходния `I`-кадър или `P`-кадър, а всеки `B`-кадър се получава от предсказването му с предходния `I`-кадър и следващия `P`-кадър.

    Колкото е по-голям броят на `B`- и `P`-кадрите във видеогрупата, толкова повече, ще се намали скоростта на цифровия поток, но това повишава значително обема на необходимата хардуерна памет в кодера и декодера и се увеличава времето на задържане на сигнала между входа на кодера и изхода на декодера. За оптимален размер на видеогрупата се предпочитат 12 кадъра.

    В декодера на приемната страна най-напред се декодира `I`- кадърът, след това се възстановява `P`- кадърът. С помощта на информацията от тези два кадъра се възстановяват двата следващи `B`- кадъра. Следващият декодиран `P`- кадър служи за възстановяване на следващите `B`- кадри и т.н. Този ред на възстановяване на кадрите изисква и промяна в реда на постъпване на кадрите в кодиращото устройство. След кодера, кадрите се предават в последователността  `I, P, B, B, P, B, B...` , показана на фиг.3.13. След възстановяване на пълното съдържание на всеки кадър в кодера, се възстановява и правилният ред на кадрите и те се подават към екрана на телевизора за възпроизвеждане.

    За предаване на един `I`- кадър са необходими средно `9.10^5` бита. За предаване на един `P`- кадър - `3.10^5` бита, а на един `B`- кадър - само `1.10^5` бита (около 10 пъти по-малко от `I`- кадъра). Примерно сравнение на количеството бит-информация е показано на фиг.3.14.

  • Няма коментари:

    Публикуване на коментар

    Equations

    π 8 3