IPLab, Nada, KTH 2001-01-10 1 Tentamen i Text- och bildbehandling (2D1378) onsdagen den 10 januari 2001, kl. 8 13 med lösningsidéer Hjälpmedel: räknedosa Fråga om något verkar oklart. Ange tydligt på omslaget vilken linje du tillhör. Vi behöver bl.a. kunna särskilja KTH och SU. Av 51 möjliga poäng ger 24 p säkert betyg 3, 33 p ger betyg 4, 38 ger betyg VG och 43 ger betyg 5. 1 (6) Förklara följande begrepp och termer (komplettera gärna med exempel). Du ska dels beskriva begreppet, dels avgränsa det från närliggande begrepp. (Varje felaktig eller utelämnad förklaring ger 1 p avdrag. Uppgiften ger dock minst 0 p.) a. akut accent b. bildpunkt c. cedilj d. decimaltabulator e. didoner f. hårstreck g. ligatur h. punktoperation i. tappar 2a (3) (Teckenkoder) Beskriv Unicode och dess relationer till ISO 646 och ISO 8859-1. Behandla bl.a. vad Unicode är, hur många bitar som används per tecken, om antalet bitar är lika för alla tecken, vad Unicode ska ersätta, hur Unicode används idag. 2b (2) Vad är UTF-8? 3 (4) (Strängmatchning) Visa Boyer Moores metod för strängmatchning på exemplet att söka efter mönstret BABABA i texter med alfabetet {A, B, C}. Visa tydligt de två hjälpvektorerna och vilka teckenvisa jämförelser som görs när man söker detta mönster i texten CABABACABABCBABABA. 4 (Typografiska tumregler) Ange viktiga tumregler för: 4a (2) val av radavstånd 4b (2) markering av nytt stycke 4c (3) markering av indelning i kapitel, avsnitt o.d. 5a (3) 5b (2) 6a (3) 6b (2) 7a (3) 7b (3) 8a (3) 8b (3) Vänd! (Granskning) Stavningskontroll utgår normalt från att undersöka om ett ord finns i en ordlista. För att bedöma kvalitén på stavningskontrollen i ett program måste man titta både på andelen»falsklarm» och andelen»missar». Vad innebär det, vilket samband har det med kvalitén och hur kan man påverka andelarna (som programmerare av en ny och bättre stavningskontroll)? Beskriv några andra datorstöd för språklig granskning (än stavningskontroll). (Märkspråk) Redogör för begreppen element, attribut och entitet i SGML/HTML/XML och komplettera med exempel. Vad är DTD och hur används DTD i samband med SGML/HTML/XML (Kodning) Förklara vad följande viktiga egenskaper hos komprimeringsmetoder innebär: förstörande/icke förstörande, adaptiv/icke adaptiv och endimensionell/tvådimensionell och klassificera några (minst 4) vanliga komprimeringsmetoder enligt dessa egenskaper. Det finns kodningsmetoder som inte komprimerar utan ökar antalet bitar, t.ex. Base64. Varför använder man sådana metoder? (Rastrering) Konstruera rastercellen för periodisk rastrering med m=1 och n=1. Anta att exponeringspunkttätheten är 600 per tum och ange rastrets rastervinkel, rastertäthet och antal gråtoner. Rita upp några intilliggande rasterceller så att man bl.a. ser att de kan täcka planet utan överlappning. När man väljer periodisk rastrering med rastervinkel 45 grader på en laserskrivare med 600 exponeringspunkter per tum får man normalt rastertätheten 53 per tum. Rita upp detta raster.
IPLab, Nada, KTH 2001-01-10 2 9a (3) (Bildoperationer) En geometrisk operation på en gammal bild f för att skapa en ny bild g kan beskrivas med formeln. g(x) = f * (T(x)) Förklara formelns delar och illustrera med att skala bilden nedan till vänster till 2/3 (från 3*3 bildpunkter till 2*2) med användning av bilinjär interpolation. Förklara noggrant de olika stegen. 10 20 30?? 40 50 60?? 70 80 90 9b (2) Nedanstående filter har applicerats på bild»gammal bild». Vilken av bilderna a d visar resultatet. 1 2 1 2 4 2 1 2 1 Filter Gammal bild Bild a Bild b Bild c Bild d 9c (2) Bildbehandlingsprogrammet har i 9b använt formeln gi (; j) = fi ( + k; j+ l) ϕ ( kl ; ). Förklara dess delar. b k; l b Lycka till!
IPLab, Nada, KTH 2001-01-10 3 1 a. akut accent Framåtlutande accent som i»idé». b. bildpunkt Minsta del av en lagrad digital bild. Den innehåller svärtnings- eller färginformation för en punkt i bilden och visas normalt på skärm o.d. som en liten kvadrat i motsvarande färg. c. cedilj Diakritiskt tecken oftast på»c» som i»ç». d. decimaltabulator Tabulatorposition med den egenskapen att data i motsvarande kolumn placeras med första decimalkommats vänstra kant i denna position (motsvarande för decimalpunkt vid engelsk inställning). När bråktecken saknas fungerar decimaltabulator som högertabulatorläge. e. didoner Teckensnittsfamilj uppkallad efter sina medlemmar Didot och Bodoni och karaktäriserad av liten x-höjd, mycket stor kontrast mellan grundstreck och hårstreck och mycket tunna seriffer. f. hårstreck Tunna streck i glyfen för en bokstav. g. ligatur Glyf som innehåller flera sammanskrivna tecken, t.ex.»fi», för att ge vackrare text och på blysättningens tid för att sättaren skulle behöva färre arbetsmoment. h. punktoperation Bildoperation där en bildpunkt i den nya bilden enbart beror av värdet i motsvarande punkt i den gamla bilden, t.ex. tonförändring. i. tappar Tappar är en av de två typerna av synceller i ögat. De svarar för färgseendet och är koncentrerade i gula fläcken kring ögats optiska axel. De är mindre ljuskänsliga än stavar som dock inte kan särskilja färger. 2a 2b Unicode är en sextonbitars teckenkod med en utvidgning för att representera vissa tecken med par av sextonbitarstecken, s.k. surrogatpar. Unicodes första 128 tecken är identiska med ISO 646 IRV dvs. ASCII och de 256 första är ISO 8859-1. Unicode är en lösning på problemet att hitta ett gemensamt system för jordens skriftspråk. Unicode har redan ganska stor spridning och används bl.a. i Java och i de vanliga webbläsarna. UTF-8 är en variabellängdskodning av Unicode (och ISO 10646). Tecknen 0 127, dvs. ISO 646 IRV eller ASCII kodas som en byte utan modifiering dvs. ASCII-text är korrekt UTF-8. Övriga tecken kodas som 2 eller tre bytes på ett sådant sätt att man lätt på en bytes inledande bitar kan se om den inleder en UTF-8-kod och hur många bytes som ingår. I tabellen anger första kolumnen ett intervall av tecken, den andra maximalt antal signifikanta bitar och den tredje hur tecken i intervallet kodas. v står för bitarna i tecknet. Det finns också en utvidgning för hantering av s.k. surrogatpar. intervall antal bitar kodning 0 7F 7 0vvvvvvv 80 7FF 11 110vvvvv 10vvvvvv 8000 FFFF 16 1110vvvv 10vvvvvv 10vvvvvv 3 Hjälpvektoterna blir: delta-1 A B * 0 1 6 delta-2 B A B A B A 7 6 7 6 7 1 Själva sökningen: CABABACABABCBABABA BABABA delta-1(c)=6, delta-2(1)=7 BABA BA delta-1(c)=6, delta-2(5)=7 BAB ABA delta-1(c)=6, delta-2(4)=6 BABABA match! 4a 4b Radavståndet bör vara ungefär 120 % av graden. Man bör dock kontrollera, med rader av»åpåp«, att raderna inte överlappar. När man har långa rader anses det lämpligt att ha något större radavstånd. Nytt stycke markeras normalt med ett förstaradsindrag som är något större än radavståndet. Då använder man inget extra avstånd över styckena. I vissa sammanhang markerar man nytt stycke med extra avstånd över stycket utan indrag. Första stycke efter rubrik ska inte ha indrag.
IPLab, Nada, KTH 2001-01-10 4 4c 5a 5b 6a 6b 7a Normalt indelar man ett dokument i kapitel och avsnitt. Dessa förses med rubriker som ska hjälpa läsaren förstå dokumentets struktur. Man börjar ofta nytt kapitel på ny sida (eller t.o.m. nästa högersida). Normalt bör man ha högst 3 rubriknivåer och då ge dessa tydligt olika typografi så att överordnade rubriker är större och fetare. Om man behöver mer än 3 nivåer använder man samma typografi och markerar strukturen med hierarkisk numrering av avsnitten. Det ska normalt vara större avstånd över en rubrik än under. (Rubriken ska stå nära den text den hör till.) Falsklarm Stavningskontrollen klagar på något som är korrekt. Det kan motverkas av att ordlistan utökas eller av regler för ordbildning (ordsammansättningar). Missar Stavningskontrollen klagar inte på något som är fel. Det kan bero på en felskrivning som lett till ett ord som finns i ordlistan eller på att man har använt ett korrekt ord på fel ställe eller på fel sätt. Detta kan delvis motverkas genom att ha måttligt stor ordlista eller en ordlista som innehåller de ord man brukar använda. Det underlättas om man har fackordlistor som man lätt kan aktivera vid behov. Missarnas andel kan också minskas om stavningskontrollen i någon mån förstår texten (åtminstone på en låg nivå) så att ett verb på en plats där det bör vara ett substantiv kan larmas. En kontroll som godkänner alla ord gör inga missar. Man vill samtidigt ha få falsklarm och få missar. Avstavningshjälp, skrivregelkontroll (som kan kontrollera att man skriver förkortningar och datum på ett konsekvent sätt), grammatikkontroll (som kan kontrollera kongruens, att artiklar och böjningar stämmer med huvudordet, syftningar, vanliga skrivfel m.m.), grammatikstyrd redigering (bl.a. för att enkelt kasta om»greta» och»hans» i»greta och Hans promenerade i skogen.»). Avsikten med märkspråken SGML/HTML/XML är att på ett standardiserat sätt ge dokument struktur som kan användas av program som ska bearbeta dokument. Ett dokument i SGML/HTML/XML är ett element. Element får innehålla text och andra element. Var element börjar och slutar anges (normalt) med märkord. Början av ett element av typ»font» märks med <font> och slutet märks med </font>. De tre språken hanterar tomma element på olika sätt. I XML får ett tomt element skrivas <font/>. Attribut är egenskaper hos elementen. Varje attribut har ett namn och en typ. Attributen kan ges värde i dokumentet (eller i DTDn), exempel <font color=blue>. I XML måste värdet omges med " ". Entiteter är referenser till information som finns på annan plats (i DTDn eller i annan fil). Entiteter liknar makron. Teckenentiteter används ofta för att komma runt att ett tecken kan ha olika kod i olika system. Man använder ett namn, entitetsreferens, t.ex. Ä som ersätts av koden för «Ä«i det aktuella systemet. Entiteter kan bl.a. användas för texter och referenser till bilddata. En DTD (Document Type Definition) är en beskrivning av en klass dokument med regler för hur de får vara uppbyggda och vad de får innehålla. HTML är en dokumentklass med fördefinierad DTD. För SGML och XML kan DTDn ingå i dokumentinstansen eller (vanligare) vara en separat fil. I SGML måste varje dokument ha en DTD medan ett XML-dokument kan sakna DTD. En DTD motsvarar på många sätt en definition av ett programspråk såsom Pascal. I DTDn beskrivs bl.a. dokumenttypens element, attribut och entiteter. För ett element anges vad elementet heter ovh vad det får innehålla (ungefär som i en syntaxbeskrivning för ett programspråk skriven i BNF). För de element som har attribut anges attributens namn, typ och förekomst (dvs. om attributet måste anges eller ej och ev. skönsvärde. För entiteterna anges namnet och ersättningstexten eller var denna finns. förstörande Data kan inte säkert återskapas exakt efter komprimeringen. icke förstörande Data kan säkert återskapas exakt efter komprimeringen. adaptiv Kodningen beror på information om data som insamlas under kodningen. När vissa meddelanden förkommer ofta är det rimligt att övergå till att använda ett kort kodord för detta meddelande.
IPLab, Nada, KTH 2001-01-10 5 7b 8a icke adaptiv Kodningen beror ej på data. Man gör nödvändiga gissningar om datas struktur innan komprimeringen börjar. endimensionell Data utgörs av en följd värden. tvådimensionell Data antas beskriva en tvådimensionell struktur, t.ex. en bild, och data för ett område kan antas ha samband med närliggande data i en tvådimensionell omgivning. Metod följdlängdskod LZW kvadrantträd JPEG förstörande nej nej nej ja adaptiv nej ja nej nej endimensionell ja ja nej nej Base64 används vid e-postöverföring när man befarar att inte alla delar av transportvägen klarar av att korrekt överföra åttabitarstecken (vissa gamla system kan förstöra den mest signifikanta biten). Man utökar också antalet bitar när man vill skapa felupptäckande eller felkorrigerande koder dvs. när man vill ha en chans att upptäcka om några bitar har förändrats under överföringen eller t.o.m. vill ha en chans att rätta vissa sådana felöverföringar. Rastervinkeln blir arctan(1/1)=45 grader, rastertätheten blir 600/sqrt(2) 425 rasterceller per tum och antalet gråtoner blir 1 mer än antalet exponeringspunkter i rastercellen dvs. 3. Nedan visas ett mönster av exponeringspunkter med»teoretiska» rasterceller och några verkliga rasterceller (gråa) som alla består av 2 exponeringspunkter. 8b Vid rastervinkeln 45 grader är m och n lika stora. Vi ska alltså lösa 600/(m sqrt(2))=53 som ger m=n 8,03 säg m=n=8. Nedan visas exponeringspunkter,»teoretiska» rasterceller, en rastercell (grå) och del av konturen till en intilliggande rastercell.
IPLab, Nada, KTH 2001-01-10 6 9a Den nya bilden, g, i punkten x ges av en approximation, f*, till den gamla bilden, f, i motsvarande punkt, T(x), där T är en koordinattransformation som motsvarar den önskade geometriska operationen, dvs. T(x) är den punkt i gamla bilden som transformeras till punkt x i den nya bilden. Vi låter bildernas nedre vänstra hörn vara origo. Då är T(x)=(x/(2/3);y/(2/3))=(1,5x;1,5y). Bilinjär interpolation innebär att vi inom varje bildpunkt låter gamla bilden approximeras med ax+by+cxy+d där koefficienterna bestäms av värdena i bildpunktens hörn. Bildpunkterna i den nya bilden (0;0), (1;0), (0;1) och (1;1) motsvaras av punkterna (0;0), (1,5;0), (0;1,5) resp. (1,5;1,5) i den gamla bilden. f*(0;0)=f(0;0)=70. Övriga tre punkter hamnar inte på bildpunkternas hörn så för dessa måste vi lösa ekvationssystem. För bildpunkten med nedre vänstra hörnet i (1;0) får vi systemet: a 1+b 0+c 1 0+d=80 a 2+b 0+c 2 0+d=90 a 1+b 1+c 1 1+d=50 a 2+b 1+c 2 1+d=60 med lösningen a=10, b= 30, c=0 och d=70 dvs. f*=10x 30y+70 som ger f*(1,5;0)=85. För bildpunkten med nedre vänstra hörnet i (0;1) får vi systemet: a 0+b 1+c 0 1+d=40 a 1+b 1+c 1 1+d=50 a 0+b 2+c 0 2+d=10 a 1+b 2+c 1 2+d=20 med lösningen a=10, b= 30, c=0 och d=70 dvs. f*=10x 30y+70 som ger f*(0;1,5)= 45. För bildpunkten med nedre vänstra hörnet i (1;1) får vi systemet: a 1+b 1+c 1 1+d=50 a 2+b 1+c 2 1+d=60 a 1+b 2+c 1 2+d=20 a 2+b 2+c 2 2+d=30 med lösningen a=10, b= 30, c=0 och d=70 dvs. f*=10x 30y+70 som ger f*(1,5;1,5)=40. Här råkar den bilinjära approximationen av den gamla bilden bli samma funktion i alla berörda bildpunkter. Den nya bilden blir: 45 40 70 85 9b 9c Resultatet blir bild b. Filtret upptäcker vertikala konturer. g(i;j) är den nya bildens värde i punkten (i;j). f(i+k;j+l) är den gamla bildens värde i punkten (i+k;j+l). ϕ(k;l) är filtrets värde i punkten ϕ(k;l) där filtrets storlek beskrivs av b, dvs. filtret har 2b+1 rader och kolumner. Varje bildpunkt i den nya bilden är således det, med koefficienterna i ϕ, viktade medelvärdet av bildvärdena i en omgivning av motsvarande punkt i den gamla bilden där omgivningen har en radie av ungefär b.