Univerza v Ljubljani Fakulteta za računalništvo in informatiko Anže Sodja Segmentacija prostorskih medicinskih podatkov na GPE DIPLOMSKO DELO UNIVERZI

Velikost: px
Začni prikazovanje s strani:

Download "Univerza v Ljubljani Fakulteta za računalništvo in informatiko Anže Sodja Segmentacija prostorskih medicinskih podatkov na GPE DIPLOMSKO DELO UNIVERZI"

Transkripcija

1 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Anže Sodja Segmentacija prostorskih medicinskih podatkov na GPE DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN MATEMATIKA Mentor: doc. dr. Matija Marolt Ljubljana 2013

2

3 Rezultati diplomskega dela so intelektualna lastnina avtorja in Fakultete za računalništvo in informatiko Univerze v Ljubljani. Za objavljanje ali izkoriščanje rezultatov diplomskega dela je potrebno pisno soglasje avtorja, Fakultete za računalništvo in informatiko ter mentorja. Besedilo je oblikovano z urejevalnikom besedil L A TEX.

4

5

6

7 Izjava o avtorstvu diplomskega dela Spodaj podpisani Anže Sodja, z vpisno številko , sem avtor diplomskega dela z naslovom: Segmentacija prostorskih medicinskih podatkov na GPE S svojim podpisom zagotavljam, da: sem diplomsko delo izdelal samostojno pod mentorstvom doc. dr. Matija Marolta so elektronska oblika diplomskega dela, naslov (slov., angl.), povzetek (slov., angl.) ter ključne besede (slov., angl.) identični s tiskano obliko diplomskega dela soglašam z javno objavo elektronske oblike diplomskega dela v zbirki Dela FRI. V Ljubljani, dne 19. september 2013 Podpis avtorja:

8

9 Zahvaljujem se mentorju doc. dr. Matiju Maroltu za nasvete in pomoč pri izdelavi diplomske naloge. Prav tako se zahvaljujem as. mag. Cirilu Bohaku za pomoč pri implementaciji in za nasvete pri izdelavi diplomske naloge na splošno. Posebna zahvala gre sestri Špeli za večkraten pregled dela. In jasno vsej družini za spodbudo in podporo skozi vsa leta študija.

10

11 Kazalo Povzetek Abstract 1 Uvod 1 2 Algoritmi za segmentacijo Otsujeva metoda za iskanje praga Glajenje z Gaussovo funkcijo Algoritem Marching cubes Iskanje povezanih komponent 3D modela Implementacija algoritmov na GPE OpenCL Deljenje problemov Prevajanje algoritmov Učinkovitost implementacije na GPE Težave pri implementaciji Implementacija segmentacije v programu Neck Veins Program Neck Veins Urejanje programske kode Prevajanje uporabniškega vmesnika Dodajanje segmentacije v program

12 KAZALO 5 Zaključek 39

13 Povzetek Cilj diplomske naloge je učinkovita implementacija segmentacije medicinskih 3D volumnov, pridobljenih s 3D digitalno subtrakcijsko angiografijo. Za namene segmentacije so implementirani algoritmi za čiščenje podatkov in kreiranje 3D modela. Za hitrejše delovanje so algoritmi implementirani s knjižnico OpenCL za izvajanje na grafično procesni enoti. Segmentacija je vključena v že izdelan program za prikazovanje 3D modelov Neck Veins. V diplomskem delu so najprej opisani vsi implementirani algoritmi, nato sledi opis knjižnice za splošno procesiranje OpenCL in posebnosti implementacije algoritmov na grafično procesni enoti. Na koncu je predstavljena razširitev programa Neck Veins. Za prikaz učinkovitosti implementacije je dodana še primerjava hitrosti izvajanja algoritmov na centralno procesni enoti v programskem jeziku Java in na grafično procesni enoti s knjižnico OpenCL. Ključne besede: segmentacija, GPE, algoritmi, OpenCL, 3D volumni, Marching cubes

14

15 Abstract The main goal of the thesis is an efficient implementation of segmentation of medical 3D volumes obtained by means of 3D digital subtraction angiography. For the purposes of segmentation different algorithms are implemented algorithms for data purification and algorithms for creating 3D models. To achieve better performance algorithms are implemented on a graphic process unit with OpenCL API. Complete segmentation process is integrated into a program designed for visualization of 3D models called Neck Veins. The thesis first describes all implemented algorithms, followed by a description of the library for general processing OpenCL. Finally, it describes an extension of the program Neck Veins. A comparison of the performance of certain algorithms on a central processing unit in the Java programming language, and the implementation on the graphics processing unit on the OpenCL API is made to show the effectiveness of the implementation. Keywords: segmentation, GPU, algorithms, OpenCL, 3D volumes, Marching cubes

16

17 Poglavje 1 Uvod Sodobna računalniška tehnologija je prisotna v vse več panogah: v gospodarstvu, zdravstvu, v finančnih institucijah in izobraževanju. Računalniški sistemi shranjujejo ogromno količino podatkov. Te podatke obdelajo, rezultate pa predstavijo uporabnikom. Za lažjo predstavitev podatkov se uporabljajo najrazličnejše vizualizacije - od prikaza povezav med ljudmi s pomočjo grafov, finančne uspešnosti s funkcijskimi grafi do predstavitve 3D volumnov s 3D grafiko. Odkritje rentgenskih žarkov in rentgenskih slik leta 1895 [1], je v zdravstvu pomenilo velik napredek in pomoč pri odkrivanju obolenj pri človeku. Zdravnikom nudi vpogled v notranjost človeka in jim pomaga pri lažjem diagnosticiranju in zdravljenju bolezni. Najbolj razširjene so 2D rentgenske slike, ki prikažejo prerez določenega volumna. Danes se vedno bolj uveljavljajo 3D rentgentske slike [2]. S tem se odpira možnost 3D prikaza organov, žil, kosti ali drugih delov telesa, s tem pa natančnejše metode zdravljenja. V diplomski nalogi sem se ukvarjal z obdelavo 3D volumnov žil, pridobljenih s 3D digitalno subtrakcijsko angiografijo (angl. digital subtraction angiography, v nadaljevanju DSA). Glavni cilj naloge je bila razširitev programa Neck Veins z učinkovito implementacijo algoritmov za segmentacijo 1

18 2 POGLAVJE 1. UVOD 3D volumnov, ki bi omogočala skoraj takojšen prikaz zajetih 3D objektov z namenom zmanjšanja časovne premostitve med zajemom podatkov in njihovo predstavitvijo. Pri tem sem spoznal algoritme, ki se pogosto uporabljajo pri obdelavi podatkov. Algoritme sem implementiral na grafično procesni enoti (v nadaljevanju GPE) z uporabo knjižnice za splošno namensko procesiranje. Spoznavanje algoritmov in učenje novih tehnologij ter možnost implementacije postopka, ki bi v prihodnosti lahko poenostavil delo medicinskega osebja ob zajemu rentgenskih podatkov, je bila glavna motivacija pri izbiri teme za diplomsko delo. Diplomsko delo je sestavljeno iz treh delov. V prvem delu so opisani algoritmi, ki so bili uporabljeni v implementaciji za segmentacijo zajetih 3D volumnov. V drugem delu je predstavljena knjižnica za splošno namensko procesiranje in posebnosti implementacij algoritmov na GPE. V zadnjem delu je prikazana implementacija segmentacije v programu za prikaz 3D objektov Neck Veins.

19 Poglavje 2 Algoritmi za segmentacijo S segmentacijo razdelimo podatke na segmente z enakimi lastnostmi. V primeru segmentacije 3D volumnov žil poskušamo čim bolj natančno poiskati dele volumnov z vrednostmi, ki predstavljajo zapis žil. Glede na te vrednosti nato iz podatkov konstruiramo 3D objekt za prikaz. 3D volumni so pridobljeni s 3D DSA. 3D DSA [3] je medicinski postopek, kjer v določeno mehko tkivo vstavimo barvno kontrastno sredstvo in nato tkivo slikamo iz več zornih kotov z uporabo C-roke. Dobljene slike nato odštejemo od slik istega tkiva iz istih zornih kotov brez kontrastnega sredstva. Te slike nato združimo in dobimo 3D volumne, ki jih uporabimo za segmentacijo. 3D volumen je predstavljen kot zaporedje števil, kjer vrednost določenega števila predstavlja intenzivnost razlike kontrastnega sredstva in ozadja. V postopku segmentacije se glede na vrednosti volumna določi prag, ki predstavlja mejo med vrednostmi žile in ozadja. Ta prag lahko določimo sami, ali ga avtomatsko poiščemo z Otsujevo metodo. Glede na dobljeno vrednost nato z algoritmom Marching cubes konstruiramo približen objekt žil v podatkih. Objekt je zapisan kot množica trikotnikov. To množico trikotnikov na koncu pregledamo in poiščemo vse komponente, ki so sestavljene iz povezanih trikotnikov. Pred samo segmentacijo lahko podatke še počistimo z Gaussovim glajenjem. Implementacija segmentacije je opisana v

20 4 POGLAVJE 2. ALGORITMI ZA SEGMENTACIJO V naslednjem poglavju so opisani uporabljeni algoritmi za namene segmentacije. 2.1 Otsujeva metoda za iskanje praga Pri izdelavi 3D objekta iz podatkov moramo poiskati in določiti prag, ki loči objekt, ki ga hočemo prikazati, od ostalih podatkov. Ta prag lahko ocenimo sami, dobra vrednost pa je pogosto kar polovica maksimuma vseh vrednosti. Vendar se lahko ocenjevanju izognemo in poiščemo optimalni prag avtomatsko s pomočjo algoritmov. Eden izmed algoritmov za avtomatsko iskanje praga je Otsujeva metoda. Otsujeva metoda za iskanje praga avtorja Nobuyuki Otsuja je učinkovit postopek ločevanja objektov od ozadja na slikah. Namenjena je transformaciji sivinskih slik v slike s samo dvema vrednostima - črno in belo [4, 5]. V tej implementaciji segmentacije je bila uporabljena za iskanje optimalnega praga med objektom in ozadjem z namenom čim manjšega števila šumnih objektov v končnem modelu. Slika 2.1: Določen prag na histogramu [6]

