Bitmélység, kvantálás

A mintavételezés kapcsán felmerül egy másik fontos kérdés: a mintavételezési tétel meghatározza ugyan, hogy milyen frekvenciával kell mintavételezni egy jelet, azt azonban nem mondja meg, hogy a mintavételezett folytonos tartományból származó értéket hogyan képezzük le digitális, diszkrét jellé. Más szavakkal kifejezve: hány biten, azaz milyen pontossággal ábrázoljuk az egyes mintavételezett értékeket. Az ábrázolási pontosságot a digitális jelfeldolgozásban bitmélységnek hívják.

Érezhető módon egy 1 bitmélységgel ábrázolt digitális jel csak 0-kat és 1-eseket tartalmaz, azaz a mintavételezett jel értékét minden mintavételezési pontban vagy 1-re vagy 0-ra képezzük le. 2 bit mélységű mintavételezésnél már pontosabb az ábrázolás: a folytonos értékeket egy négy elemű diszkrét skálához rendeljük. 8 bit mélységen, ami például a digitális képfeldolgozásban széleskörűen elfogadottnak tekinthető, a mintavételezett értékeket egy 256 elemű skálához rendelik, míg a nagypontosságú képalkotásban a beérkező jeleket 16 bitre, azaz 65536 diszkrét elemre kvantálják.

Felmerül a kérdés, hogy a kvantálást milyen módon oldhatjuk meg, illetve oldják meg valós jelfeldolgozó alkalmazásokban? N biten történő ábrázolás esetén lineáris legyen a hozzárendelés a diszkrét elemhez, vagy esetleg nemlineáris, azaz bizonyos tartományokban részletesebb, más tartományokban durvább?

A digitális jelfeldolgozás során az elsődleges kvantálást a mérőműszerben megjelenő analóg-digitális (A/D) átalakító áramkör végzi, amely jellemzően lineáris, egyenlő szélesség szerinti kvantálást valósít meg: jelölje a beérkező, értékeiket folytonos intervallumból felvevő mintákat és valósítsunk meg M bitmélységű kvantálást, azaz x értékeit különböző egész értékhez szeretnénk hozzárendelni. A jel fizikai tulajdonságai, illetve a mintavételező berendezés paraméterei alsó és felső korlátot szabnak a beérkező jel nagyságának, így feltehetjük, hogy . Ekkor az intervallumot felbonthatjuk N részintervallumra, melyek szélessége egyaránt . A beérkező x jelhez azt a számot rendeljük, melyre teljesül. Ha az értéktől kisebb vagy az értéktől nagyobb értékű x minta érkezik, akkor ahhoz rendre 0 vagy értéket rendelünk.

A gyakorlatban sokszor előfordul, hogy a minta ábrázolása nem megfelelő bitmélységen történik, például sok statisztikus tanulóalgoritmus esetén célszerű nem túl nagy bitmélységet használni, mert az exponenciálisan növeli az algoritmusok tár és műveletigényét. Ilyen esetekben az A/D átalakító által már kvantált mintákat mesterségesen újrakvantálhatjuk, s a minta sajátosságainak ismeretében akár nem-lineáris kvantálást is megvalósíthatunk, ha a minta által felvehető értékek valamely tartományában nagyobb pontosságot szeretnénk kapni. Újrakvantálásra használhatjuk például az alább bemutatásra kerülő módszereket:

Legyen adott egy számsorozat, melyet N darab egész számhoz szeretnénk, rendelni, azaz bitmélységgel kvantálni:

  1. Egyenlő szélesség szerinti kvantálás – Az és által meghatározott intervallumot N egyenlő hosszúságú, diszjunk részintervallumra osztjuk, melyek uniója kiadja az eredeti intervallumot. Az egymást követő N darab intervallum hossza , és a j-edik intervallumot módon definiáljuk. Egy számhoz a j diszkrét értéket rendeljük, ha a j-edik intervallumba esik. Az értéket természetesen az utolsó intervallumhoz rendeljük, annak ellenére, hogy ez ellentmond a formalizmusnak.

  2. Egyenlő frekvencia szerinti kvantálás – Állítsuk az értékeket nagyság szerinti növekvő sorrendbe, s hivatkozzunk az így kapott számsorra -ként. Ezen kvantálás célja az, hogy minden intervallumba ugyanannyi elem essen. Mivel a kvantálandó elemek száma n és az intervallumok száma N, ezért minden intervallumba közelítőleg darab elemnek kell esnie. Határozzuk meg ezért az j-edik intervallumot a következő módon: , ahol , azaz a hányados alsó egész része. Az értékhez a j egész számot rendeljük, ha az a j-edik intervallumba esik. Az értéket természetesen itt is az utolsó intervallumhoz rendeljük, annak ellenére, hogy ez ellentmond a formalizmusnak.

  3. K-közép klaszterezés alapú kvantálás – Alkalmazzuk a k-közép klaszterezés algoritmusát a diszkretizálandó számhalmazra N klaszter-szám paraméterrel. Az algoritmus eredményeként előáll N darab valós szám, amelyek az értékek csoportosulásainak helyét, azaz a klaszterközéppontokat adják. Állítsuk a klaszterközéppontokat növekvő sorrendbe, s hivatkozzunk ezekre módon. Ekkor a j-edik intervallumot a klaszterközepek segítségével módon definiáljuk. Az valós értékhez a j számot rendeljük, ha az a j-edik intervallumba esik. Természetesen az első és utolsó intervallum alsó és felső korlátjának meghatározásakor nincs és klaszterközéppontunk, így az első és utolsó intervallum alsó és felső korlátját rendre minusz végelennek, illetve plusz végtelennek kell tekintenünk.