BPC2E_C09 Model komunikačního systému v Matlabu Cílem cvičení je vyzkoušet si sestavit skripty v Matlabu pro model jednoduchého komunikačního systému pro přenos obrázků. Úloha A. Sestavte model komunikačního systému, který pracuje s modulací 8PSK a který přenáší komprimované BMP obrázky. Pro kompresi (zdrojové kódování) a zpětnou dekompresi (zdrojové dekódování) BMP obrázků použijte následující algoritmus: Nejprve z jednotlivých barevných složek vytvořte matici C, která je součtem všech tří RGB složek pro jednotlivé pixely (elementy matice). Následně vytvořte matici pro červenou a zelenou složku jako poměr úrovně červené ku součtu všech složek (R/C) a podobně pro zelenou matici úrovní (G/C). Pokud byste to samé provedli i pro modrou matici úrovní, součet všech třech poměrových matic by byl 1 (tedy 100%). Tzn., že poměrovou matici modré lze dopočítat z poměrových matic červené a zelené. Celá komprese spočívá v tom, že C matice nese celkovou úroveň jasu a poměrové matice procentuální zastoupení barev. Jasovou matici C podělte 3, čímž získáte rozsah pro jas 0 až 255 (osmibitovou hodnotu) pro každý pixel. Z této matice vytvořte finální matici jasu pro přenos rádiovým kanálem tak, že použijete jen šest nejvyšších bitů (jas bude komprimován na 64 úrovní). Pro poměrovou složku červené a zelené vytvořte zředěné matice tak, že obrázek rozdělíte na bloky 4x4 pixelů a budete uvažovat průměrnou poměrnou úroveň červené, resp. zelené pro tento blok pixelů. Výsledné poměrové matice budou mít 4x méně řádků i 4x méně sloupců (celková redukce je 16x). Následně tyto matice ořežte na 6 nejvyšších bitů (např. tak, že poměr 0 až 100% vynásobíte 26 a zanedbáte desetinnou část). Tím je hotová celá komprese. Inverzním způsobem a dopočítáním složky modré získáte zpět komprimovaný BMP obrázek, tento proces bude třeba provést po demodulaci signálu. Nejlépe bude řešit zdrojové kódování a dekódování jako vlastní matlabovské funkce, které se budou volat ve skriptu modelu. Důvod je i ten, že můžete provést test správné činnosti kompresoru a rekonstrukce komprimovaného BMP obrázku bez modulace a demodulace
Obr. 9.1a. Originální fotka.
Obr. 9.1b. Rekonstruovaná komprimovaná fotka.
Pro testování máte připravený obrázek mkid.bmp o velikosti 200 x 200 pixelů s roztomilou dětskou tvářičkou. Na obrázku 9.1a je původní BMP fotka a na obrázku 9.1b
komprimovaná (rekonstruovaná). Rozdíl je takřka neznatelný, přičemž kompresní poměr je docela velký. Původní obrázek potřebuje 200x200x3x8 bitů (tři barevné složky s rozlišením 8 bitů) = 960000 bitů, komprimovaný 200x200x1x6bitů pro jas plus 50x50x2x6 bitů pro dvě poměrové barevné složky bloků 4x4 pixely, tedy celkem 270000 bitů. Kompresní poměr je 960000/270000 = 3,56. Náš primitivní algoritmus je celkem dobrý komprimátor bez újmy na kvalitě obrázku s více než tři a půl násobnou redukcí datového objemu. Pro výstup z kodéru rozdělte šestibity (informace o jasu pixelu a dvou barvách bloku 4x4 pixelů) po trojicích a vygenerujte vektor tříbitových hodnot (tedy 0 až 7) pomocí funkcí reshape(). Skladbu, tedy kde bude ve vektoru vyšší část jasu, nižší část jasu a vyšší a nižší část té které barvy, si vymyslete sami. Pochopitelně, že s danou skladbou musí pracovat i příslušný algoritmus dekodéru obrázku. Rozdělení na trojice bitů souvisí s následně použitou modulací. Ve druhé fázi příkladu bude třeba navrhnout modulátor a demodulátor pro modulaci 8PSK. Symboly v I/Q diagramu (viz přednáška) mají shodnou amplitudu (uvažujte 1 V) a jsou rozlišeny jen různou počáteční fází. Protože různých počátečních fází je 8, je tato modulace definována jako osmistavová modulace s fázovým klíčováním 8PSK (Phase Shift Keying). Výhodou této modulace je, že amplituda je konstantní a mění se jen fáze nosné. Protože máme osm různých stavů, jeden symbol umožňuje přenést trojici bitů (tribit) užitečných dat. Mapování do I/Q diagramu pro tuto modulaci je uvedeno na obrázku 9.2. Mapování je zjednodušeno (není optimální) tak, aby bylo velmi jednoduché modulátor a demodulátor realizovat. Navíc náš kódovaný obrázek nese jas pro jednotlivé pixely a barevné složky pro bloky 4x4 v šesti bitech, tzn., že pro modulaci se každý šestibit (jas nebo barevná procentuální úroveň) rozdělí na dvě trojice bitů (nižší a vyšší) a přenáší se jako dva nezávislé 8PSK symboly, viz požadavek na rozdělení u kodéru a dekodéru. Sestavte funkci pro mapování symbolu vstupního vektoru podle obrázku 9.2. Černě jsou u symbolů definovány mapovací tribity, modře pak jejich hodnoty v dekadické soustavě. Lze velmi snadno odvodit, že fáze symbolu (ve stupních) je závislá na hodnotě dat D (dekadicky vyjádřeného tribitu) podle vztahu:
ϕ = 45 ⋅ (D − 4) + 22,5 .
Obr. 9.2. Mapování symbolů 8PSK.
(9.1)
Pro demodulaci je třeba definovat rozhodovací hranice. U 8PSK signálu nás tedy bude zajímat jen fáze. Rozhodovací hranice jsou na obrázku 9.3 v I/Q diagramu pro přijatý signál (vzorky) definován červenými čarami. S využitím funkce angle() a round() pro celý 8PSK demodulátor vektoru signálu pak stačí dva řádky matlabovského skriptu. Sestavte kompletní skripty modelu komunikačního systému a proveďte několik experimentů pro různé úrovně šumu. Vzhledem k použitému způsobu komprimace obrázku se začnou se zvyšující úrovní šumu v obrázku objevovat chyby v podobě chyb na úrovni pixelů a kostečkování (podobně jako u digitální televize), viz obr 9.4.
Obr. 9.3. Rozhodovací hranice pro 8PSK demodulátor.
Signal with AWGN noise 2 1.5 1
Q
0.5 0 -0.5 -1 -1.5 -2 -2
-1.5
-1
-0.5
0 I
0.5
1
1.5
2
a) úroveň šumu 0,10 – signál na vstupu demodulátoru v I/Q rovině a rekonstruovaný obrázek
Signal with AWGN noise 2 1.5 1
Q
0.5 0 -0.5 -1 -1.5 -2 -2
-1.5
-1
-0.5
0 I
0.5
1
1.5
2
b) úroveň šumu 0,15 – signál na vstupu demodulátoru v I/Q rovině a rekonstruovaný obrázek Signal with AWGN noise 2 1.5 1
Q
0.5 0 -0.5 -1 -1.5 -2 -2
-1.5
-1
-0.5
0 I
0.5
1
1.5
2
c) úroveň šumu 0,20 – signál na vstupu demodulátoru v I/Q rovině a rekonstruovaný obrázek Obr. 9.4. Výsledky přenosu BMP obrázku komunikačním systémem s 8PSK modulací. Hodnocení: 3 body. Bonusová úloha Vytvořte vlastní řešení zdrojového kódování (komprimace obrázku) a proveďte obdobnou sadu experimentů jako v příkladě A. Kontrolní otázky 9.1) Definujte kompresní poměr u komprimačních metod. 9.2) Jak by se v přenášeném obrázku projevil delší rušivý puls, když by byla obrayová data přenášena sekvenčně po řádcích? 9.3) K čemu slouží v Matlabu funkce size()? Literatura [9.1]
DOŇAR, B., ZAPLATÍLEK, K. MATLAB pro začátečníky. Praha: BEN – Technická literatura, 2003.
[9.2] [9.3]
DOŇAR, B., ZAPLATÍLEK, K. MATLAB – začínáme se signály. Praha: BEN – Technická literatura, 2006. DOBEŠ, J., ŽALUD, V. Moderní Radioelektronika. Praha: BEN – Technická literatura, 2006.