21 2.1. OTSUJEVA METODA ZA ISKANJE PRAGA Algoritem Glavna ideja algoritma je razdelitev slike na dva razreda: elemente, ki so v ozadju in elemente, ki so v ospredju. Tako za nek histogram algoritem določi razred za ozadje in razred za ospredje. Razreda sta ločena z izračunanim pragom (glej sliko 2.1) [5]. Algoritem z izčrpnim iskanjem minimizira razpršenost (varianco) znotraj razreda, ki ga definiramo kot uteženo vsoto razreda ozadja in ospredja. Torej minimizira kombinaciji razpršenosti obeh razredov. Kot utež vzamemo porazdelitveni funkciji razredov glede na prag. Formula za varianco pri pragu t je tako [4, 5]: σ 2 (t) = ω 1 (t) σ1(t) 2 + ω 2 (t) σ2(t) 2 (2.1) To se lahko prevede v razpršenost med razredoma, ki je definirana kot: σ 2 (t) = ω 1 (t) ω 2 (t) (µ 1 (t) µ 2 (t)) 2 (2.2) µ i (t) je povprečna vrednost za oba razreda in se izračuna kot: µ 1 (t) = t p(i) i oz. µ 2 (t) = ω 1 (t) i=0 Porazdelitvena funkcija ω i (t) pa: 255 p(i) i i=t ω 2 (t) (2.3) t 255 ω 1 (t) = p(i) oz. ω 2 (t) = p(i) (2.4) i=0 i=t p(i) je frekvenca določene vrednosti za histogram. Algoritem se tako izvede v naslednjih korakih [5]: 1. Poiščemo histogram volumna 2. Za vsako vrednost histograma izračunamo frekvenco 3. Izračunamo porazdelitveni funkciji in povprečni vrednosti obeh razredov za vsako vrednost histograma

22 6 POGLAVJE 2. ALGORITMI ZA SEGMENTACIJO 4. Poiščemo vrednost histograma, kjer je dosežen maksimum razpršenosti med razredoma ozadja in ospredja - ta vrednost je naš prag 5. Glede na prag se izvede binarizacija - slikovnim točkam (angl. pixel) določimo vrednosti 0 ali 1 V [5] je predlagano, da se poišče še drugi maksimum in se naredi povprečje dveh maksimumov. Prag dveh maksimumov je uporabljen tudi v implementaciji. Ker se v nadaljevanju segmentacije uporablja algoritem Marching cubes, ki prav tako gleda vrednosti slikovnih točk glede na prag, se lahko binarizacija izvede kar tam. Ker pa s pravimi vrednostmi dobimo lepši 3D model segmentiranega volumna, ta del Otsujeve metode izpustimo. 2.2 Glajenje z Gaussovo funkcijo Glajenje z Gaussovo funkcijo je zelo razširjen postopek pri obdelavi slik, uporablja pa se tudi za odpravljanja šuma v računalniškem vidu [7]. Uporaba Gaussovega glajenja ni omejena samo na dvodimenzionalne slike, temveč se lahko uporablja za glajenje v 3D prostoru. S tem namenom je Gaussovo glajenje uporabljeno tudi v tem diplomskem delu Gaussova funkcija Gaussovo glajenje temelji na uporabi Gaussove funkcije z normalno porazdelitvijo. Uporaba Gaussove funkcije je zelo široka. Uporablja se v statistiki, obdelavi signalov, obdelavi slik ipd. Gaussovo funkcijo za eno spremenljivko lahko zapišemo kot [8]: oz. v več dimenzijah kot: G(x) = G n ( x) = 1 (x µ)2 e 2 σ 2 (2.5) 2 π σ 2 1 ( 2 π σ) x µ 2 n e 2 σ 2 (2.6)

23 2.2. GLAJENJE Z GAUSSOVO FUNKCIJO 7 Slika 2.2: Gaussova funkcija dveh spremenljivk [10] Pri tem je σ standardna deviacija in grafično pomeni sploščenost Gaussove funkcije. µ je aritmetična sredina funkcije. V primeru naše uporabe σ pomeni velikost vpliva sosednjih slikovnih točk [9], µ pa je pozicija slikovne točke na sliki, ki jo povprečimo (v implementaciji to poenostavimo in Gaussove vrednosti izračunamo samo v µ = 0). Na sliki 2.2 je prikazana Gaussova funkcija dveh spremenljivk Implementacija glajenja Gaussova funkcija se uporablja kot utež za povprečenje določene slikovne točke na podlagi sosednjih. Pred začetkom izberemo vrednost parametra sigma in na podlagi tega izračunamo radij vpliva slikovnih točk oz. okno vpliva [9]. Večji kot je parameter sigma, večji bo vpliv sosednjih slikovnih točk. Za velikost okna se izračunajo vrednosti Gaussove funkcije, ki se normalizirajo, da imajo skupno vsoto 1. Vrednosti se nato zapišejo v okno na ustrezno mesto. V 3D je to okno kocka, katere vrednosti padajo z oddalje-

24 8 POGLAVJE 2. ALGORITMI ZA SEGMENTACIJO vanjem od središča. Uteženo povprečenje vsake slikovne točke se izvede z navideznim premikanjem okna po slikovnih točkah volumna. Za trenutno slikovno točko v središču okna množimo vrednosti slikovnih točk, ki jih okno pokrije z vpadajočimi vrednostmi okna. Zaradi distribucije vrednosti v oknu je vpliv vrednosti volumna na robu okna manjše, izven okna vrednosti nimajo vpliva, vpliv vrednosti blizu centra pa je največji. Vse vrednosti se nato sešteje in nadomesti vrednost trenutne slikovne točke z vsoto [9]. Ena izmed lepih lastnosti Gaussove funkcije je separabilnost po dimenzijah. [8]. Ta lastnost nam omogoča uporabo Gaussovega glajenja za vsako dimenzijo posebej. S tem se znebimo kompleksnosti in pohitrimo izvajanje algoritma. Tako se celoten algoritem za 3D prostor izvede v naslednjih korakih: 1. Izračunamo okno za eno dimenzijo z vrednostjo σ 2. Izvedemo povprečenje za vse slikovne točke po dimenziji x 3. Izvedemo povprečenje za vse slikovne točke po dimenziji y 4. Izvedemo povprečenje za vse slikovne točke po dimenziji z Za še hitrejše glajenje se uporablja hitra Fourierjeva transformacija (angl. Fast Fourier Transform ali FFT). Vendar v diplomskem delu ni bila implementirana. 2.3 Algoritem Marching cubes Osrednji algoritem diplomske naloge je algoritem Marching cubes. Algoritem na podlagi predoločenih tabel postavitev trikotnikov in vrednosti slikovnih točk 3D volumna konstruira 3D model [11]. Algoritem je mogoče enostavno paralelizirati, kar omogoča izrabo GPE.

25 2.3. ALGORITEM MARCHING CUBES Algoritem Za izvedbo algoritma Marching cubes moramo 3D prostor razdeliti na manjše kocke oz. voksle (glej 2.3). Kocke so sestavljene iz osmih vrednosti, ki predstavljajo oglišča. Algoritem se nato sprehodi skozi vse kocke, za vsako kocko določi postavitev trikotnikov in njihovih normal. Slika 2.3: 3D prostor razdeljen na kocke oz. voksle [12] Iskanje trikotnikov Glede na prag, ki smo ga predhodno določili, je vsako oglišče lahko znotraj ali zunaj objekta. Različnih možnosti je tako 2 8 oz Teh 256 različnih možnosti se lahko poenostavi na 14 in eno prazno. Možnosti so prikazane na sliki 2.4. Tu upoštevamo, da so možne različne rotacije in simetrije iste predstavitve. Poleg tega se predstavitev ne spremeni v komplementarnih primerih, npr. ko so znotraj objekta oglišča 1, 2, 3, 4, 5 ali če so znotraj oglišča 6, 7, 8 [13]. Za lažjo implementacijo pripravimo tabelo velikosti 256, ki vsebuje vse možne primere. Za vsako kocko pogledamo, koliko vrednosti je znotraj objekta in ustvarimo indeks, 8 bitno število, katere posamezen bit pomeni ali je oglišče znotraj ali zunaj objekta. Preko indeksa poizvedemo po predoločeni tabeli, ki nam pove, katere robove naš objekt seka, glede na vrednosti v ogliščih [13]. Način kreiranja indeksa je prikaz na sliki 2.5. Ko iz tabele dobimo sekane robove, izračunamo točke na robovih. V

26 10 POGLAVJE 2. ALGORITMI ZA SEGMENTACIJO Slika 2.4: 14 možnih kombinacij [14]

27 2.3. ALGORITEM MARCHING CUBES 11 Slika 2.5: Kreiranje indeksa najenostavnejši implementaciji sečne točke postavimo kar na sredino roba. Vendar dobimo boljši model, če postavitev točke linearno interpoliramo glede na vrednosti v obeh ogliščih roba. Dobljene točke na robovih predstavljajo oglišča trikotnikov [13]. Računanje normal Za pravilno osvetljevanje objekta je dobro, da izračunamo tudi normale. Najpreprosteje je, da uporabimo normale pravokotne na trikotnik. Take normale se izračunajo kot vektorski produkt dveh stranic trikotnika. Boljše rezultate dobimo, če izračunamo normale kot gradiente v vsaki točki trikotnikov posebej. Gradiente za vsako oglišče kocke lahko aproksimiramo z izračunom razlik vrednosti v sosednjih točkah po isti dimenziji.

28 12 POGLAVJE 2. ALGORITMI ZA SEGMENTACIJO Gradient za točko (i, j, k) tako lahko aproksimiramo kot [13]: D(i 1, j, k) D(i + 1, j, k) G x = x D(i, j 1, k) D(i, j + 1, k) G y = y D(i, j, k 1) D(i, j, k + 1) G z = z (2.7) (2.8) (2.9) Nato gradiente oglišč kocke še interpoliramo enako kot v primeru robov. Tako dobimo normale v točkah trikotnikov. Celoten postopek algoritma za vsako kocko posebej lahko zapišemo kot: 1. Izdelamo indeks oglišč 2. Iz tabele preberemo presečišča 3. Glede na presečišča izračunamo koordinate oglišč trikotnikov 4. Izračunamo normale za trikotnike 2.4 Iskanje povezanih komponent 3D modela Pri kreiranju 3D modelov je bilo ugotovljeno, da kreirani modeli vsebujejo veliko ločenih manjših objektov, ki niso del prikazanih žil. Teh motečih objektov se lahko znebimo z uporabo Gaussovega glajenja ali s spreminjanjem praga. Vendar pa uporaba premočnega Gaussovega glajenja ali prevelikega praga vpliva na prikaz modela žil. Zaradi Gaussovega glajenja lahko postane model žil preveč popačen, pri prevelikem pragu pa lahko odrežemo prevelik del ožilja. Zato bi radi, da se filtrira objekte, ki imajo majhno število povezanih trikotnikov. V ta namen bi lahko preverili povezane komponente pred ali po izvedbi algoritma Marching cubes. Če bi preverjali pred izvedbo bi lahko

