ISSN 0351-6652 Letnik 30 (2002/2003) Številka 4 Strani 208-212 Jože Pahor: JE SLIKA RES VEC KOT TISOC BESED Ključne besede: računalništvo, shranjevanje slik. Elektronska verzija: http://www.presek.si/30/1522-Pahor.pdf © 2003 Društvo matematikov, fizikov in astronomov Slovenije © 2010 DMFA - založništvo JE SUKA RES VEČ KOT TISOČ BESED Pravijo, da pove vsaka slika več kot tisoč besed. Pa je to res? Bi znali opisati obraz razbojnika Cefizlja tako natančno, da bi ga butalski policaj prepoznal na prvi pogled? Danes, v dobi računalnikov, se pogosto pogovarjamo tudi z njimi. Kako shraniti v računalniku besedilo, kako shraniti sliko, da jo bo računalnik na zahtevo spet lahko pokazal na zaslonu? Beset lilo nam bo delalo bržkone manj preglavic kot slika, zato začnimo z njim. Pri pogovoru z računalnikom se moramo prilagoditi njegovim lastnostim. Računalnik pomni, misli in govori po dvojiško. V vsaki svoji spominski celici ustvari lahko le stanje, ki pomeni 0, in stanje, ki pomeni 1. Nekaj dvojiške govorice že poznamo, namreč dvojiski zapis števil. Niz 101 pomeni 5, niz 101010 pa 42, Shranimo obe števili v zaporedni spominski celici. Celotni niz 101101010 laliko preberemo na različne načine, saj ne vemo, kje je razmejitev. Rezultat je lahko spet 5 in 42, morda dobimo 11 in 10 (1011 in 01010) ali ka j tretjega. Da ne bo zmede, se je treba, vnaprej dogovoriti, kakšna števila bomo uporabljali in kako jih bomo skladiščili. Najprej si omislimo večje predalčke, zloge oziroma, byte, ki jih sestavlja po osem celic oziroma bitov, Ce namenimo vsakemu številu po dva byta, lahko zapisujemo števila od 0 do 65535, Ce je dvojiško število vredno manj kot 16 bitov, ga dopolnimo spredaj z ničlami: 0000 0000 0000 0101 je po naše 5 . Kadar bi radi pisali še večja števila, se vnaprej dogovorimo za tri ali štiri osembitne predale oziroma bvt.e. S štirimi bv t i pridemo do 2 i2 - 1 = = 4 294 967 295. Zdaj poskusimo z besedilom. Slovenska abeceda pozna 25 črk. Da bi jih zapisali po dvojiško, potrebujemo 25 različnih kombinacij ničel in enic ter dogovor, katero črko pomeni vsaka od teh kombinacij. S petbi-tnimi nizi zmoremo 32 različnih kombinacij, torej dovolj. Laliko bi začeli takole: 00001 pomeni a, 00010 pomeni b, 00011 pomeni c in tako naprej. Niz 00000 smo prihranili, da napove presledek med dvema besedama. Šestim preostalim nizom priredimo piko, vejico in še kaj. Zal bi bil tak dogovor uporaben le znotraj Slovenije. Marsikje šumnikov ne potrebujejo, manjkale pa bi jim oznake za njihove črke. Poleg tega petbitni kosi tudi niso pisani na kožo računalniku, ki ljubi byte, osembitne predalčke; Zato bomo uporabili po en byte za vsak znak abecede. Pri 256 različnih nizih je prostora za vse znake, ki jih je nekdaj zmogel pisalni stroj. Zapisati znamo velike in male črke. pa številke, ločila. Nekateri znaki so ukazi: pojdi v novo vrsto, pozvoni, vrni se. Poseben znak pove, da je konec našega besedila. Dogovor je zapis American Standard Code For Information Interchange. ali krajše ASCII, torej zapis znakov za informacijsko izmenjavo po ameriško1. Sporočilo PRESEK se po tein dogovoru napiše 80 82 69 83 69 75. Ustrezni dvojiški zapis spravimo v 48 spominskih celic2. Naši šumniki, veliki in mali. nosijo precej visoke številke, ki pa niso enotno standardizirane. Tudi debelo knjigo lahko varčno zapišemo. Prva knjiga zadnje čase priljubljenega Gospodarja prstanov šteje 535 strani. Vsaka polna stran ima 35 vrstic, dolgih po 65 znakov. Vsak znak zavzema po osem spominskih celic. To terja skupaj 9 milijonov in nekaj nad 700 tisoč spominskih celic. Ker šteje po osem celic za en byte, je zapis dolg nekaj manj kot 1,2 MB (mega bytov)3. To je na videz mnogo. Vendar pa na današnje CDje lahko shranimo 650 ali 700 MB. Na tak C'D bi lahko zapisali preko 500 Gospodarjev prstanov. Na knjižnih policah bi to pomenilo vsaj dvajset metrov ali nekaj sto kilogramov. Trdi disk v samem računalniku je še zmogljivejša shramba od CDja. Današnji trdi diski običajno drže 40 000 do 80000 MB. Z besedili potemtakem ne bo težav. Na koncu knjige Gospodar prstanov najdemo nekaj zemljevidov. Kako shraniti sliko? Bo tudi v deželi računalnikov veljala več kot tisoč besed? Poskusili bomo spremeniti preprosto sliko v niz iz enic in ničel. Naj bo to kar slika črke E. Prekrijmo sliko z mrežo, ki šteje pet polj v širino in sedem polj v višino. 1 Novejši je UNICODE, kjer znaki za posamezne črke zajemajo po 16 spominskih celic. To pomeni, da razpolaga s preko (i5 500 nizi, zato so nabori znakov tahko veliko daljši. Tako lahko v enem naboru zapišemo vse posebne znake različnih jezikov (šumniki, akcenti, grška abeceda), lahko pa tudi zapišemo pisave z veliko znaki (arabske, kitajske pismenke itd.). 2 Oznaki za l3 in R nista sosednji števili, ker je med njima v angleški abecedi črka Q- 3 V računalništvu je lk=1024 in 1M = 1024 X 1024 = 1 048 576. 1 i 1 1 1 ] 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 ] 1 1 1 Stika 1. Levo: Črka E sedi v nekaterih poljih. Sredina: Vpišemo enice v polja, kjer najdemo košček črke E, v prazna polja pa 0. Desno: Pri obnavljanju slike p očrnimo polja, označena z 1. V nekaterih poljih najdemo košček črke, druga polja so spet prazna. Otipajmo sliko polje za poljem in označimo polna, polja z znakom 1, prazna pa z znakom 0. Celoten niz ničel in enic pove vse o sliki: 11111 10000 10000 11100 10000 10000 11111. Zaradi preglednosti smo uporabili presledke med zapisi posameznih vrstic. Računalnik seveda presledkov ne pozna. Ko bere celotni niz brez presledkov, torej 11111100001000011100100001000011111, mora vedeti, koliko polj si sledi v vsaki vrsti in koliko je vseh vrst. Da ne bo zmede, namenimo vsakemu od obeli podatkov po osem spominskih celic, bitov, torej po en byte, in jih postavimo na začetek slikovnega zapisa kot. 00000101 00000111. kar je 5 in 7 po naše. Ker poznamo pravila, ki so nas vodila pri zapisu slike, iz celotnega zapisa ne bo težko znova obnoviti slike. Prvih osem polj pove vodoravno razsežnost slike, drugih osem polj pa navpično. Produkt obeh razsežnosti, ki je pri nas 35, pove število nadaljnjih polj, ki jih je potrebno prebrati, da zvemo vse o sliki. Celoten zapis slike je zdaj dolg 51 bitov. Pri uporabi znakov ASCII smo za zapis črke E potrebovali le 8 bitov. Z obnovljeno sliko nismo zadovoljni, saj ne posnema dovolj natančno izvirnika. Očitno je mreža pregroba. Polj v vrstali naj bo zato nekaj sto ali celo tisoč, povečajmo pa tudi število vrst. Oba podatka povemo, preden opišemo vsebino slike. Po en byte za vsakega bo premalo, naj bodo po trije. Večina slik pozna poleg belin in črnin tudi vrsto sivih odtenkov. Skalo bo treba razširiti. Naj ostane popolna belina 0. z 255 označimo popolno črnino4. Vmes je prostora za 254 odtenkov sivine,To je sicer več, kol, jih lahko naše oko razlikuje, vendar je računalniku pri srcu razdelitev na bvte. Zapis take slike bo seveda daljši. Vsako polje terja byte in ne bit. Slika pa ljubi barve. Kako jih spremeniti v ničle in enice? Ugotovili so, da je mogoče katerokoli barvo sestaviti iz treh osnovnih barv: rdeče, zelene in modre. če ni ne rdeče ne zelene in ne modre, vi ail a popolna tema. Zapišemo jo z 0, 0, 0. Vse tri barve, vsaka s polno vrednostjo 255, ustvarjajo videz bele barvo, ki jo zapišemo kot 255,255,255. Povsem rdeče polje ima oznake 255, 0 in (1, seveda vse zapisano z ustreznim nizom štirindvajsetih ničel in enic (sliki na 111. straui ovitka). 123456789 Slika 2. Belina prehaja postopno v črnino prek vrednosti od 0 do 255. Zapis slik postaja vse daljši in daljši. Ni težko izračunati, kako dolg bo zapis barvne slike, široke 1000 točk in visoke 800 točk. Približno tak zapis uporabljamo dandanes na zaslonih svojih računalnikov. Zapis takšne slike bo dolg 2 400 000 bytov, kar je skoraj dvakrat toliko kot vse besedilo Gospodarja prstanov. Zdaj poiščimo odgovor na vprašanje, ki smo si ga zastavili. Če predpostavimo, da je povprečna slovenska beseda dolga šest znakov všteli smo tudi presledek - potem je v Gospodarju prstanov okoli 200 000 besed. Vsaj toliko pa. je lahko vredna tudi ena sama slika. V tehniki in znanosti uporabljamo načrte in grafe. Črte zasedajo le malo prostora; večina slike je bela. Ko načrt ali graf na opisani način spremenimo v niz enic in ničel, bodo prevladovale ničle. Ob veliki množici ničel bo zapis pošastno dolg. Poskusimo z drugačnim zapisom. Spet se lotimo risanja črke E tako. da sledimo naslednjemu nizu ukazov: Dvigni pero nad papir - za vsak slučaj. Premakni se v koordinatno izhodišče - potovanje bomo zaceli od doma. Premakni se do točke 2,1 zdaj smo pripravljeni za risanje. Spusti pero do papirja na papirju začini pika. Premakni se do točke 2,8 - dobimo navpično Črto. Premakni se do točke 7,8 - kar dobro nam gre od rok. Dvigni pero - del risanja je končan. Premakni se do točke 5,5. Spusti pero do papirja. 4 V resnici uporabljamo 0 za črnine (ni svetlobe) in 255 za beline (polna svetloba). Premakni se do točke 2,5 dobili smo F, ki mu bomo dodali še nogo in ga spremenili v E. Y 8 2 - 0 2 4 6 8 X Slika 3. Kako potujemo med risanjem črke E. Zelo podobno so lahko navodila zapisana v računalniku, le zapis je okrajšan, npr.: PU (pen up = dvigni pero), PA 0,0 (pen absolute to 0,0 = premik v točko 0,0), PA 2,2, PD (pen down = spusti pero ali pa pero dol), PA 2,8 in tako naprej do srečnega konca, ko spravimo pero spet domov. Poleg ravnih črt so pa tu tudi krive. Te narišemo tako, da jih nadomestimo z množico kratkih daljic. l\rog postane, recimo, 40-kotnik, Slika 4. Petkotnik, deset kotni k in dvajset kotnik, ki ga vidimo že kot krog. Opisani način poveljevanja je bil prilagojen risalniku (plotterju), inštrumentu, ki je po ukazih računalnika risal načrte pred dvajsetimi leti, torej pred rojstvom sodobnih tiskalnikov. Poleg dveh elektromotorčkov, ki sta vozila pero sem in tja pa papirju, je premogel ravno dovolj vgrajene računalniške pameti, da je razumel nekaj potrebnih ukazov. Risalniki so izumrli, zapis pa se uporablja še danes. Načinov slikovnega zapisa je še mnogo. Preveč, da bi jih spravili v Presek. Jože Pahor