BABE S¸ -B OLYAI T UDOMÁNYEGYETEM KOLOZSVÁR M ATEMATIKA ÉS I NFORMATIKA K AR
´ Szakkollegiumi dolgozat
´ ıtog ´ epes ´ ´ ´ Szam´ ´ırasfelismer es
T ÉMAVEZET O˝ :
˝ : S ZERZ OK
D R . C SATÓ L EHEL BABE S¸ –B OLYAI T UDOMÁNYEGYETEM , M ATEMATIKA ÉS I NFORMATIKA K AR
G OBESZ TAMÁS KOVÁCS Á RON S ZENKOVITS A NNAMÁRIA
2009 D ECEMBER
Tartalomjegyzék 1. Bevezeto˝ 1.1. Optikai karakterfelismerés . . . . . . . . . . . . . . 1.2. Palimpszeszt . . . . . . . . . . . . . . . . . . . . . . 1.3. Palimpszesztek feldolgozásával kapcsolatos projektek 1.3.1. Hypereidoc . . . . . . . . . . . . . . . . . . 1.3.2. The Palimpsest Project . . . . . . . . . . . . 2. C´elok e´ s a tervezett munkamenet 2.1. Célkit˝uzések . . . . . . . . . . . . . . . . . . . 2.2. Munkaterv . . . . . . . . . . . . . . . . . . . . 3. Eddigi eredm´enyeink 3.1. Képfeldolgozás - Matematikai és elméleti háttér 3.1.1. Konvolúció . . . . . . . . . . . . . . . 3.1.2. Fourier-transzformáció . . . . . . . . . 3.1.3. Helyzetfügg˝o fényesség-ellensúlyozás . 3.1.4. Szürkeárnyalat-transzformációk . . . . 3.1.5. Geometriai transzformációk . . . . . . 3.2. Technikai megvalósítás . . . . . . . . . . . . . 3.2.1. Matlabban tárolható képtípusok . . . . 3.2.2. Képelemzés, filterek . . . . . . . . . . ´ A. Fontosabb programkodok list´aja
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
3 3 3 4 4 4 5 5 5 7 7 7 8 8 8 9 9 9 10 17
2
1. fejezet
Bevezeto˝
1.1. Optikai karakterfelismerés Az optikai karakterfelismerés (angolul: Optical Character Recognition - OCR) célja a gépelt, nyomtatott, vagy kézzel írt szöveg számítógép által értelmezhet˝o és módosítható szöveges állománnyá való alakítása. A feladat a mesterséges intelligencia ([Alpaydin, 2004]), mintafelismerés ([Bishop, 2006], [Fukunaga, 1990]), illetve számítógépes látás ([Sonka et al., 2008]) kutatási körébe tartozik. Sok területen vannak hasznos alkalmazásai. A nyomtatott, latin abc-s szövegek felismerését 99%-ban megoldottnak tekinthetjük, viszont a kézírás felismerése jóval nehezebb feladat, és mai napig is az aktív kutatás részét képezi. Alapvet˝oen két formája van: az on-line, illetve az off-line kézírásfelismerés. Az el˝obbi az írás közben történ˝o kézmozgásra alapoz (ezt a technológiát alkalmazzák az okos táblák esetében is), így nem alkalmazhatóak scannelt anyagok esetében. Az off-line felismerés ezzel szemben statikus formák feldolgozására alkalmas. 80-90%-os pontossága miatt korlátozott alkalmazásai vannak. Ennél magasabb arány elérésére akkor vagyunk képesek, ha felhasználjuk a kontextuális és nyelvtani többletinformációt.
1.2. Palimpszeszt A palimpszeszt szó a latin ’palin’ (újra), illetve ’psao’ (vakarok) szavakból származik. A középkori szerzetesek, nyersanyag hiányában, a "régebbi", azaz ókori pergameneket hasznosították újra, mégpedig úgy, hogy a régi írást levakarták, kimosták, az új szöveget pedig ráírták a régire mer˝olegesen. Nagyon sok értékes ókori írás csak ilyen formában, azaz részeiben levakarva és fölülírva maradt fenn, így ezek megfejtése, feldolgozása igen fontos lehet. Rossz állapotuk miatt, illetve az ókori görög és latin nyelvezet miatt a feldolgozási folyamatnak számos akadálya van. A számítógépes karakterfelismerés segítséget nyújthat a bölcsészeknek a két írásréteg elkülönítésében, a lehetséges karakterek beazonosításában, illetve egy megfejtési javaslat kínálásában. Az ilyen fajta feldolgozás el˝onyei közé tartozik, hogy, lévén hogy csak képekkel dolgozik, nem roncsolja a törékeny kéziratot. Az egyik leghíresebb palimpszeszt az Archimédesz-féle, mely az ókori tudós írásait tartalmazza. Ezt a tizedik században másolták az eredetir˝ol, és a tizenharmadik században újrahasznosították: levakarták, 90◦ -kal elfordították és liturgikus szövegeket írtak rá. A palimpszeszt Archimédesz írásai mellett az ókori görög szónok, Hypereides munkáját is, illetve Alexandros Aphrodisiensis kommentárjait is tartalmazza. 1. Kis történelem (http://archimedespalimpsest.org/history1.html)
3
1
1. FEJEZET: B EVEZET O˝
1.1. ábra. Palimszesztlap rekonstrukciója és digitalizálása
1.3. Palimpszesztek feldolgozásával kapcsolatos projektek 1.3.1. Hypereidoc Dr. Horváth Zoltán vezetésével az ELTE Informatikai Karának egy csapata 2008-ra fejlesztette ki a Hypereidoc szövegszerkeszt˝ot 2 , mely a már megfejtett szövegek publikálását teszi lehet˝ové, a különböz˝o konvencióknak, illetve jelöléseknek megfelel˝oen. Munkánk során ezt a szerkeszt˝ot szeretnénk kiegészíteni.
1.3.2. The Palimpsest Project A Palimpsest Project
3
keretében egy kutatócsoport az Archimédesz-palimpszeszt rekonstrukcióját, il-
letve oldalakra bontását végezték el. A csoport ezenkívül különféle optikai módszerek segítségével (LED, röntgen, ultraibolya, Multi-Spectral Imaging) a két írásréteg elkülönítésén is kísérletezett (1.1 ábra). Az így kapott eredményeket digitalizálták, olyan nagy felbontású, jó min˝oség˝u képeket nyerve, melyeken a két írásréteget két különböz˝o színnel jelöltek meg. A képek mindenki számára elérhet˝oek, ezeket használjuk mi is munkánk során. A projekt keretében OCR-es feldolgozással is próbálkoztak 4 . 2004-ben a Rochester Institute of Technology képviseletében Derek J. Walvoord kezdett neki egy, intelligens algoritmusokat alkalmazó rendszer fejlesztésének. A rendszer konkrét megvalósításáról a Palimpsest Project honlapja nem tartalmaz információkat.
2. Hypereidoc szövegszerkeszt˝o (http://hypereidoc.elte.hu/?i=index/index) 3. A Palimpsest Project (http://archimedespalimpsest.org) 4. OCR-es feldolgozással kapcsolatos próbálkozások (http://www.archimedespalimpsest.org/pdf/archimedes_c.pdf)
4
2. fejezet
´ ´ a tervezett munkamenet Celok es
2.1. Célkituzések ˝ Célunk egy olyan alkalmazás kifejlesztése, mely számítógépes írásfelismerést alkalmazva, segít az Archimédesz-palimpszeszt feldolgozásában. F˝obb feladatok: 1. Grafikus felhasználói felület (2.1 ábra); Tetsz˝oleges kép betöltése (.gif, .jpg, .tif stb.); Tetsz˝oleges képrészlet kiválasztása, ennek külön ablakban való megjelenítése. 2. Megfelel˝o sz˝ur˝ok implementálása, kiválasztása és alkalmazása; 3. A potenciális karakter helyének megjelölése; 4. Javaslat fogalmazása a talált elemre; A rendelkezésre álló bet˝ukészlet karakterei közül a legmegfelel˝obb kiválasztása; A javasolt karakter külön ablakban való megjelenítése.
2.2. Munkaterv 1. Ismerkedés a számítógépes képfelismerési algoritmusokkal. Ebben a fázisban igyekszünk kisz˝urni a nyers képb˝ol a zavaró elemeket és a zajt, hogy a kés˝obbi mintaillesztés könnyebb legyen. Ezt a kés˝obbiekben bemutatott algoritmusok segítségével próbáljuk megvalósítani, annak érdekében, hogy a kimeneti képen található fontos karakterek a lehet˝o legolvashatóbbak legyenek, optimális kontraszttal, élességgel, illetve színskálával rendelkezzenek. 2. Modellek alkotása, melyekkel ki lehet nyerni a képegyüttesekb˝ol a komponenseket. Az el˝ofeldolgozáson átesett képeken ezután el kell különíteni, különböz˝o színekkel jelölni a sokszor egymást átfed˝o komponenseket (a palimpszesztek esetében az ókori, illetve középkori liturgikus szövegek), úgy, hogy ezeket egyértelm˝uen fel lehessen ismerni és különböz˝o állományokba menteni. 5
2. FEJEZET: C ÉLOK ÉS A TERVEZETT MUNKAMENET
2.1. ábra. A tervezett felhasználói felület kinézete 3. Mintafelismer˝o algoritmusok implementálása. Bonyolult statisztikai módszereket, illetve különböz˝o mintafelismerési algoritmusokat alkalmazva, egy javaslatot fogalmazunk meg az adott karakterre, félig-felügyelt tanulási módszereket használva. Emberi felügyelet mellett megtaníthatunk a rendszernek pár jellemz˝o bet˝utípust, kézvonást, amelyeket könnyen átlagolhat, hogy az elkövetkez˝o próbákon optimálisabb döntést tudjon hozni. 4. Javasolt modellek tesztelése. Tekintettel arra, hogy félig-felügyelt tanulási módszerekr˝ol beszélünk, a tanulási folyamat teljes ideje alatt szükség lesz egy átható, folyamatos tesztelésre, annak érdekében, hogy a rendszer ne tanuljon meg helytelen adatokat. Minden egyes javaslatot jóvá kell hagyjon a tanító, rossz javaslat esetében ezt ki kell javítani, egy új javaslatot fogalmazva.
6
3. fejezet
´ Eddigi eredmenyeink
3.1. Képfeldolgozás - Matematikai és elméleti háttér A képfeldolgozás els˝o fázisa az el˝ofeldolgozás, mely során a komponensek felismerését zavaró zajt sz˝urjük ki a képb˝ol. Az erre alkalmas sz˝ur˝ok matematikai hátterét, implementációit tanulmányoztuk, illetve alkalmaztuk palimpszesztrészletekre. Ezt követ˝oen különböz˝o szegmentálási technikákat, illetve morfológiai m˝uveleteket tanulmányoztunk, melyek a komponensek körülhatárolásában játszanak fontos szerepet. Kutatási munkánk menetét els˝osorban [Sonka et al., 2008] könyvére alapozzuk. Az olvasott információk kiegészítése, illetve megértése érdekében, természetesen más forrásokhoz is folyamodtunk.
3.1.1. Konvolúció A lineáris módszereket, illetve vektortereket el˝oszeretettel használják a képfeldolgozásban, a képi függvények definiálásában. A konvolúciónak, mint matematikai függvénynek leginkább a jelfeldolgozásban vannak alkalmazásai. A konvolúció rendkívül fontos m˝uvelet a lineáris képfeldolgozásban. Alapvet˝oen két függvényre alkalmazható (f, h), egy harmadikat hozva létre, mely az egyik el˝oz˝o függvény módosítottja. A (3.1) képlettel fejezhet˝o ki, amely az f (t) függvény átfedésének mértékét fejezi ki, ahogyan ezt egy h(t) függvény fölött eltoljuk. Az egydimenziós konvolúció képlete: Z
∞
(f ∗ h)(t) =
f (t)h(t − τ ) dτ.
(3.1)
−∞
A digitális képelemzésben a diszkrét konvolúció használatos, így az integrál helyett összegeket alkalmazunk, mivel a képnek korlátozott az értelmezési tartománya. A konvolúció ebben az esetben egy lineáris sz˝ur˝ofolyamatot (filtert) jelent, ahol h a sz˝ur˝o. A kimeneti képen egy adott g(i, j) pixel esetében az adott bemeneti kép f (i, j) pixel közvetlen szomszédságában lév˝o pixelek intenzitásának valamilyen lineáris kombinációját fejezi ki. A különböz˝o pixelek intenzitásának hozzájárulását a h tényez˝o (konvolúciós maszk) súlyozza: f (i, j) =
X
h(i − m, j − n)g(m, n), ahol O a szomszédos tartomány.
(m,n)∈O
7
(3.2)
3. FEJEZET: E DDIGI EREDMÉNYEINK Általában négyzetes szomszédságot határozunk meg, páratlan számú sorral és oszloppal, így egyértelm˝uen meghatározható a középen található pixel, amelyre alkalmazzuk a konvolúciót.
3.1.2. Fourier-transzformáció A Fourier-elmélet azon az ötleten alapszik, hogy bármely függvény felépíthet˝o különböz˝o frekvenciák szinusz- és koszinuszából. A képfeldolgozásban egy képre alkalmazva a Fourier-transzformációt, át lehet alakítani a kép tértartományát egy frekvenciatartományra, így különböz˝o m˝uveletek (pl. zajsz˝urés) leegyszer˝usíthet˝oek. A frekvencia kifejezés jelen esetben a képek fényességbeli vagy színbeli változására utal. Matematikában az egyváltozós Fourier-transzformáció egy f (t) id˝ot˝ol függ˝o függvényt alakít egy frekvencia tartománybeli ábrázolásra. Z
∞
F{f (t)} = F (ξ) =
f (t)e−2πiξt dt,
ahol i az imaginárius egység, ξ frekvencia (Hz = s− 1).
−∞
(3.3) Az inverz Fourier transzformáció: F
−1
Z
∞
{f (t)} = f (t) =
f (t)e−2πiξt dt.
(3.4)
−∞
3.1.3. Helyzetfügg˝o fényesség-ellensúlyozás A kép fényessége sok tényez˝ot˝ol függhet, kezdve az optikai képrögzít˝o eszközök min˝oségét˝ol, azok beállításain keresztül az adott körülményekig, illetve fényviszonyokig. Ez az információvesztés szerencsére kijavítható valamilyen mértékben bizonyos technikákkal. Legyen e(i, j) együttható, amely leírja az ideális képt˝ol való eltérést egy adott pontban, g(i, j) az eredeti, ideális kép, és f (i, j) a min˝oségében romlott kép. Ekkor f (i, j) = e(i, j)g(i, j).
(3.5)
ahonnan visszanyerhet˝o az eredeti kép.
3.1.4. Szürkeárnyalat-transzformációk A szürkeárnyalat-transzformáció nem függ az adott pixel helyzetét˝ol. Egy T transzformációt, mely az eredeti kép p fényességét a [p0 , pk ] skálából átviszi egy új, [q0 , qk ] skálába, a következ˝o képpen definiálhatunk: q = T (p).
(3.6)
Ezáltal egy fényességküszöböt definiálhatunk, mely a képet fekete-fehérré alakítja. Továbbá meger˝osíthet˝o a p1 és p2 fényesség értékek közti kontraszt, illetve a kép negatívját is visszakaphatjuk. A hisztogramkiegyenlítés segítségével egyenletes eloszlású fényességszinteket érhetünk el a teljes fényességskálán,
8
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.1. ábra. Geometriai transzformáció így a képen található komponensek jobban elkülöníthet˝oek.
3.1.5. Geometriai transzformációk A geometriai transzformációk segítségével kiküszöbölhet˝oek a különböz˝o geometriai torzítások a képb˝ol, ez f˝oleg a mintaillesztéshez szükséges. Egy írott, szkennelt dokumentumra forgatásokat, nagyításokat, torzításkorrekciókat alkalmazunk, (melyeket matematikai képletekkel írhatunk le), hogy a sorok, illetve karakterek irányítását egyértelm˝uen felismerhesse a számítógép. Ez a folyamat emberek számára rendkívül egyszer˝uen kivitelezhet˝o, azonban egy nagyon kicsi hiba, változás kritikusan megváltoztathatja a számítógép hatékonyságát. (3.1 ábra) x0 = Tx (x, y),
y 0 = Ty (x, y).
(3.7)
3.2. Technikai megvalósítás Eddigi munkánk során a Matlab programozási nyelvet, illetve fejleszt˝oi környezetet használtuk, mivel számtalan hasznos beépített függvénye van, beleértve a képfeldolgozásban használatosakat is, melyek a Matlab Image Processing Toolbox 1 csomagjában vannak implementálva.
3.2.1. Matlabban tárolható képtípusok A Matlab alapvet˝o adatstruktúrája a tömb, adatok rendezett halmaza. Ez a struktúra, pontosabban a kétdimenziós tömb, használható természetes képek ábrázolására, hiszen a tömb minden elemének megfeleltethet˝o egy pixel. Ebben a kontextusban négyféle képtípusról beszélhetünk. Bináris képek Logikai tömb, mindegyik pixel csak az 1 vagy a 0 értéket veheti fel, ami megfelel˝oen fehér-feketeként lesz értelmezve. (3.2 ábra) 1. Matlab Image Processing Toolbox (http://www.mathworks.com/products/image/)
9
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.2. ábra. Bináris képek tárolása Matlabban Indexelt képek Egy tömbb˝ol és egy színeket feltérképez˝o n ∗ 3-as mátrixból (colormap) áll. A pixelekhez a tömbben direkt indexek vannak rendelve, megfeleltetve o˝ ket egy-egy sornak a színmátrixban. A színmátrix minden sora tartalmazza az illet˝o szín piros, kék és zöld komponenseinek értékét. (3.3 ábra) Szürkeárnyalatú képek Egyetlen mátrixb˝ol áll, minden pixelnek megfeleltetve egy intenzitást a 0 − 255, vagyis a fekete-fehér skálán. (3.4 ábra) Színes képek Egy n∗m∗3-as mátrixot használ, tárolva minden egyes pixel piros, kék és zöld komponenseinek értékét. (3.5 ábra)
3.2.2. Képelemzés, filterek A filterek különleges mátrixok, amiket az eredeti képre alkalmazva, megváltoztathatók a pixelek értékei, módosíthatók a kép tulajdonságai. Az el˝ofeldolgozás f˝o lépései közé tartozik a megfelel˝o filterek alkalmazása, a lényeges információ kinyerése érdekében. Simítások (Smoothing/Blurring) Simítások során a kép magas frekvenciájú részei kisz˝urhet˝ok, a létez˝o zaj csökkentése érdekében. Matlabban az fspecial függvénnyel adhatók meg különböz˝o filterek, köztük a simítás. (3.6 ábra) (A.1 kódrészlet)
10
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.3. ábra. Indexelt képek tárolása Matlabban Fekete-fehér képpé alakítás Az im2bw függvény segítségével egy bemeneti színes kép fekete-fehér bináris képpé alakítható. A kimeneti képben minden pixel, amelynek a fényessége meghalad egy bizonyos megadott küszöböt 1-el (fehérrel) helyettesít, míg a többit 0-val (feketével). (3.7 ábra) (A.2 kódrészlet) Kis, nem releváns komponensek kiszurése ˝ Bináris képek esetén kisebb, relevancia nélküli komponensek kisz˝urhet˝ok a bwareopen függvényen keresztül. A függvény kisz˝uri az összes olyan összefügg˝o komponenst, amely kevesebb mint megadott p mennyiség˝u pixelt tartalmaznak. Maga az összefüggés mértéke is megadható, alapvet˝oen kétdimenziós térben ennek értéke 8, megvizsgálva egy pixelnek mind a nyolc szomszédját. (3.8 ábra) (A.3 kódrészlet) Szélkeresés (Edge-detection) Egy képen a szélek olyan görbületek, ahol hirtelen változik a kép intenzitása. Általában tárgyak határaival társulnak. A Matlabban az edge függvény segítségével kaphatjuk meg a széleket. Az edge függvény megkeresi az intenzítás változásokat, és egy bináris képet térit vissza, fehérrel jelölve a széleket. (3.9 ábra) (A.4 kódrészlet) Határok megállapítása Ugyancsak az élkereséshez hasonló a képen található tárgyak határainak megállapítása. Így nemcsak a tárgy élei sz˝urhet˝ok ki, hanem az egész tárgy, viszont a Matlabban található határkeres˝o függvények (bwtraceboundary és bwboundries) csak bináris képekre alkalmazhatók. (3.10 ábra) (A.5 kódrészlet)
11
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.4. ábra. Szürkeárnyalatú képek tárolása Matlabban Vonalkeresés (Line detection) A vonalak keresése egy különleges szélkeres˝o filterként tekinthet˝o. Az összes szél keresése helyett korlátozható a keresés iránya, így kisz˝urhet˝ok csak az egymással párhuzamos vonalak. (3.11 ábra) (A.6 kódrészlet) Élesítés (Sharpening) Az élesítés hasonló a szélek kereséséhez, a színek változásait meger˝osítve a szélek jobban kivehet˝ok. Az élesítés is az fspecial függvényen keresztül adható meg, érdekes módon az ’unsharp’ név alatt található. A m˝uködése abból áll, hogy el˝oször kisimítja a képet, majd egy szélkeresést végez, ezt a két képet egymásra téve nyeri ki a végs˝o eredményt. (3.12 ábra) (A.7 kódrészlet)
12
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.5. ábra. Színes képek tárolása Matlabban
3.6. ábra. Példa simítás alkalmazására
13
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.7. ábra. Palimpszesztrészletet tartalmazó színes képrészlet bináris képpé való alakítása
3.8. ábra. Kis komponensek kisz˝urése
3.9. ábra. Szélkeresés Matlabban
14
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.10. ábra. Határok megállapítása Matlabban
3.11. ábra. Vonalkeresés Matlabban
15
3. FEJEZET: E DDIGI EREDMÉNYEINK
3.12. ábra. Élesítés Matlabban
16
´ A. fuggel ¨ ek
´ ´ Fontosabb programkodok listaja
Listing A.1. Adott kép simítása 1
6
function blur im = imread(’cameraman.JPG’); gaussianFilter = fspecial(’gaussian’, [7, 7], 5) gaussianImage = imfilter(im, gaussianFilter, ’symmetric’, ’conv’); subplot(1,2,1), image(im), title(’Original’); subplot(1,2,2), image(gaussianImage), title(’Blurred, blur matrix size 7’); end
Listing A.2. Adott kép fekete-fehérré alakítása 3
function image2bw inputImage = imread(’kicsiPalimszeszt2.JPG’); kuszob = 160; bwImage = im2bw(inputImage, kuszob/255); subplot(1,2,1), imshow(inputImage), title(’Original’); subplot(1,2,2), imshow(bwImage), title(’Black and White Image’); end
Listing A.3. Kis, nem releváns komponensek kisz˝urése 3
8
function bwareaopenPal inputImage = imread(’bwPalimpszeszt.jpg’); kuszob = 160; bwImage = im2bw(inputImage, kuszob/255); bwarea = bwareaopen(bwImage, 100); subplot(1,2,1), imshow(inputImage), title(’Original’); subplot(1,2,2), imshow(bwarea), title(’Without small components’); end
Listing A.4. Szélkeresés 2
7
function edgedetection inputImage = imread(’bwareaopenPalimpszeszt.jpg’); bwImage = im2bw(inputImage); subplot(1,2,1), imshow(bwImage); title(’Input Image’); edges(:,:,1) = edge(bwImage, ’sobel’); subplot(1,2,2), imshow(edges), title(’Edges’); end
Listing A.5. Határok megállapítása 3
8
13
function boundary I = imread(’kicsiPalimszeszt.JPG’); BW = im2bw(I); imshow(BW) dim = size(BW) col = round(dim(2)/2); row = min(find(BW(:,col))) boundary = bwtraceboundary(BW,[row, col],’N’); imshow(I) hold on; plot(boundary(:,2),boundary(:,1),’g’,’LineWidth’,3); BW_filled = imfill(BW,’holes’); boundaries = bwboundaries(BW_filled); for k=1:10
17
A. FÜGGELÉK : F ONTOSABB PROGRAMKÓDOK LISTÁJA
b = boundaries{k}; plot(b(:,2),b(:,1),’g’,’LineWidth’,3); end 18
end
Listing A.6. Vonalkeresés 2
7
12
function linedetection horizontalKernel = [−1,−1,−1;2,2,2;−1,−1,−1]; verticalKernel = [−1,2,−1;−1,2,−1;−1,2,−1]; diagUpKernel = [−1,−1,2;−1,2,−1;2,−1,−1]; diagDownKernel = [2,−1,−1;−1,2,−1;−1,−1,2]; building=imread(’skyscraper.jpg’); figure; horizontalBuilding = imfilter(building, horizontalKernel); subplot(2,2,1), image(horizontalBuilding), title(’Horizontal lines’); verticalBuilding = imfilter(building, verticalKernel); subplot(2,2,2), image(verticalBuilding), title(’Vertical lines’); diagDownBuilding = imfilter(building, diagDownKernel); subplot(2,2,3), image(diagDownBuilding), title(’Diagonals down slope’); diagUpBuilding = imfilter(building, diagUpKernel); subplot(2,2,4), image(diagUpBuilding), title(’Diagonals up slope’); end
Listing A.7. Élesítés
4
9
function sharpening inputImage = imread(’kicsiPalimszeszt2.JPG’); sharpFilter = fspecial(’unsharp’); subplot(1,3,1), image(inputImage), title(’Original’); sharp = imfilter(inputImage, sharpFilter, ’replicate’); subplot(1,3,2), image(sharp), title(’Sharpened’); sharpMore = imfilter(sharp, sharpFilter, ’replicate’); subplot(1,3,3), image(sharpMore), title(’Excessive sharpening attenuates noise’); end
18
Irodalomjegyzék E. Alpaydin. Introduction to Machine Learning. The MIT Press, 2004. C. Bishop. Pattern Recognition and Machine Learning. Springer, 2006. K. Fukunaga. Introduction to Statistical Pattern Recognition. Academic Press, 1990. M. Sonka, V. Hlavac, and R. Boyle. Image Processing, Analysis and Machine Vision. CL-Engineering, 2008.
19