29 2.4. ISKANJE POVEZANIH KOMPONENT 3D MODELA 13 uporabili algoritme za označevanje povezanih komponent (angl. Connectedcomponent labeling) [15]. Vendar pa sem se odločil za preverjanje povezanih komponent po izvedbi algoritma Marching cubes. Z algoritmom Marching cubes dobimo trikotnike, ki predstavljajo naš 3D model. Če hočemo poiskati povezane trikotnike, se moramo sprehoditi po vseh trikotnikih in pregledati sosede, kjer sta soseda dva trikotnika, ki imata vsaj eno skupno oglišče. Ker pa ne vemo, katere točke si trikotniki delijo in je vsak trikotnik zapisan kot svoja trojica oglišč, moramo najprej poiskati skupna oglišča. Algoritem se tako izvede v dveh korakih. 1. Sprehodimo se po trikotnikih in za vsako oglišče dodamo referenco na trikotnik. Tako ustvarimo zbirko unikatnih oglišč, kjer vsako oglišče kaže na listo trikotnikov, ki vsebujejo to oglišče. S tem dobimo vse sosede trikotnikov. Vsak trikotnik pa hrani referenco na unikatno oglišče, ki mu pripada. 2. Za vsako unikatno oglišče hranimo vrednost ali so bili trikotniki, ki vsebujejo to oglišče označeni ali ne oz. ali je bilo oglišče obiskano. Za vsak trikotnik hranimo oznako. Sprehodimo se po trikotnikih. Za vsak trikotnik pogledamo, ali že ima oznako. Če je nima, mu jo dodamo ter pogledamo oglišča. Če katero izmed oglišč še ni označeno, pripadajoče trikotnike dodamo v vrsto. Nato postopek ponovimo za vse trikotnike v vrsti. Ko je vrsta prazna, povečamo oznako in gremo na naslednji neoznačen trikotnik. S tem preiščemo trikotnike v širino (angl. Breadth-first search). (Za drugi korak algoritma glej Algorithm 1). Alternativno bi sosednost iskali na podlagi robov. Torej bi bila dva trikotnika sosednja, če bi imela skupen rob.

30 14 POGLAVJE 2. ALGORITMI ZA SEGMENTACIJO Data: oglišča z referencami pripadajočih trikotnikov, vsi trikotniki Result: označeni trikotniki inicializiramo vrsto; oznaka = 1; for za vse trikotnike do if trenutni trikotnik nima oznake then označimo trikotnik; for globalno neobiskana oglišča trikotnika do označimo oglišče kot obiskano; dodamo oglišču pripradajoče trikotnike v vrsto; end while vrsta ni prazna do trikotnik = vzamemo prvi trikotnik iz vrste; if trikotnik nima oznake then označimo trikotnik; for globalno neobiskana oglišča trikotnika do označimo oglišče kot obiskano; dodamo oglišču pripradajoče trikotnike v vrsto; end end end oznaka = oznaka + 1; end end Algorithm 1: 2. korak iskanja povezanih komponent

31 Poglavje 3 Implementacija algoritmov na GPE S pojavom računalniških zaslonov so se okrog leta 1980 začele pojavljati prve grafične kartice. Grafične kartice so dodatni kos strojne opreme, ki pospeši delo z 2D in 3D objekti in tako omogoči boljše rezultate pri prikazu na zaslonu [16]. Grafične kartice morajo obdelati veliko objektov naenkrat. Ker ti objekti niso odvisni eden od drugega, to lahko izvajajo paralelno. Sodobne grafične kartice imajo v ta namen več procesnih enot, ki so v grobem zelo podobne centralnim procesnim enotam, s to razliko, da so prilagojene procesiranju grafičnih objektov [16]. Z napredkom so grafične kartice postale programabilne, kar pomeni, da se lahko na sodobnih grafičnih karticah izvajajo programi, ki niso zapečeni na čip. S tem se lahko manipulira z grafičnimi objekti kar na grafični kartici. Kmalu za tem so se začeli razvijati tudi programski vmesniki (angl. Application programming interface, v nadaljevaju API) za namene obdelovanja podatkov, ki niso vezani na grafiko (angl. general-purpose computing) [16]. 15

32 16 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE 3.1 OpenCL OpenCL je vmesnik za programiranje (angl. Application programming interface, v nadaljevanju API) namenjen za izvajanje paralelnega računanja. Olajša delo z grafično kartico na nizkem nivoju. Programerju tako ni treba skrbeti, kako se bodo ukazi izvajali na ravni strojne opreme. Programe za OpenCL je mogoče poganjati na širokem naboru strojne opreme in ni omejeno samo na grafične kartice [17]. Prenosljivost je glavni razlog, da je za namene pohitritve algoritmov s paralelizacijo, OpenCL API uporabljen v tem diplomskem delu. Druga razširjena alternativa je CUDA podjeta Nvidia, ki pa je omejena na strojno opremo podjetja Nvidia Logični model OpenCL Logični model OpenCL je razdeljen v več enot [18], prikazan je na sliki 3.1. Prva enota se imenuje gostiteljski program (angl. host program). Gostiteljski program se izvaja na centralni procesni enoti. Napisan je lahko v C-ju, C++, Javi ali drugem programskem jeziku. Preko gostiteljskega programa se nadzira samo izvajanje kode OpenCL - prevajanje programov, alociranje pomnilnika, zaporedje izvajanja funkcij ipd. Druga logična enota so programi OpenCL. Programi OpenCL vsebujejo kodo napisano v programskem jeziku OpenCL C, namenjeno za izvajanje OpenCLa. Programi OpenCL se prevedejo v funkcije OpenCL - kernele. En kernel OpenCL predstavlja določeno akcijo, ki se izvede nad podatki, npr. iskanje maksimuma, izvedba algoritma Marching cubes ipd. Kerneli predstavljajo tretjo logično enoto. Četrta logična enota je ukazna vrsta (angl. Command-queue). Preko ukazne vrste gostiteljski program pošlje ukaz za nadzor nad izvajanjem OpenCL akcij na strojni opremi, kjer se izvaja koda OpenCL. Povezavo med gostiteljskim programom in OpenCL napravo predstavlja kontekst (angl. Context), ki je definiran znotraj gostiteljskega programa.

33 3.1. OPENCL 17 Slika 3.1: Shema logičnega modela Predstavitev pomnilnika Za učinkovito implementacijo algoritmov je dobro poznati delo s pomnilnikom in vrste pomnilnikov. OpenCL nudi 5 različnih vrst pomnilnikov [18], predstavljenih s sliko 3.2. Globalni, lokalni, konstantni in privatni pomnilnik so del strojne opreme, na kateri se izvaja kernel OpenCL, dodatno pa je definiran še gostiteljski pomnilnik (angl. host memory), do katerega lahko dostopa gostiteljski program. Globalni pomnilnik v OpenCLu predstavlja pomnilnik, v katerega lahko pišejo in berejo vse delovne enote, ne glede na postavitev. Ta pomnilnik je tudi počasnejši od ostalih. V OpenCL C ga definiramo kot global. Konstantni pomnilnik je podobno kot globalni dosegljiv vsem delovnim enotam, s to razliko, da je njegova vsebina konstanta in vanj ni mogoče pisati. V OpenCL C ga definiramo kot constant. Lokalni pomnilnik lahko pišejo in berejo le delovne enote določene delovne skupine. Za vsako delovno skupino obstaja ločen pomnilnik. Ta pomnilnik je ponavadi manjši od globalnega in zaradi tega veliko hitrejši, kar lahko

34 18 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE Slika 3.2: Pomnilnik predstavljen v OpenCL APIju [19] izkoristimo za optimizacijo algoritmov. V OpenCL C ga definiramo kot local. Privatni pomnilnik je namenjen samo določeni delovni enoti in ni dostopen ostalim delovnim enotam. V OpenCL C ga definiramo kot private. Gostiteljski pomnilnik je namenjen uporabi gostiteljskemu programu in ni dostopen preko OpenCL APIja. Preko OpenCLa samo določimo, kako se bo gostiteljski pomnilnik preslikal v pomnilnik na OpenCL napravi. Delo s pomnilnikom Za delo s pomnilnikom na strojni opremi na kateri se izvajajo kerneli OpenCL, OpenCL ne nudi možnosti alociranja in sproščanja pomnilnika med izvajanjem. Za alociranje pomnilnika in sproščanje je potrebno poskrbeti v gostiteljskem programu. Za alokacijo pomnilnika ustvarimo objekt Buffer ali bolj napreden objekt Image. Preko objektov tega tipa pišemo podatke na napravo in beremo podatke iz naprave, kjer se izvaja OpenCL [18]. Če je velikost podatkov večja kot globalni pomnilnik naprave, kjer izvajamo kernel, potem se poslužujemo razčlenitve podatkov na manjše dele. Vsak del podatkov pošljemo v kernel, njihove rezultate posebej preberemo

35 3.1. OPENCL 19 in združimo v gostiteljskem programu. Pri izvajanju programa lahko zaradi napake v programu dostopamo do naslovov pomnilnika naprave OpenCL, za katere naš program nima pravice [17]. Pri izvajanju na grafični kartici nas naprava o tem ne obvesti. Zato se lahko zgodi, da se ustavi celoten program ali celo operacijski sistem in je potrebno ponovno zagnati računalnik. V najboljšem primeru se ne zgodi nič in se program normalno izvede. Druga težava pri delu s pomnilnikom nastane, ko alociramo prevelik del globalnega pomnilnika. Na strojni opremi, ki sem jo uporabljal za implementacijo, se je v tem primeru program izvedel in ni vračal napake, kot trdi dokumentacija. Kljub temu, da se je program normalno izvedel, pa podatki niso bili obdelani. Sinhronizacija OpenCL ne zagotavlja sinhronizacije podatkov med delovnimi enotami oz. delovnimi skupinami (za delovne enote in skupine glej 3.2). Tako delovne enote, ki vršijo operacije na istem delu pomnilnika, proizvedejo napake. Napaka se lahko izvrši tudi, če se isti del pomnilnika spreminja na različnih mestih kode [17]. Do napake pride že pri preprostih operacijah, kot je na primer povečevanje spremenljivke, ki se izvaja v dveh različnih delovnih enotah. Zato OpenCL omogoča sinhronizacijo znotraj delovnih skupin s pomočjo barrier() funkcije [20, 21]. Ko posamezna delovna enota pride do ukaza barrier() se mora ustaviti in počakati dokler vse ostale delovne enote v isti delovni skupini ne pridejo do te funkcije. Težave nastanejo, če pride do razvejitev v programu in delovne enote ne pridejo do iste funkcije. Takrat se lahko izvajanje v določenih delovnih enotah ustavi in program čaka dokler ga ne zatre operacijski sistem. Vendar pa s funkcijo barrier() ne moremo sinhronizirati delovnih enot globalno. V ta namen lahko uporabimo funkcije Atomic. Funkcije Atomic

36 20 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE omogočajo izvedbo atomarnih operacij, torej operacij, ki jih lahko nad enim delom pomnilnika izvaja samo ena delovna enota. Funkcije Atomic lahko vključimo z cl khr local int32 base atomics : enable. [20] Glavna pomankljivost atomarnih operacij je, da niso podprte v vseh napravah na katerih lahko uporabljamo OpenCL. Poleg tega so časovno drage, zlasti pri uporabi počasnejšega globalnega pomnilnika. Zaradi tega lahko boljše rezultate dobimo s prilagoditvijo algoritma [21] - tak primer je iskanje maksimuma (glej 3.3.1) Celoten postopek klica OpenCL programa Zgoraj so opisane logične enote, ki jih definira OpenCL in delo s pomnilnikom. Poznavanje vseh teh elementov je potrebno za izvedbo klica programa OpenCL. Celoten postopek klica programa OpenCL strnemo v naslednje korake: 1. Inicializacija OpenCL konteksta in ukazne vrste 2. Prevajanje programa OpenCL 3. Kreiranje kernela OpenCL 4. Alokacija pomnilnika in prenos podatkov 5. Nastavitev parametrov kernela in zagon kernela 6. Branje rezultatov 7. Sproščanje spomina 8. Brisanje programa, ukazne vrste in konteksta Za zagon različnih kernelov ni treba ponovno čez vse korake. Tako poljubnokrat iteriramo med koraki od 3. do 7. Možna je tudi uporaba večjega števila programov, ukaznih vrst in kontekstov.

37 3.2. DELJENJE PROBLEMOV Deljenje problemov Za čim boljšo izrabo paralelizacije je potrebno naš problem razbiti na čim bolj neodvisne podprobleme. Tako lahko za algoritem Marching cubes kot podproblem definiramo vsako kocko, saj je iskanje trikotnikov posamezne kocke neodvisno. V primeru binarizacije kot podproblem definiramo vsako slikovno točko, saj vrednosti slikovnih točk med seboj niso odvisne ipd. Pri problemu, ki ga ne moremo razbiti na neodvisne podprobleme, se poslužujemo sinhronizacije, opisane v prejšnem poglavju. V OpenCL APIju vsak tak podproblem obdeluje ena delovna enota oz. nit (angl. work-item) [17, 18]. Delovne enote so združene v delovne skupine (angl. work-groups). Vsaka delovna skupina se izvede na svojem procesorju in delovne enote ene delovne skupine si delijo procesorske vire. V splošnem se delovne enote izvedejo paralelno. Vse delovne enote skupaj obdelujejo globalen problem. Velikost globalnega problema (in s tem število delovnih enot) moramo določiti sami, medtem ko velikost delovnih skupin lahko prepustimo prevajalniku. Globalni problem lahko definiramo kot večdimenzionalen problem. Za primer vzemimo sliko velikosti 512x512, ki jo želimo binarizirati (kjer že imamo mejno vrednost). Binarizacija vsake slikovne točke je neodvisen podproblem. Torej imamo 512 * 512 oz podproblemov. Iz tega sledi, da je najbolj naravno število vseh delovnih enot oz. je globalni problem velikosti Ta globalni problem lahko definiramo kot problem ene dimenzije. Pri tem bomo na podlagi globalne identifikacijske številke delovne enote (angl. global id) dobili vrednosti po eni dimenziji od 0 do Preko te številke bomo nato lahko izračunali, katero slikovno točko v sliki obdelujemo. V primeru da problem razdelimo v 2 dimenziji velikosti 512, bomo za vsako dimenzijo dobili globalno identifikacijsko številko od 0 do 511. S tem avtomatsko dobimo koordinati slikovne točke. Enako lahko definiramo tudi velikosti delovnih skupin, ki združujejo delovne enote (glej sliko 3.3). Definiranje dimenzij globalnega problema in velikosti delovnih skupin

38 22 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE Slika 3.3: Razdelitev problema v dveh dimenzijah na delovne enote in delovne skupine [22] lahko zelo pripomore k hitrosti izvajanja programa. V primeru grafičnih kartic bo v splošnem algoritem hitreje deloval, če naenkrat izkoristimo čim več procesnih enot. Zato lahko različne nastavitve delujejo različno hitro na različni strojni opremi in optimalna hitrost ni zagotovljena. Prav tako je odvisno od strojne opreme, kako velike so lahko delovne skupine za vsako dimenzijo. Velikost globalnega problema pa nima omejitev. 3.3 Prevajanje algoritmov Ko imamo določeno velikost globalnega problema in kaj vsaka delovna enota obdeluje, lahko prevedemo algoritem za namene paralelizacije. Pri problemih, ki jih lahko enostavno razbijemo na neodvisne podprobleme, je paralelizacija enostavna. Za probleme, kjer je to težje, pa postane pisanje paralelnih algoritmov težje. Paralelizacija se izvede tako, da vsaka delovna enota izvrši akcijo napisano v kernelu OpenCL. Od uporabljenih algoritmov sem na GPE implementiral algoritem Mar-

39 3.3. PREVAJANJE ALGORITMOV 23 ching cubes, Gaussovo glajenje in Otsujevo metodo za iskanje praga. Dodatno sem za potrebe normalizacije vrednosti pri Otsujevi metodi in algoritmu Marching cubes implementiral iskanje maksimuma Iskanje maksimuma na GPE Iskanje maksimuma v vektorju števil, ki ni urejen po velikosti, je zelo preprost postopek. Na začetku nastavimo maksimum na neko majhno vrednost, ki nam zagotavlja, da je to število manjše ali enako maksimumu vektorja. Primeren je kar prvo število vektorja. Sprehodimo se linearno po vektorju in vsako število primerjamo s trenutnim maksimumom. V kolikor je število večje, ga postavimo za nov maksimum in nadaljujemo. Ne moremo se izogniti zmanjšanju kompleksnosti iskanja maksimuma, pregledati moramo namreč vse elemente, vendar pa lahko postopek pohitrimo s paralelizacijo s pomočjo redukcije. Osnovna ideja redukcije je paralelno iskanje več lokalnih maksimumov. Med lokalnimi maksimumi nato poiščemo še globalni maksimum. Redukcija ni omejena samo na iskanje maksimumov oz. minimumov, lahko jo uporabimo tudi za npr. paralelno seštevanje [23]. Implementiral sem dvostopenjsko redukcijo [23]. Algoritem se izvede v treh stopnjah (glej sliko 3.4). V prvi stopnji se vsa števila razdeli v manjše skupine. Število skupin je enako številu delovnih skupin, recimo N. Vsaka delovna skupina je razdeljena na n delovnih enot. Vsaka i-ta enota nato poišče maksimum, in sicer na vsakem i + k*n*n mestu, kjer k povečujemo, dokler ne pridemo do konca. Tako dobimo maksimume za vsako delovno enoto. V drugi stopnji nato poiščemo maksimum znotraj vsake delovne skupine. Tako smo dobili maksimum za vsako delovno skupino. V tretji stopnji samo še preiščemo vektor maksimumov vseh delovnih skupin skupaj. Zaradi redukcije je ta vektor veliko krajši, kot je vseh števil celotnega problema. Slika 3.4 prikazuje redukcijo za dve delovni skupini.

40 24 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE Slika 3.4: Dvostopenjska redukcija za dve delovni skupini (zelena in modra) [23] Algoritem Marching cubes in Gaussovo glajenje Gaussovo glajenje in algoritem Marching cubes lahko enostavno razbijemo na neodvisne podprobleme. Algoritma sta tako enostavna za prenos na GPE. Ker pri Gaussovem glajenju nove vrednosti slikovnih točk shranjujemo v novo sliko (matriko), se računanje za vsako izmed njih lahko izvede na svoji delovni enoti. Pri implementaciji, kjer povprečimo po vsaki dimenziji posebej, moramo upoštevati, da naenkrat povprečimo slikovne točke le po eni dimenziji. Pri algoritmu Marching cubes lahko paralelno pregledamo vsako kocko zase, vsaka delovna enota tako pregleda svojo kocko po korakih opisanih v Otsujeva metoda iskanja praga Pri Otsujevi metodi se paralelno splača implementirati le dele algoritma [24]. Tako sem na GPE implementiral iskanje histograma. Ostali deli algoritma se zaradi majhnega števila operacij in velike odvisnosti podatkov enostavneje hitro implementirajo na centralno procesni enoti (v nadaljevanju CPE).

41 3.4. UČINKOVITOST IMPLEMENTACIJE NA GPE 25 Učinkovito bi bilo na GPE implementirati tudi binarizacijo [24], ki pa je v našem postopku segmentacije ne potrebujemo. Histogram na GPE Najenostavnejša implementacija histograma na GPE bi lahko vsebovala samo dva koraka. Vsako slikovno točko volumna bi določili svoji delovni enoti. Nato bi v vsaki delovni enoti preverili vrednost slikovne točke in povečali histrogram za to vrednost. Izkaže se, da tak algoritem ne deluje najbolje. Zaradi potrebe po sinhronizaciji in dostopu do istega dela pomnilnika je tak algoritem zelo počasen (glej 3.1.2). Da se izognemo pisanju na isto lokacijo, lahko priredimo algoritem podobno kot iskanje maksimuma. Glavna ideja je razdelitev dela med delovne skupine in iskanje lokalnega histograma za vsako delovno skupino. Dobljene lokalne histograme nato združimo v globalnega. Zaradi hitrejšega lokalnega pomnilnika in manjšega števila dostopov do istih lokacij s tem pohitrimo algoritem. 3.4 Učinkovitost implementacije na GPE Narejena je bila primerjava med hitrostjo izvajanja implementacije segmentacije na CPE v programskem jeziku Java in implementacije na GPE z OpenCL APIjem. Rezultati so predstavljeni v tabelah in prikazujejo čase izvajanja in koeficiente pohitritev. Vsa merjenja so se izvajala na prenosnem računalniku s specifikacijo: Intel Core 2 Duo T GHz, 4GB delovnega pomnilnika, Nvidia GT240M 1GB, operacijski sistem Windows 8. V čas izvajanja algoritmov na GPE je bil upoštevan tudi čas za samo inicializacijo programa OpenCL in za delo s pomnilnikom (v oklepaju je naveden čas izvajanja algoritmov brez inicializacije in brez dela s pomnilnikom).

42 26 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE Dimenzija volumna CPE (Java) GPE (OpenCL API) Pohitritev 512 x 512 x ,652s 2,997s (1,7s) 27,24x (48,03x) 256 x 256 x 195 5,462s 0,595s (0,219s) 9,18x (24,94x) 128 x 128 x 97 0,673s 0,268s (0,031s) 2,51x (21,71x) Tabela 3.1: Gaussovo glajenje (σ = 0.5) Dimenzija volumna CPE (Java) GPE (OpenCL API) Pohitritev 512 x 512 x 390 0,695s 1,422s (0,359s) 0,49x (1,94x) 256 x 256 x 195 0,111s 0,236s (0,041s) 0,47x (2,71x) 128 x 128 x 97 0,034s 0,127s (0,016s) 0,27x (2,12x) Tabela 3.2: Otsujeva metoda iskanja praga Dimenzija volumna CPE (Java) GPE (OpenCL API) Pohitritev 512 x 512 x ,186s 1,969s (0,689s) 11,27x (32,20x) 256 x 256 x 195 2,295s 0,439s (0,156s) 5,23x (14,71x) 128 x 128 x 97 0,454s 0,158s (0,031s) 2,87x (14,64x) Tabela 3.3: Algoritem Marching cubes (prag je enak polovici maksimuma vrednosti) Dimenzija volumna CPE (Java) GPE (OpenCL API) Pohitritev 512 x 512 x ,476s 3,561s 29,34x 256 x 256 x 195 7,973s 0,612s 13,02x 128 x 128 x 97 0,907s 0,275s 3,30x Tabela 3.4: Celotna segmentacija

43 3.5. TEŽAVE PRI IMPLEMENTACIJI 27 Analiza rezultatov Iz tabele 3.4 lahko razberemo, da smo z implementacijo algoritmov na GPE zelo pohitrili celotno segmentacijo. Kljub slabši strojni opremi tako dosežemo zadovoljive čase segmentacije. Vidno je, da se koeficient pohitritve povečuje skupaj z velikostjo volumnov. Podobne rezultate dobimo tudi za posamezno izvajanje Gaussovega glajenja (tabela 3.1) in algoritma Marching cubes (tabela 3.3). Slaba stran implementacije na GPE je, da zaradi dodatne inicializacije in dela s pomnilnikom, ter prenosom podatkov iz glavnega pomnilnika v pomnilnik GPE izgubimo nekaj časa. To prikazuje tabela 3.2. Opazimo, da se algoritem Otsujevega iskanja praga izvede hitreje na GPE, vendar pa zaradi dodatnega dela celoten klic in izvajanje programa OpenCL deluje počasneje kot v CPE implementaciji v programskem jeziku Java. Kljub temu je uporaba GPE implementacije v segmentaciji smiselna. V postopku segmentacije namreč inicializiramo program OpenCL enkrat za več algoritmov. Poleg tega je potrebno prenesti podatke na GPE le na začetku segmentacije. Med segmentacijo podatki ostanejo na grafični kartici, s čimer se izognemo nepotrebni izgubi hitrosti. 3.5 Težave pri implementaciji Prenos algoritmov iz programskega jezika Java v OpenCL C zaradi podobnosti v sintaksi ni bil preveč problematičen. Glavne težave so se pojavile ob slabem razumevanju delovanja OpenCL APIja in s strojno opremo Pomanjkanje pomnilnika Ker OpenCL ne omogoča dinamične alokacije pomnilnika, je potrebno vnaprej predvideti, koliko pomnilnika bo zasedla rešitev. To se je izkazalo za težavno pri implementaciji algoritma Marching cubes. Zaradi paralelne implementacije namreč ne moremo vedeti kam v pomnilnik lahko zapišemo

44 28 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE trikotnike. Najenostavnejša rešitev bi bila, da bi upoštevali, da ima vsaka kocka največje možno število trikotnikov. S tem bi enostavno izračunali mesta za zapis trikotnikov za vsako kocko. Izkaže pa se, da je ta rešitev preveč prostorsko potratna. Za obdelavo sem dobil testne 3D volumne velikosti 512 x 512 x 390. Če upoštevamo, da je največje možno število trikotnikov na kocko v algoritmu Marching cubes enako 4, potem imamo za vse kocke v najslabšem primeru 512 * 512 * 390 * 4 trikotnikov. Vsak trikotnik ima 3 oglišča, vsako oglišče pa ima 3 vrednosti x, y in z, ki jih zapisujemo v float natančnosti velikosti 4B. To skupaj nanese 512 * 512 * 390 * 4 * 3 * 3 * 4B oz. 14,7GB za zapis. Tu ne upoštevamo, da je za vsak trikotnik potrebno izračunati tudi normale. Današnje grafične kartice dosegajo do 4GB pomnilnika. Grafična kartica, na kateri sem delal pa ima 1GB pomnilnika. Da bi zmanjšali prostorsko kompleksnost, bi lahko združili podvojena oglišča in zapisali trikotnike bolj kompaktno. Vendar pa bi težko zmanjšali problem tako, da bi zasedel manj kot 1GB pomnilnika. Druga možnost bi bila razdelitev volumna na ustrezno manjše volumne. Vsak tak volumen bi morali posebej obdelati in rezultat združiti v večji pomnilnik v gostiteljskem programu. Slaba lastnost tega postopka je, da zahteva veliko prenosov podatkov med gostiteljskim programom in OpenCL napravo. Nekatere implementacije algoritma Marching cubes imajo dodan proces, ki pred samo izvedbo algoritma prešteje in vrednoti vsako kocko in izloči vse kocke, ki ne vsebujejo trikotnikov. Ta implementacija je zanesljiva in učinkovita, vendar pa naredi algoritem bolj kompleksen. Veliko enostavnejša, a vseeno učinkovita rešitev je uporaba globalnega števca trikotnikov z uporabo atomarnih funkcij. Izkaže se, da uporaba atomarne funkcije za števec v tem primeru minimalno vpliva na čas izvedbe, implementacija pa je preprosta, zato je uporabljena tudi v implementaciji segmentacije. Če bi želeli izdelati 3D model z večjim volumnom, npr. dimenzij 1024 x 1024 x 512, to ne bi več zadostovalo, saj že 3D volumen podatkov zasede

45 3.5. TEŽAVE PRI IMPLEMENTACIJI 29 več prostora, kot ga omogoča večina grafičnih kartic. Najenostavneje bi bilo združiti možnost razdelitve volumna in implementacije z globalnim števcem Razhroščevanje Veliko težav mi je povzročilo razhroščevanje. Enostavno je bilo odpraviti napake, ki so se zgodile pri prevajanju programa zaradi sintaktičnih napak. Potrebno je bilo preverjati za napako tipa CL BUILD PROGRAM FAILURE in opisno sporočilo napake izpisati. Težje je bilo odkriti napake, ki so se zgodile med samim izvajanjem programa. Naprava pogosto ne vrača opisnih sporočil o napaki, mnoge napake pa vračajo enake vrednosti. Tako napake za predolgo izvajanje programov (angl. timeout), napake pri inicializaciji in napake s spominom vračajo enako vrednost - CL INVALID COMMAND QUEUE. Dodatna težava ob napakah pri delovanju pa predstavlja sesutje programa ali celotnega operacijskega sistema.

46 30 POGLAVJE 3. IMPLEMENTACIJA ALGORITMOV NA GPE

47 Poglavje 4 Implementacija segmentacije v programu Neck Veins V naslednjem poglavju bom opisal in prikazal delovanje programa za segmentacijo, s katerim sem razširil program Neck Veins, ki ga je za diplomsko nalogo implementiral Simon Žagar. Opisal bom tudi urejanje programa in prevajanje programa. 4.1 Program Neck Veins Neck Veins je program, ki omogoča prikaz 3D objektov iz datotek vrste.obj. V osnovi je namenjen prikazu 3D žil, vendar se lahko uporablja tudi za druge objekte. Napisan je v Javi in uporablja OpenGL API za komunikacijo z grafično kartico. Za grafični vmesnik je uporabljena knjižnica TWL. Program Neck Veins omogoča uporabniku pogled na 3D objekte z možnostjo rotacije objekta, premikanja kamere, spreminjanja svetlobe ipd. Z mojo razširitvijo lahko objekte prikažemo direktno iz podatkov pridobljenih s 3D DSA. Prebrane objekte lahko tudi izvozimo v.obj datoteko za kasnejšo uporabo. 31

48 POGLAVJE IMPLEMENTACIJA SEGMENTACIJE V PROGRAMU NECK VEINS 4.2 Urejanje programske kode Pred samo implementacijo segmentacije sem najprej uredil programsko kodo programa. Glavni del programa Neck Veins je bil napisan v enem samem razredu. Ta razred je združeval grafični vmesnik, logiko za delo z grafiko, logiko za delo z vhodno-izhodnimi napravami ipd. Implementacija segmentacije v tako obsežen razred bi bila težja, povečala bi se kompleksnost programa, posledično pa bi bila koda težje razumljiva. Program sem razdelil v tri sklope, ki sem jih dodal že narejenemu sklopu grafičnih modelov. Vse štiri sklope sem ločil v pakete ter jih razdelil v logične razrede. Tako so nastali štirje glavni paketi - paket z razredi grafičnega vmesnika, paket z razredi za delo z grafiko, paket z grafičnimi modeli, ki so predstavljali 3D objekte in paket z orodji. Samo arhitekturo programa sem poskusil čim bolj približati že znanim arhitekturam grafičnih vmesnikov iz Jave. Zato sem ustvaril logično hierahijo razredov, podobno tisti, ki jo pozna Swing. Tako imamo glavni razred VeinsWindow, ki skrbi za inicializacijo nastavitev, kjer je glavna zanka in ki skrbi za delo z vhodno-izhodnimi napravami. VeinsWindow vsebuje in inicializira tri glavne podrazrede. VeinsRenderer razred skrbi za izrisovanje 3D modela s pomočjo OpenGL APIja. VeinsFrame inicializira in vsebuje vse gumbe, ki so del knjižnice TWL. Razred HUD pa izrisuje grafični vmesnik, ki je izrisan s pomočjo OpenGL APIja. 4.3 Prevajanje uporabniškega vmesnika Programu sem dodal možnost spreminjanja jezika grafičnega vmesnika. Neck Veins program omogoča preklapljanje med slovenščino in angleščino. Možnost menjave jezika grafičnega vmesnika je implementirana s pomočjo Javinega razreda ResourceBundle. Ta omogoča enostavno lokalizacijo s pomočjo pomožnih datotek, v katerih je napisan tekst za vsak jezik posebej. Na ta način se loči programska koda in tekst uporabljen v programih. Za prevajanje tako ni potrebno znanje programiranja, poleg tega je dodajanje novih

49 4.4. DODAJANJE SEGMENTACIJE V PROGRAM 33 prevodov enostavno. Vsaka pomožna datoteka predstavlja določeno lokalizacijo. Vsaka pomožna datoteka ima k imenu datoteke dodano končnico, ki predstavlja lokalizacijo - za slovenščino je to sl SI. Preko teh končnic program razpozna, v kateri datoteki se nahaja klicana lokalizacija. V vsaki pomožni datoteki se nahajajo pari oznak in tekstov. S pomočjo oznak pridobimo tekst v želenem jeziku. 4.4 Dodajanje segmentacije v program Glavna naloga mojega diplomskega dela je bila razširitev programa Neck Veins z možnostjo branja datotek, v katerih je zapisan 3D objekt in konstruiranje tega objekta s pomočjo algoritmov, ki so opisani v prejšnih poglavjih. Segmentacija je bila najprej implementirana v jeziku Java, v katerem je napisan tudi program Neck Veins. Zaradi počasnosti je bila prenesena na grafično kartico z uporabo OpenCL APIja. Zaradi lažje implementacije algoritmov in lažjega odpravljanja napak, je bila segmentacija prvotno implementirana kot ločen program, ki je omogočil samo branje datotek ter konstruiranje objektov ter pisanje v.obj datoteko. Naknadno je bila dodana v program Neck Veins, kjer je mogoče klicanje funkcij s pomočjo grafičnega vmesnika Postopek obdelave in prikaz Celoten postopek obdelave je razdeljen na tri glavne dele. To so branje podatkov, segmentacija in prikaz modela. Celoten postopek je prikazan na sliki 4.1. Program dobi vhodne podatke v obliki dveh datotek. Datoteka s končnico.mhd, kjer so zapisani meta podatki o 3D volumnu in datoteka, v katerem je zapisan 3D volumen v obliki zaporedja števil. Najprej preberemo meta podatke: velikost 3D volumna za vsako dimenzijo posebej, orientacijo, tip vrednosti podatkov, v kateri datoteki se volumen nahajajo ipd. Nato se iz datoteke, kjer je zapisan 3D volumen, preberejo vrednosti v pomnilnik.

50 POGLAVJE IMPLEMENTACIJA SEGMENTACIJE V PROGRAMU NECK VEINS Slika 4.1: Shema postopka Ko je branje podatkov končano, se začne postopek segmentacije. Ustvari se OpenCL kontekst in podatki se prenesejo na grafično kartico. Glede na izbrane nastavitve uporabnika se nato izvedejo algoritmi. Najprej se izvede Gaussovo glajenje, da odpravimo šumne podatke. Nato se izvede Otsujeva metoda za iskanje praga. Nazadnje se poiščejo vsi trikotniki z algoritmom Marching cubes. Tu se zaključi delo na grafični kartici, počistijo se vsi viri na grafični kartici in podatki o trikotnikih se prenesejo v glavni program. V glavnem programu se izvede algoritem za iskanje povezanih objektov. Nefiltrirani objekti se nato pošljejo za prikaz. Trikotnike se prikaže z že implementiranimi metodami programa Neck Veins. Ker se za prikaz trikotnikov uporablja grafična kartica, to pomeni, da se trikotniki nepotrebno prenašajo iz grafične kartice v glavni program in nato zopet na grafično kartico. Možno bi bilo prikazati trikotnike direktno na grafični kartici takoj po segmentaciji. S tem bi pohitrili celoten postopek obdelave.

51 4.4. DODAJANJE SEGMENTACIJE V PROGRAM Grafični vmesnik Grafični vmesnik uporabniku omogoča enostavnejšo uporabo programov in delo z njimi. Za delovanje segmentacije sem v program Neck Veins dodal manjši grafični vmesnik. Grafični vmesnik za uporabo segmentacije je bil dodan v oknu za odpiranje datotek in v glavnem oknu programa Neck Veins. Ko uporabnik odpre okno za izbiro vhodne datoteke, pod oknom za pogled na datoteke vidi drsnik za izbiro vrednosti sigma Gaussovega glajenja in možnost izbire stopnje praga (glej sliko 4.2). Poleg drsnika za Gaussovo glajenje se nahaja gumb, s katerim lahko uporabnik izključi ali vključi funkcijo za Gaussovo glajenje. Poleg drsnika za prag je možnost za nastavitev avtomatskega praga z uporabo Otsujeve metode. Izbira vrednosti je mogoča le, če ima trenutno izbrana datoteka končnico.mhd. Ko uporabnik nastavi želene vrednosti in pritisne gumb Odpri (angl. Open), se zažene program za segmentacijo. Rezultat algoritma se prikaže v glavnem oknu. Poleg tega se pojavi drsnik za dinamično izbiro praga in možnost izbire minimalnega števila trikotnikov za filtriranje premajhnih objektov (glej sliko 4.3). V glavnem oknu lahko spremenimo prag. Ob pritisku gumba Uporabi (angl. Apply) se ponovno zažene segmentacija z novo nastavljenim pragom in v glavnem oknu opazimo isti 3D model z drugim pragom. Ko smo zadovoljni z izbranim pragom, lahko objekt izvozimo v datoteko.obj, ki jo kasneje ponovno uporabimo.

52 POGLAVJE IMPLEMENTACIJA SEGMENTACIJE V PROGRAMU NECK VEINS Slika 4.2: Izbira praga in vrednosti sigma v oknu za izbiro vhodne datoteke

53 4.4. DODAJANJE SEGMENTACIJE V PROGRAM 37 Slika 4.3: Izbira praga in minimalnega števila trikotnikov komponent v glavnem oknu

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Programirljivi Digitalni Sistemi Digitalni sistem Digitalni sistemi na integriranem vezju Digitalni sistem

Prikaži več

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni RAM stroj Nataša Naglič 4. junij 2009 1 RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni trak, pomnilnik ter program. Bralni trak- zaporedje

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Osnove jezika VHDL Strukturno načrtovanje in testiranje Struktura vezja s komponentami

Prikaži več

Slide 1

Slide 1 Tehnike programiranja PREDAVANJE 10 Uvod v binarni svet in računalništvo (nadaljevanje) Logične operacije Ponovitev in ilustracija Logične operacije Negacija (eniški komplement) Negiramo vse bite v besedi

Prikaži več

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje priročno programsko okolje tolmač interpreter (ne prevajalnik)

Prikaži več

Microsoft Word - avd_vaje_ars1_1.doc

Microsoft Word - avd_vaje_ars1_1.doc ARS I Avditorne vaje Pri nekem programu je potrebno izvršiti N=1620 ukazov. Pogostost in trajanje posameznih vrst ukazov računalnika sta naslednja: Vrsta ukaza Štev. urinih period Pogostost Prenosi podatkov

Prikaži več

Microsoft Word - CNC obdelava kazalo vsebine.doc

Microsoft Word - CNC obdelava kazalo vsebine.doc ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo mesto, april 2008 Ime in priimek študenta ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo

Prikaži več

Numericno reševanje valovne enacbe z graficno procesno enoto

Numericno reševanje valovne enacbe z graficno procesno enoto Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matic Tribušon Numerično reševanje valovne enačbe z grafično procesno enoto DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

Prikaži več

Diapozitiv 1

Diapozitiv 1 9. Funkcije 1 9. 1. F U N K C I J A m a i n () 9.2. D E F I N I C I J A F U N K C I J E 9.3. S T A V E K r e t u r n 9.4. K L I C F U N K C I J E I N P R E N O S P A R A M E T R O V 9.5. P R E K R I V

Prikaži več

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja 3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja AV k = V k H k + h k+1,k v k+1 e T k = V kh k+1,k.

Prikaži več

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar 2009 1 Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero velja 0 f(e) u(e) za e E(G). Za v V (G) definiramo presežek

Prikaži več

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefonih. Obstaja precej različic, sam pa sem sestavil meni

Prikaži več

Orodje za izvoz podatkov

Orodje za izvoz podatkov Pomoč uporabnikom -NA-SI-200, V6.13-00 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod... 1 2 Predstavitev orodja za izvoz podatkov...

Prikaži več

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA Navdih Poizvedovanje po BD podatkovnih virih, ki imajo časovno dimenzijo in so dostopni. Večji promet pomeni večje število dobrin in močnejšo

Prikaži več

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) in za vsako napisati svojo kodo. Dve ikoni imata isto

Prikaži več

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvantnih celičnih avtomatov SEMINARSKA NALOGA Univerzitetna

Prikaži več

UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Katja Ciglar Analiza občutljivosti v Excel-u Seminarska naloga pri predmetu Optimizacija v fina

UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Katja Ciglar Analiza občutljivosti v Excel-u Seminarska naloga pri predmetu Optimizacija v fina UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Katja Ciglar Analiza občutljivosti v Excel-u Seminarska naloga pri predmetu Optimizacija v financah Ljubljana, 2010 1. Klasični pristop k analizi

Prikaži več

COBISS3/Medknjižnična izposoja

COBISS3/Medknjižnična izposoja 3/Medknjižnična izposoja 2.2 KATALOG Katalog nam omogoča: iskanje gradiva prikaz izbranih bibliografskih zapisov ali pripadajočih podatkov o zalogi iz lokalne baze podatkov v formatu COMARC vpogled v stanje

Prikaži več

Strojna oprema

Strojna oprema Asistenta: Mira Trebar, Miha Moškon UIKTNT 2 Uvod v programiranje Začeti moramo razmišljati algoritmično sestaviti recept = napisati algoritem Algoritem za uporabo poljubnega okenskega programa. UIKTNT

Prikaži več

Slide 1

Slide 1 Projektno vodenje PREDAVANJE 7 doc. dr. M. Zajc matej.zajc@fe.uni-lj.si Projektno vodenje z orodjem Excel Predstavitev Najbolj razširjeno orodje za delo s preglednicami Dva sklopa funkcij: Obdelava številk

Prikaži več

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se velikokrat zmoti. Na srečo piše v programu Microsoft

Prikaži več

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc) MORSE UČENJE PO KOCHOVI METODI Računalniški program za učenje skupaj z nekaterimi dodatnimi datotekami dobite na spletni strani avtorja: http://www.g4fon.net/. Zanimive strani so tudi: - http://www.qsl.net/n1irz/finley.morse.html

Prikaži več

Mere kompleksnih mrež (angl. Network Statistics) - Seminarska naloga pri predmetu Izbrana poglavja iz diskretne matematike

Mere kompleksnih mrež   (angl. Network Statistics) - Seminarska naloga pri predmetu Izbrana poglavja iz diskretne matematike Mere kompleksnih mrež (angl. Network Statistics) Seminarska naloga pri predmetu Izbrana poglavja iz diskretne matematike Ajda Pirnat, Julia Cafnik in Živa Mitar Fakulteta za matematiko in fiziko April

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : ržavni izpitni center *M15178112* SPOMLNSKI IZPITNI ROK Izpitna pola 2 Četrtek, 4. junij 2015 / 90 minut ovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero ali

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: 17.07.2013 Ver. 2.9.1.2 Spletni portal članov uporabniška navodila

Prikaži več

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX 3.5 1. Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nastavitve strežnika ESX 3. Namestitev in nastavitve VM

Prikaži več

ANALITIČNA GEOMETRIJA V RAVNINI

ANALITIČNA GEOMETRIJA V RAVNINI 3. Analitična geometrija v ravnini Osnovna ideja analitične geometrije je v tem, da vaskemu geometrijskemu objektu (točki, premici,...) pridružimo števila oz koordinate, ki ta objekt popolnoma popisujejo.

Prikaži več

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf uporaba for zanke i iz korak > 0 oblika zanke: for i iz : korak : ik NE i ik DA stavek1 stavek2 stavekn stavek1 stavek2 stavekn end i i + korak I&: P-XI/1/17 uporaba for zanke i iz korak < 0 oblika zanke:

Prikaži več

DES

DES Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Digitalni sistemi Vgrajeni digitalni sistemi Digitalni sistem: osebni računalnik

Prikaži več

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: +386 1 729 6 460 Faks.: +386 1 729 6 466 www.nevtrin.si info@elektrina.si USB RFID READER Navodila za uporabo?

Prikaži več

VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC

VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC Državni zbor v številkah 90 poslancev 9 + 1 poslanska skupina 150+ mobilnih naprav (OS Android, ios) 500+ internih uporabnikov, 650+ osebnih računalnikov, 1100+

Prikaži več

DES11_realno

DES11_realno Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Delovanje realnega vezja Omejitve modela vezja 1 Model v VHDLu je poenostavljeno

Prikaži več

EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Mi

EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Mi EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Miklavič 30. okt. 2003 Math. Subj. Class. (2000): 05E{20,

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be Ime in priimek: Vpisna št: FAKULEA ZA MAEMAIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6 julij 2018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Za pozitiven rezultat

Prikaži več

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika Gimnazija Bežigrad Peričeva 4 1000 Ljubljana OPERACIJSKI SISTEM Predmet: informatika KAZALO 1. Uvod...3 2. Predstavitev programa Windows 98...5 3. Raziskovanje računalnika...5 4. Raziskovanje Interneta...6

Prikaži več

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajanje prekinitvene rutine Dogodek GLAVNI PROGRAM (MAIN-OB1)

Prikaži več

Microsoft Word - SI_vaja1.doc

Microsoft Word - SI_vaja1.doc Univerza v Ljubljani, Zdravstvena fakulteta Sanitarno inženirstvo Statistika Inštitut za biostatistiko in medicinsko informatiko Š.l. 2011/2012, 3. letnik (1. stopnja), Vaja 1 Naloge 1. del: Opisna statistika

Prikaži več

Microsoft Word - UP_Lekcija04_2014.docx

Microsoft Word - UP_Lekcija04_2014.docx 4. Zanka while Zanke pri programiranju uporabljamo, kadar moramo stavek ali skupino stavkov izvršiti večkrat zaporedoma. Namesto, da iste (ali podobne) stavke pišemo n-krat, jih napišemo samo enkrat in

Prikaži več

Navodila Trgovina iCenter

Navodila Trgovina iCenter Napredovanja v plačne razrede javnih uslužbencev 2019 S pomočjo SAOP programa Kadrovska evidenca lahko ob dokupljeni kodi vodimo napredovanja javnih uslužbencev. Za napredovanja v letu 2019 je potrebno

Prikaži več

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov Gospodarski subjekti Definicija: V skladu z 2. členom Izvedbene uredbe Komisije (EU) 2018/574

Prikaži več

Datum in kraj

Datum in kraj Ljubljana, 5. 4. 2017 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Pedagoško računalništvo in informatika 2017/2018 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI

Prikaži več

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015 Mladi za napredek Maribora 015 3. srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 015 Kazalo 1. Povzetek...3. Uvod...4 3. Spirala 1...5 4. Spirala...6 5. Spirala 3...8 6. Pitagorejsko drevo...10

Prikaži več

Zadeva: Ponudba

Zadeva: Ponudba Navodila za urejanje Spletne strani CTEK.si 1. Dodajanje novega polnilnika Za dodajanje novega polnilnika nikoli ne prepisujte že objavljenih vsebin, ampak sledite tem navodilom. Ta so zagotovilo, da bodo

Prikaži več

7. VAJA A. ENAČBA ZBIRALNE LEČE

7. VAJA A. ENAČBA ZBIRALNE LEČE 7. VAJA A. ENAČBA ZBIRALNE LEČE 1. UVOD Enačbo leče dobimo navadno s pomočjo geometrijskih konstrukcij. V našem primeru bomo do te enačbe prišli eksperimentalno, z merjenjem razdalj a in b. 2. NALOGA Izračunaj

Prikaži več

resitve.dvi

resitve.dvi FAKULTETA ZA STROJNISTVO Matematika Pisni izpit. junij 22 Ime in priimek Vpisna st Navodila Pazljivo preberite besedilo naloge, preden se lotite resevanja. Veljale bodo samo resitve na papirju, kjer so

Prikaži več

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo Turingov stroj in programiranje Barbara Strniša 12. 4. 2010 1 Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolov (običajno Σ 2) Σ n = {s 1 s 2... s n ; s i Σ, i =

Prikaži več

Microsoft PowerPoint - Java_spremenljivke

Microsoft PowerPoint - Java_spremenljivke Java Spremenljivke, prireditveni stavek Spremenljivke Prostor, kjer hranimo vrednosti Ime Znak, števka, _ Presledkov v imenu ne sme biti! Tip spremenljivke int (cela števila) Vse spremenljivke napovemo

Prikaži več

Diapozitiv 1

Diapozitiv 1 Vhodno izhodne naprave Laboratorijska vaja 4 - AV 4 Linije LTSpice, simulacija elektronskih vezij VIN - LV 1 Rozman,Škraba, FRI LTSpice LTSpice: http://www.linear.com/designtools/software/ https://www.analog.com/en/design-center/design-tools-andcalculators/ltspice-simulator.html

Prikaži več

Diapozitiv 1

Diapozitiv 1 Računalništvo in informatika Program: Mehatronika dr. Hubert Fröhlich, univ. dipl. el. Podatkovne baze 2 Podatkovne baze Podatki osnova za odločanje in izvajanje akcij tiskana oblika elektronska oblika

Prikaži več

Slikovne transformacije_2017_18_DKT

Slikovne transformacije_2017_18_DKT DEJAVNIKI KAKOVOSTI V TISKU Deja Muck Pri obdelavi digitalnih slik se večinoma srečujamo s slikami v prostorski domeni, a določeni postopki, npr. filtriranje, lahko potekajo tudi v t. i. frekvenčni domeni.

Prikaži več

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski naslov: podpora@coks.si

Prikaži več

FGG13

FGG13 10.8 Metoda zveznega nadaljevanja To je metoda za reševanje nelinearne enačbe f(x) = 0. Če je težko poiskati začetni približek (še posebno pri nelinearnih sistemih), si lahko pomagamo z uvedbo dodatnega

Prikaži več

Osnove matematicne analize 2018/19

Osnove matematicne analize  2018/19 Osnove matematične analize 2018/19 Neža Mramor Kosta Fakulteta za računalništvo in informatiko Univerza v Ljubljani Funkcija je predpis, ki vsakemu elementu x iz definicijskega območja D f R priredi natanko

Prikaži več

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat:

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat: Zavod sv. Stanislava Škofijska klasična gimnazija Program za računanje Maturitetna seminarska naloga iz informatike Kandidat: Tinkara Čadež Mentor: Helena Starc Grlj Ljubljana Šentvid, april 2019 POVZETEK

Prikaži več

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI IZUM, 2015 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod... 1 2 Uporaba tiskalnika...

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : Državni izpitni center *M17178111* SPOMLADANSKI IZPITNI ROK Izpitna pola 1 Četrtek, 1. junij 2017 / 90 minut Dovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero

Prikaži več

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov 4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenovalec, ter iz ulomkove črte. Racionalna števila so števila,

Prikaži več

Optimizacija z roji delcev - Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije

Optimizacija z roji delcev - Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije Univerza v Ljubljani Fakulteta za matematiko in fiziko Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije 2. junij 2011 Koncept PSO Motivacija: vedenje organizmov v naravi Ideja: koordinirano

Prikaži več

Osnove statistike v fizični geografiji 2

Osnove statistike v fizični geografiji 2 Osnove statistike v geografiji - Metodologija geografskega raziskovanja - dr. Gregor Kovačič, doc. Bivariantna analiza Lastnosti so med sabo odvisne (vzročnoposledično povezane), kadar ena lastnost (spremenljivka

Prikaži več

Microsoft PowerPoint - Objekti_gradnja.ppt

Microsoft PowerPoint - Objekti_gradnja.ppt Naredimo razred Katera so stanja/lastnosti Kaj hočemo o objektih te vrste vedeti Kakšne lastnosti imajo Katere so metode Kakšno je znanje objektov Na katere ukaze se odzovejo Način predstavitve lastnosti

Prikaži več

DES

DES Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Model vezja Računalniški model in realno vezje Model logičnega negatorja Načini

Prikaži več

NAVODILA AVTORJEM PRISPEVKOV

NAVODILA AVTORJEM PRISPEVKOV Predmetna komisija za nižji izobrazbeni standard matematika Opisi dosežkov učencev 6. razreda na nacionalnem preverjanju znanja Slika: Porazdelitev točk pri matematiki (NIS), 6. razred 1 ZELENO OBMOČJE

Prikaži več

ISOFT , računalniški inženiring

ISOFT , računalniški inženiring ISOFT, računalniški inženiring Marko Kastelic s.p. Sad 2, 1296 Šentvid pri stični Spletna stran podjetja:http://www.isoft.si podjetja ISOFT Spletna stran sistema sledenja vozil track.si: http://www.track.si

Prikaži več

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / 24. 5. 2019 Uradni list Republike Slovenije PRILOGA 1 PRAVILA ZA OBLIKOVANJE

Prikaži več

AKCIJSKO RAZISKOVANJE INOVACIJSKI PROJEKT ZA ZNANJE IN SPOŠTOVANJE Udeleženci: Učenci 2. c Razredničarka: Irena Železnik, prof. Učni predmet: MAT Učna

AKCIJSKO RAZISKOVANJE INOVACIJSKI PROJEKT ZA ZNANJE IN SPOŠTOVANJE Udeleženci: Učenci 2. c Razredničarka: Irena Železnik, prof. Učni predmet: MAT Učna AKCIJSKO RAZISKOVANJE INOVACIJSKI PROJEKT ZA ZNANJE IN SPOŠTOVANJE Udeleženci: Učenci 2. c Razredničarka: Irena Železnik, prof. Učni predmet: MAT Učna vsebina: Ustno seštevanje in odštevanje do 20 sprehodom

Prikaži več

Microsoft Word - Seštevamo stotice.doc

Microsoft Word - Seštevamo stotice.doc UČNA PRIPRAVA: MATEMATIKA UČNI SKLOP: Računske operacije UČNA TEMA: Seštevamo in odštevamo stotice Seštevamo stotice UČNE METODE: razlaga, prikazovanje, demonstracija, grafično in pisno delo UČNE OBLIKE:

Prikaži več

PowerPoint Presentation

PowerPoint Presentation Napovedno oglaševanje Kombiniranje internih in eksternih podatkov za boljšo učinkovitost oglaševanja Miloš Suša, iprom Andraž Zorko, Valicon Mojca Pesendorfer, Atlantic Grupa Ljubljana, 22.10.2018 PREDIKTIVNO

Prikaži več

ARS1

ARS1 Nepredznačena in predznačena cela števila Dvojiški zapis Nepredznačeno Predznačeno 0000 0 0 0001 1 1 0010 2 2 0011 3 3 Pri odštevanju je stanje C obratno (posebnost ARM)! - če ne prekoračimo 0 => C=1 -

Prikaži več

'Kombinatoricna optimizacija / Lokalna optimizacija'

'Kombinatoricna optimizacija / Lokalna optimizacija' Kombinatorična optimizacija 3. Lokalna optimizacija Vladimir Batagelj FMF, matematika na vrhu različica: 15. november 2006 / 23 : 17 V. Batagelj: Kombinatorična optimizacija / 3. Lokalna optimizacija 1

Prikaži več

FGG14

FGG14 Iterativne metode podprostorov Iterativne metode podprostorov uporabljamo za numerično reševanje linearnih sistemov ali računanje lastnih vrednosti problemov z velikimi razpršenimi matrikami, ki so prevelike,

Prikaži več

Oblikovanje in razvijanje spletnih strani

Oblikovanje in razvijanje spletnih strani Uporabniški vmesnik načrtovanje in izdelava Interaktivni mediji Doc. dr. Aleš Hladnik Načrtovanje uporabniškega vmesnika (UV) Načrtovanje oz. zasnova UV (User( interface design or engineering) je načrtovanje

Prikaži več

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA KATALOG ZNANJA 1. IME PREDMETA ZBIRKE PODATKOV I ZBIRKE PODATKOV II 2. SPLOŠNI CILJI Splošni cilji predmeta so: razvijanje sposobnosti za uporabo znanstvenih metod in sredstev, razvijanje odgovornosti

Prikaži več

PowerPointova predstavitev

PowerPointova predstavitev Dostopnost elektronskih virov za slepe, slabovidne in druge osebe z motnjami branja Kristina Janc ZSSML - 27. Seja TIFLO sekcije 22.3.2012 Možnost izkoriščanja elektronskih virov za slepe, slabovidne in

Prikaži več

Matematika 2

Matematika 2 Matematika 2 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 23. april 2014 Soda in liha Fourierjeva vrsta Opomba Pri razvoju sode periodične funkcije f v Fourierjevo vrsto v razvoju nastopajo

Prikaži več

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi Kemijska tehnologija, Kemija Bolonjski univerzitetni program Smer: KT K WolframA: DA NE Računski del izpita pri predmetu MATEMATIKA I 6. 2. 2014 Čas reševanja je 75 minut. Navodila: Pripravi osebni dokument.

Prikaži več

STAVKI _5_

STAVKI _5_ 5. Stavki (Teoremi) Vsebina: Stavek superpozicije, stavek Thévenina in Nortona, maksimalna moč na bremenu (drugič), stavek Tellegena. 1. Stavek superpozicije Ta stavek določa, da lahko poljubno vezje sestavljeno

Prikaži več

Verjetnost in vzorčenje: teoretske porazdelitve standardne napake ocenjevanje parametrov as. dr. Nino RODE prof. dr. Blaž MESEC

Verjetnost in vzorčenje: teoretske porazdelitve standardne napake ocenjevanje parametrov as. dr. Nino RODE prof. dr. Blaž MESEC Verjetnost in vzorčenje: teoretske porazdelitve standardne napake ocenjevanje parametrov as. dr. Nino RODE prof. dr. Blaž MESEC VERJETNOST osnovni pojmi Poskus: dejanje pri katerem je izid negotov met

Prikaži več

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite vzorčne strani iz DELOVNIH LISTOV 1 v štirih delih

Prikaži več

ACAD-BAU-Analiza-prostorov

ACAD-BAU-Analiza-prostorov ANALIZA PROSTOROV Ko obdelujemo večje projekte, je analiza prostorov zelo pomembna v vseh fazah projektiranja. Pri idejnem snovanju moramo npr. za določeno površino trgovske namembnosti zagotoviti primerno

Prikaži več

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk 1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatkov in njihov prenos med spletnimi mesti. Obrazec v

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31 avgust 018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Za pozitiven

Prikaži več

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah O opozorilih OPOZORILO: OPOZORILO označuje možnost poškodb lastnine, telesnih poškodb ali smrti. Dell Vostro 430 List s tehničnimi informacijami o nastavitvi in funkcijah Pogled s sprednje in zadnje strani

Prikaži več

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij Kazalo 1 DVOMESTNE RELACIJE 1 1.1 Operacije z dvomestnimi relacijami...................... 2 1.2 Predstavitev relacij............................... 3 1.3 Lastnosti relacij na dani množici (R X X)................

Prikaži več

Vaja04_Ver02

Vaja04_Ver02 Vaja 04 Varnost: Zaščita aplikacije, omejitev dostopa 1. Uredite prijavo in odjavo uporabnika brez uporabe menuja Special/Security. Nadgradite aplikacijo iz vaje 2. Kreirajte okno tipa Replace Začetno

Prikaži več

FAKULTETA ZA STROJNIŠTVO Matematika 2 Pisni izpit 9. junij 2005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite bese

FAKULTETA ZA STROJNIŠTVO Matematika 2 Pisni izpit 9. junij 2005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite bese FAKULTETA ZA STROJNIŠTVO Matematika Pisni izpit 9. junij 005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja. Veljale bodo

Prikaži več

Avtomatizirano modeliranje pri celostnem upravljanju z vodnimi viri

Avtomatizirano modeliranje pri celostnem upravljanju z vodnimi viri Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo 36. Goljevščkov spominski dan Modeliranje kroženja vode in spiranja hranil v porečju reke Pesnice Mateja Škerjanec 1 Tjaša Kanduč 2 David Kocman

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5 februar 018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Nalog je

Prikaži več

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte Navodila za uporabo programske opreme OTRS verzija 2.2.3 Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski

Prikaži več

Microsoft Word - vaje2_ora.doc

Microsoft Word - vaje2_ora.doc II UKAZI 1. Napišite zaporedje ukazov, ki vrednost enobajtne spremenljivke STEV1 prepiše v enobajtno spremenljivko STEV2. Nalogo rešite z neposrednim naslavljanjem (zaporedje lahko vsebuje le 2 ukaza v

Prikaži več

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr NAVODILA ZA UPORABO Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta in jih shranite za prihodnjo rabo Vsebina 1. Pregled 2. Sistem 3. Prednosti 4. Upravljanje

Prikaži več

Ime in priimek

Ime in priimek Polje v osi tokovne zanke Seminar pri predmetu Osnove Elektrotehnike II, VSŠ (Uporaba programskih orodij v elektrotehniki) Ime Priimek, vpisna številka, skupina Ljubljana,.. Kratka navodila: Seminar mora

Prikaži več

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površe, pri tem pa zbrati čim več točk. Podobno igro najdemo tudi v knjigi Scratch (Lajovic, 2011), vendar

Prikaži več

Slide 1

Slide 1 Vsak vektor na premici skozi izhodišče lahko zapišemo kot kjer je v smerni vektor premice in a poljubno število. r a v Vsak vektor na ravnini skozi izhodišče lahko zapišemo kot kjer sta v, v vektorja na

Prikaži več

Na podlagi 24. in 25. člena Zakona o varstvu osebnih podatkov (Ur. list RS, št. 94/07), sprejema ravnatelj javnega zavoda Dijaški dom Nova Gorica nasl

Na podlagi 24. in 25. člena Zakona o varstvu osebnih podatkov (Ur. list RS, št. 94/07), sprejema ravnatelj javnega zavoda Dijaški dom Nova Gorica nasl Na podlagi 24. in 25. člena Zakona o varstvu osebnih podatkov (Ur. list RS, št. 94/07), sprejema ravnatelj javnega zavoda Dijaški dom Nova Gorica naslednji P RAVILNIK o izvajanju videonadzora I. SPLOŠNE

Prikaži več

Microsoft Word - A-3-Dezelak-SLO.doc

Microsoft Word - A-3-Dezelak-SLO.doc 20. posvetovanje "KOMUNALNA ENERGETIKA / POWER ENGINEERING", Maribor, 2011 1 ANALIZA OBRATOVANJA HIDROELEKTRARNE S ŠKOLJČNIM DIAGRAMOM Klemen DEŽELAK POVZETEK V prispevku je predstavljena možnost izvedbe

Prikaži več

Navodila za uporabo Mini snemalnik

Navodila za uporabo Mini snemalnik Navodila za uporabo Mini snemalnik www.spyshop.eu Pred vami so navodila za pravilno uporabo mini snemalnika in opis funkcionalnosti. Lastnosti snemalnika: Naziv Mere Teža Kapaciteta spomina Snemanje Format

Prikaži več

Diapozitiv 1

Diapozitiv 1 RAČUNALNIŠKA ARHITEKTURA 9 Pomnilniška hierarhija RA - 9 2018, Škraba, Rozman, FRI Pomnilniška hierarhija - vsebina 9 Pomnilniška hierarhija - cilji: Osnovno razumevanje : Lokalnosti pomnilniških dostopov

Prikaži več

Microsoft Word - M doc

Microsoft Word - M doc Državni izpitni center *M11145113* INFORMATIKA SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Petek, 10. junij 2011 SPLOŠNA MATURA RIC 2011 2 M111-451-1-3 IZPITNA POLA 1 1. b 2. a 3. Pojem se povezuje

Prikaži več