FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA. Tadas Kazakevičius

Size: px
Start display at page:

Download "FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA. Tadas Kazakevičius"

Transcription

1 VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA Tadas Kazakevičius GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE FAST AND ACCURATE OBJECT PARAMETERS DETECTION IN MACHINE VISION SYSTEM Baigiamasis magistro darbas Informacinės technologijos, valstybinis kodas 6247T14 Erdvinės informacinės sistemos Informatikos inžinerija Vilnius, 211

2 VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA Tadas Kazakevičius TVIRTINU Katedros vedėjas (Parašas) Romualdas Baušys (Vardas, pavardė) (Data) GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE FAST AND ACCURATE OBJECT PARAMETERS DETECTION IN MACHINE VISION SYSTEM Baigiamasis magistro darbas Informacinių technologijų studijų programa, valstybinis kodas 6247T14 Erdvinės informacinės sistemos Informatikos inžinerija Vadovas dr. Rytė Žiūrienė (Moksl. laipsnis, vardas, pavardė) (Parašas) (Data) Konsultantas doc. dr. Angelė Kaulakienė (Moksl. laipsnis, vardas, pavardė) (Parašas) (Data) Vilnius, 211

3 VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA Informatikos inžinerijos studijų kryptis Informacinių technologijų studijų programa, valstybinis kodas 6247T14 Erdvinių informacinių sistemų specializacija TVIRTINU Katedros vedėjas (Parašas) Romualdas Baušys (Vardas, pavardė) (Data) Studentui Tadui Kazakevičiui BAIGIAMOJO MAGISTRO DARBO UŽDUOTIS...Nr.... Vilnius Baigiamojo darbo tema: Greitas ir tikslus objekto parametrų nustatymas mašininės regos sistemose patvirtinta 21 m. balandžio 29 d. dekano potvarkiu Nr. 333 fm Baigiamojo darbo užbaigimo terminas 211 m. gegužės 24 d. BAIGIAMOJO DARBO UŽDUOTIS: 1. Ištyrinėti mašininėje regoje taikomus objekto pozicijos nustatymo metodus, jų privalumus ir trūkumus. 2. Išanalizuoti ir nustatyti grafinių vaizdo plokščių pritaikomumą vaizdams apdoroti. 3. Remiantis analizės dalimi suformuoti ir įgyvendinti metodą, tinkantį greitai ir tiksliai nustatyti objekto poziciją. 4. Nustatyti įgyvendinto metodo privalumus ir trūkumus. Baigiamojo darbo rengimo konsultantai: doc. dr. Angelė Kaulakienė (Moksl. laipsnis/pedag. vardas, vardas, pavardė) Vadovas... dr. Rytė Žiūrienė (Parašas) (Moksl. laipsnis, vardas, pavardė) Užduotį gavau.. (Parašas) Tadas Kazakevičius (Vardas, pavardė)..... (Data)

4 VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA Informatikos inžinerijos studijų kryptis Informacinių technologijų studijų programa, valstybinis kodas 6247T14 Erdvinių informacinių sistemų specializacija PAŽYMA APIE BAIGIAMĄJĮ MAGISTRO DARBĄ...Nr.... Vilnius Studentas (ė) Tadas Kazakevičius Studento (ės) studijų svertinis įvertinimų vidurkis balo. Baigiamojo darbo tema: Greitas ir tikslus objekto parametrų nustatymas mašininės regos sistemose Baigiamasis darbas peržiūrėtas ir studentui (ei) Tadui Kazakevičiui leidžiama ginti šį baigiamąjį darbą magistro laipsnio suteikimo komisijoje. Katedros vedėjas prof. habil. dr. Romualdas Baušys (Parašas) (Moksl. laipsnis, vardas, pavardė) VADOVO ATSILIEPIMAS APIE BAIGIAMĄJĮ MAGISTRO DARBĄ Vadovas dr. Rytė Žiūrienė (Parašas) (Moksl. laipsnis, vardas, pavardė)

5 VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA RECENZIJA APIE BAIGIAMĄJĮ MAGISTRO DARBĄ...Nr.... Vilnius Studentas(ė) Tadas Kazakevičius parengė baigiamąjį magistro darbą tema: Greitas ir tikslus objekto parametrų nustatymas mašininės regos sistemose RECENZIJA Magistro laipsnio suteikimo komisijos narys (Parašas).. (Moksl. laipsnis, vardas, pavardė)

6 Vilniaus Gedimino technikos universitetas Fundamentinių mokslų fakultetas Grafinių sistemų katedra ISBN Egz. sk. Data ISSN Informacinių technologijų studijų programos baigiamasis magistro darbas Pavadinimas Greitas ir tikslus objekto parametrų nustatymas mašininės regos sistemose Autorius Tadas Kazakevičius Vadovė. dr. Rytė Žiūrienė Kalba X lietuvių užsienio Anotacija Objekto atpažinimas ir pozicijos nustatymas gali būti pritaikomas daugeliui pramonėje egzistuojančių uždavinių. Šio darbo pagrindinis tikslas yra sukurti mašininės regos sistemą, kuria būtų galima greitai ir tiksliai rasti objekto poziciją pagal pasirinktą objekto modelį. Šiame darbe gilinamasi į GPU veikimo principus ir privalumus apdorojant vaizdus GLSL programavimo kalba. Apžvelgiami praktikoje taikomų metodų, skirtų objekto pozicijai nustatyti, veikimo principai, jų privalumai ir trūkumai. Taip pat šiame darbe aprašomas suformuotas ir įgyvendintas realaus laiko metodas, naudojantis GPU teikiama sparta atlikti vartotojo pasirinkto modelio paiešką. Pabaigoje pateikiami pasiekti įgyvendinto metodo spartos rodikliai, privalumai ir trūkumai. Darbą sudaro: įvadas, mašininėje regoje pasitaikančių problemų tyrinėjimas, objekto paieškos metodų apžvalga, darbo su grafinėmis vaizdo plokštėmis privalumai ir trūkumai, objekto paieškos su grafine vaizdo plokšte metodas, pasiekti rezultatai, išvados ir literatūros sąrašas. Darbo apimtis 53 p. teksto be priedų, 3 pav., 2 lent., 26 literatūros šaltiniai. Prasminiai žodžiai: mašininė rega, objekto atpažinimas, šablono paieška, vaizdo apdorojimas su GPU.

7 Vilnius Gediminas Technical University Fundamentals sciences faculty Graphical systems department ISBN ISSN Number of copies Date Information Technologies study programme master thesis. Title: Fast and accurate object parameters detection in machine vision system Author Tadas Kazakevičius Academic supervisor dr. Rytė Žiūrienė Thesis language X Lithuanian Foreign (English) Annotation Object recognition and parameter detection could be used in many areas from electronics to food industry. One of the most important problems in laser industry is to transform laser work trajectories based on constant object model. In the real life applications model could be rotated or translated due to the fact that object must be put in laser work area. The translation and rotation of object must be found to fit user defined constant model. There are many methods for object parameters detection, but image processing tasks require a lot of computing power. Recent research on image processing with graphics processing units - GPU, shows huge performance results compared with central processing units CPU. The purpose of this work is to find out the main fundamentals for fast and accurate object parameter detection in machine vision systems. In this work it is focused on object parameter detection with GPU. Moreover, the analysis and comparison of different object parameters detection methods are proposed. Object parameter detection system was implemented with C++ and GLSL shading language, thus the system could be adapted to different computer hardware and operating systems. Work size 53 p. text, 3 illustrations, 2 tables, 26 bibliographic sources. Keywords: machine vision, object recognition, template matching, image processing on GPU.

8 Turinys Lentelių sąrašas... 9 Paveikslų sąrašas... 1 Santrumpų sąrašas Įvadas Mašininės regos technologijų ir jose taikomų metodų apžvalga Problematika Sistemos modelis Sistemos paruošimas darbui Objekto paieškos metodai Aplinkos atimties metodas Projekcijos metodas Šablono paieška paremtas metodas Programuojama grafinė įranga GPU veikimas Programavimo kalbos Realaus laiko objekto parametrų radimo metodas Objekto pozicijos nustatymo veikimo schema Metodo realizacija Kontūrų išskyrimas Piramidės sudarymas Šablono paieška Rezultatų suformavimas GPU ir CPU greičio palyginimas Metodo tikslumas Metodo privalumai, trūkumai ir tolesni tyrimai Išvados Literatūra

9 Lentelių sąrašas 2.1 lentelė. Vaizdo procesorių ir centrinių procesorių skaičiavimo galia, naudojama energija ir dydžių santykis lentelė. Canny algoritmo atlikimo laikas su CPU naudojant OpenCV bibioteką ir įgyvendintas vykdymui su GPU metodas

10 Paveikslų sąrašas 1.1 pav. Lazerinio proceso modeliavimas ir vykdymas pav. Išgaubimo efektas (angl. Barrel distortion) pav. Įgaubimo efektas (angl. Pincushion distortion) pav. Kelių lęšių schema pav. Fokusavimas perspektyviniame vaizde pav. Dažniausiai praktikoje aptinkama ir naudojama mašininės regos sistema objekto parametrams nustatyti ir panaudoti pav. Sistema, kai kamera stebi objektą iš šono pav. Perspektyva deformuotas objekto vaizdas (kairėje) ir atkurtas perspektyva deformuotas vaizdas (dešinėje) pav. Kontrasto matavimo metodo schema pav. Aplinkos vaizdo kadras pav. Apvalus objektas su aplinka pav. Aplinkos vaizdo ir apvalaus objekto su aplinka vaizdo kadrų skirtumas skirtuminis vaizdas pav. Apvalaus objekto kaukė, gauta sąlajos ir slenksčio uždėjimo operacijomis pav. Apvaliam objektui su aplinka (2.2 pav.) pritaikyta kaukė (2.4 pav.) pav. Taškų projekcija į vienmatį masyvą pav. Objekto paieška pagal šabloną pav. Grafikos srautas vaizdo procesoriuje pav. Objekto pozicijos nustatymo schema pav. Gradiento ir gradiento krypties (kampo) saugojimas spalvinėse komponentėse pav. Kraštų išskyrimas. A dalis krašto gradientas. B išskirtas objekto kraštas atmetant ne lokalius maksimumus. C A ir B dalies kombinacija rodo išskirtą objekto krašto poziciją ir gradientą pav. Išskirta modelio piramidė pav. Šablono lyginimo rezultatas pav. Rezultatų formavimo proceso metu sudaryta piramidė pav. Rezultatų formavimo proceso pavyzdys pav. Objekto pozicijos nustatymo stabilumo ir tikslumo grafikas pav. Rastas monetos modelis pav. Nustatyta dalinai uždengtos detalės pozicija pav. Nustatyta dalinai uždengtos ir su šešėliu detalės pozicija pav. Atspindys, dėl kurio prarandama dalis objekto kraštų pav. Pritaikyta kraštų išskyrimo operacija 3.12 paveikslėliui

11 Santrumpų sąrašas AOI angl. Area Of Interest aktuali sritis (paveikslėlio) CMOS angl. Complementary Metal Oxide Semiconductor papildomas metalo oksido puslaidininkis CPU angl. Central Processing Unit centrinis procesorius FPGA angl. Field-programmable gate array programuojama sklendžių matrica FPS angl. Frames Per Second kadrai per sekundę GLSL - OpenGL Shading Language OpenGL šešėliavimo kalba GPU angl. Graphics Processing Unit grafinis vaizdo procesorius 11

12 Įvadas Žmogų, kuris vizualiai atlieka konvejeriu keliaujančių dalių kokybės užtikrinimą, rūšiavimą ar kitą operaciją, dažnai gali pakeisti mašininė rega. Mašininę regą galima apibūdinti kaip kompiuterinės regos pritaikymą pramonės automatizavimui. Mašininė rega dažniausiai turi vaizdą fiksuojančią kamerą, kompiuterį ir programinę vaizdo apdorojimo įrangą, kuri analizuoja kameros vaizdus ir pagal atliktą analizę priima sprendimus. Objekto atpažinimas ir pozicijos nustatymas gali būti pritaikomas daugeliui pramonėje egzistuojančių uždavinių: paimti objektą ir perdėti į kitą vietą, nustatyti ir užtikrinti pagaminto gaminio kokybę, surūšiuoti ar suskaičiuoti objektus pagal spalvą, dydį, formą ar kitą savybę. Kadangi keletą metų dirbu lazerių pramonės srityje, todėl šis darbas skirtas vienam iš lazerinės pramonės uždavinių spręsti. Viena iš aktualiausių lazerinės pramonės užduočių - sumodeliuotą graviravimo ar kitą lazerinio apdorojimo algoritmą (trajektorijas) pagal objekto modelį transformuoti taip, kad modelio objektas atitiktų realioje scenoje esantį objektą (1.1 pav.). Tokiu būdu koreguojant objekto veikimo lazeriu trajektorijas galima greitai ir tiksliai atlikti tą pačią lazerinę procedūrą (pvz., užrašo graviravimas, pjovimas, medžiagos pašalinimas) dideliam kiekiui objektų. Objektą į lazerinio apdorojimo zoną galėtų padėti operatorius arba techninis įrenginys robotas, konvejeris. Greitis ir tikslumas yra labai svarbūs bruožai šiuolaikinių pramoninių, ypač precizinių lazerinių, sistemų. Kompiuterinės regos užduotys reikalauja daug kompiuterio išteklių, yra monotoniškos, dažnai panaudoja visą centrinį procesorių (toliau CPU, angl. Central Processing Unit), kad vaizdas būtų apdorotas realiu laiku ir mažai sugaišta CPU laiko atliekant sudėtingas užduotis. Paprastai vaizdų apdorojimo metodai atliekami su centriniu procesoriu, tačiau visai neseniai (apie 25 m.), prasidėjo grafikos vaizdo plokščių (toliau GPU, angl. Graphics Processing Unit) populiarėjimas vaizdams apdoroti dėl išaugusios jų spartos ir programavimo galimybių. Nuo to laiko pasirodė nemažai darbų, rodančių vaizdo plokščių galią apdorojant vaizdus. GPU yra sukurtas darbui su grafiniais primityvais, tarp jų ir paveikslėlio taškais, todėl vaizdo apdorojimas su GPU dažniausiai yra greitesnis nei CPU. Esminis dalykas, kodėl vaizdas greičiau apdorojamas su GPU nei su CPU, tai lygiagreti GPU architektūra, su kuria galima vykdyti net iki kelių tūkstančių operacijų vienu metu, palyginti su dešimtimis ar vienetais tokių pat operacijų su CPU. Šiame darbe buvo vartojama GLSL programavimo kalba, skirta operacijoms su grafinėmis vaizdo plokštėmis vykdyti. Šia kalba kuriami programų moduliai, kompiliuojami ir valdomi (paleidžiami) su OpenGL biblioteka. 12

13 Šio darbo tikslas yra sukurti mašininės regos sistemą, kuri greitai ir tiksliai galėtų detektuoti tokius objekto parametrus: objekto poslinkį koordinačių centro atžvilgiu, objekto pasukimo kampą. Norint pasiekti užsibrėžtą tikslą, reikia atlikti šiuos uždavinius: Ištyrinėti mašininėje regoje taikomus objekto pozicijos nustatymo metodus, jų privalumus ir trūkumus. Išanalizuoti ir nustatyti grafinių vaizdo plokščių pritaikomumą vaizdams apdoroti. Remiantis analizės dalimi suformuoti ir įgyvendinti metodą, tinkantį greitai ir tiksliai nustatyti objekto poziciją. Nustatyti įgyvendinto metodo privalumus ir trūkumus. Praktinis pritaikymas Ši mašininės regos sistema leis pritaikyti lazerines sistemas didelio kiekio objektų itin tiksliam ir greitam apdorojimui lazeriu. Mašininės regos sistema taip pat leis pakeisti labai lėtą procesą - detalės padėjimą ir jos pozicionavimą, kas leis sistemas naudoti daug efektyviau ir sistemos taps patrauklesnės pramoniniams taikymams. Šio darbo pirmame skyriuje apžvelgiama su kokiomis problemomis susiduriama mašininės regos sistemose. Antrame skyriuje tyrinėjami praktikoje taikomi metodai, skirti objekto pozicijai nustatyti, jų veikimo principai, privalumai ir trūkumai. Taip pat analizuojamos galimybės vaizdų apdorojimui panaudoti grafikos procesorių. Trečiame skyriuje aprašomas įgyvendintas objekto paieškos metodas, pateikiami metodo veikimo rezultatai, privalumai, trūkumai ir siūlymai. Baigiamojo darbo metu gauti tyrimų rezultatai pristatyti 14-ojoje Lietuvos jaunųjų mokslininkų konferencijoje Mokslas Lietuvos ateitis, VGTU, Vilnius, balandžio 8 d.,

14 1. Mašininės regos technologijų ir jose taikomų metodų apžvalga 1.1. Problematika Siekiant labai tiksliai pramoniniu būdu išgraviruoti užrašą ar kitaip tiksliai lazeriu paveikti mažą detalę ar jų seriją, turi būti nustatyti labai tikslūs detalės parametrai. Objekto veikimo lazeriu trajektorija dažniausiai sudaroma pagal konkrečios detalės modelį. Turint konkrečios detalės modelį (paveikslėlį) ir mašininės regos sistemą, galinčią atlikti objekto pagal pateiktą modelį paiešką vaizde, galima nustatyti objekto pozicijos pokytį nuo pateikto modelio. Jei objektai yra pastovaus dydžio, užtenka nustatyti tik objekto cento pokytį ir pasisukimo kampą, kad įvedus lazerio trajektorijų korekciją būtų galima atkurti objekto nuokrypį nuo pateikto modelio (1.1 pav.). Modelis Reali scena Modelio pritaikymas realiai scenai y Lazerio koordinačių sistemos ašys y y x x x Objektas Sumodeliuota pagal objektą objekto veikimo lazeriu trajektorija Realus objektas su pasukimu ir pakitusia pozicija Transformuota objekto veikimo lazeriu trajektorija 1.1 pav. Lazerinio proceso modeliavimas ir vykdymas Pramoninėse sistemose reikalaujamas objekto pozicijos nustatymo greitis priklauso nuo konkrečios sistemos. Jei sistema geba per sekundę apdoroti keletą objektų, tai mašininės rega turi veikti sparčiai, kad mašininė rega neribotų įrenginio galimybių, o padėtų įrenginiui sparčiai ir tiksliai apdoroti objektus. Yra lazerinių sistemų, kurios vieno objekto apdorojimui užtrunka kelias valandas, todėl dažniausiai šiose sistemose svarbesnis mašininės regos tikslumas nei greitis. Kadangi sistema kuriama siekiant pritaikyti sistemą pramoniniam naudojimui, tai mašininė rega turi būti labai greita, tiksli, stabili ir universali. Todėl norint itin tiksliai nustatyti objekto 14

15 parametrus (pvz., dydį, perimetrą, objekto kraštą, kontūrą ir t.t.) reikia gauti itin kokybišką objekto vaizdą, kurio kokybė dažnai priklauso nuo daugelio faktorių. Vaizdo kokybę lemiantys veiksniai: Kameros kokybė, išlaikymas, triukšmo lygis, vaizdo jutiklio dydis. Lęšio arba kelių lęšių iškreipiai. Kontrasto aštrumas. Perspektyvinis vaizdas. Apšvietimo lygis ir tolygumas. Objekto paviršius. Vaizdą apdorojantys metodai. Apžvelkime keletą situacijų, kur atsiranda šie iššūkiai mašininės regos sistemose. Vaizdo projektavimui kameros jutiklyje turi būti lęšis. Tačiau šis lęšis dažnai turi trūkumą: radialų iškreipį (angl. radial distortion)(1.2, 1.3 pav.). 1.2 pav. Išgaubimo efektas (angl. Barrel distortion) 1.3 pav. Įgaubimo efektas (angl. Pincushion distortion) Siekiant ištaisyti šiuos iškreipius, naudojama kelių lęšių schema (4 pav.). 1.4 pav. Kelių lęšių schema Tačiau naudojant kelis lęšius, vaizdo iškreipis gali tapti sudėtingesnis už Barelio iškreipį. Tuomet kokybiškam vaizdo deformacijų atkūrimui gali tekti ieškoti transformacijos kiekvienam vaizdo taškui. 15

16 Kitas labai svarbus dalykas, tai vaizdo fokusavimo ir kontrasto aštrumas. Kuo židinys geresnis, tuo aštriau matoma reikiama vaizdo dalis. Ši dalis itin aktuali, kai kamera į subjektą žiūri kampu. Taip gaunamas perspektyvinis vaizdas ir dalis kadro gali būti židinyje, o kita ne (1.5 pav.). Yra nemažai būdų ieškoti didžiausio kameros vaizdo kontrasto, tačiau dėl perspektyvinio vaizdo, didžiausias kontrastas turi būti ieškomas tik reikiamoje dalyje. Kadangi sistema 1.5 pav. Fokusavimas perspektyviniame vaizde turi būti universali, todėl sistemos apdorojami objektai gali kisti. Kintant objektų aukščiui, gali kisti ir kameros fokusavimo aštrumas. Todėl kuriamai sistemai reikalingas automatinis didžiausio kontrasto paieškos radimo metodas. Perspektyvinis vaizdas yra gan nesunkiai ištaisomas, tačiau tai reikalauja nemažai operacijų bei perspektyvinės projekcijos ištaisymo parametrų. Mašininės regos sistemos spartą lemiantys veiksniai: Kameros kadrai per sekundę (angl. Frames Per Second - FPS). Vaizdą apdorojant kompiuteryje, vaizdo patekimo į RAM sparta. Kompiuterio pagrindinės magistralės, CPU arba (ir) GPU sparta. Vaizdo kadro dydis. Vaizdo deformacijos ir jų kiekis. Rezultatui gauti naudojamų metodų skaičius bei jų sparta. Siekiant vaizdo apdorojimo metodus padaryti greitus, dažnai tenka 2D plokštumos atsisakyti, ir nagrinėti tik keletą atskirų vaizdo kadro linijų. Jei naudojama CMOS kamera, dalies kadro atsisakymas mažina vaizdo srauto kiekį ir tai leidžia pasiekti didesnį vaizdo kadrų kiekį per sekundę. CMOS kamera dėl savo veikimo principo turi galimybę paimti tik reikalingą dalį vaizdo. Ši aktuali vaizdo dalis sutrumpintai žymima AOI (angl. Area Of Interest). Sparčiai plintant kelių branduolių procesoriams, seni algoritmai nebeišnaudoja viso procesoriaus galimybių, todėl seni algoritmai turi būti naujai pritaikomi kelių branduolių procesoriams. Naujų greičio galimybių suteikia ir grafinės vaizdo plokštės. Šios plokštės pradedamos pritaikyti ir naudoti, ne tik paruošti vaizdą monitoriui, bet ir apdoroti duomenis ar vaizdus. 16

17 Algoritmų greitis dažnai priklauso nuo vaizdo apdorojimo metodų pasirinkimo bei techninės įrangos. Tokios funkcijos kaip sin, cos, sqrt ir kitos reikalauja labai daug procesoriaus laiko. Todėl plėtojant algoritmus į šias funkcijas reiktų žiūrėti kaip į potencialią problemą laiko atžvilgiu. Taip pat reiktų vengti daug daugybos bei dalybos veiksmų. (GPU-Accelerated 211) galima rasti bibliotekų, kurios sin, cos ir kitoms funkcijoms sėkmingai pritaiko GPU galimybes ir taip minėtas funkcijas skaičiuoja žymiai sparčiau nei su CPU. Tinkamas objekto apšvietimas gali labai palengvinti ir pagreitinti tinkamo metodo objekto parametrams nustatyti paiešką ir pritaikymą. Jei objektas nėra skaidrus, objekto išorinio kontūro dydžio ir pozicijos parametrams nustatyti labai tinkamas objekto apšvietimas iš apačios, kadangi pritaikius paprastą paveikslėlio segmentavimo pagal slenkstį operaciją, galima gauti tiksliai išskirtą objektą iš aplinkos. Taip pat nesunkiai galima išskirti ir išorinį objekto kontūrą. Kai objektas yra apšviestas iš viršaus, dažnai gali pasitaikyti įvairių dėmių, šešėlių, kitų objektų, kurie stipriai apsunkina objekto vaizdo paveikslėlyje paiešką. Tinkamas apšvietimas taip pat leidžia mašininę regą pritaikyti atspindinčių paviršių analizei. Buvo atskleistos pagrindinės problemos, su kuriomis susiduriama mašinės regos sistemose, tokios kaip - vaizdo iškreipiai, fokusavimas ir kiti sunkumai Sistemos modelis Pramonėje kiekvienas įrenginys turi būti našus ir išnaudojamas kuo labiau, kad būtų pagaminta daugiau pigesnių ir aukštos kokybės prekių su įrenginiu. Kaip viena iš šiuolaikinių įrenginių dalių gali būti mašininė rega. Siekiant našumo, mašininė rega privalo veikti greitai ir patikimai. Šiuo metu mažėjant elektronikos komponentams, įrenginiams ar kitiems daiktams, didėja daiktų gamybos tikslumas, o ypač lazerinių įrenginių pramonėje tikslumas yra vienas iš svarbiausių veiksnių ir privalumų. Todėl dažnai neužtenka tik pritaikyti vieną ar kitą metodą, kad būtų pasiektas galutinis rezultatas. Visos sistemos modelis turėtų būti panašus į 1.6 pav. 17

18 Sistemos paruošimas Vaizdo kadras Pirminis vaizdo apdorojimas Objekto parametrų nustatymas Didžiausio kontrasto paieška Perspektyvos, kitų deformacijų ir apšvietimo netolygumo korekcijos parametrų nustatymas Modelio pateikimas sistemai Vaizdo korekcija Objekto parametrų nustatymo metodas Veiksmų atlikimas pagal gautus rezultatus 1.6 pav. Dažniausiai praktikoje aptinkama ir naudojama mašininės regos sistema objekto parametrams nustatyti ir panaudoti Iš šios schemos matyti, kad sistemos veikimą galima suskirstyti į dvi dalis: sistemos paruošimas ir paieškos objekto parametrų nustatymas Sistemos paruošimas darbui Temos analizėje buvo pabrėžta, kad vaizdo kokybė yra viena iš svarbiausių dalių siekiant gauti didelį tikslumą nustatant objekto parametrus. Todėl mašininės regos sistemos paruošimas darbui yra labai svarbus etapas, kurio subtilybės čia nagrinėjamos. Yra daug sistemų, kai kamera negali žiūrėti stačiu kampu į stebimą objektą, kadangi pakliūtų į kito įrenginio veikimo zoną (1.7 pav.). Todėl pastačius kamerą iš šono, susidaro perspektyvinis vaizdas (1.5, 1.8 pav.). Įrenginys Užimta zona Kameros matymo laukas Kamera Stebimas objektas Pagrindas 1.7 pav. Sistema, kai kamera stebi objektą iš šono 18

19 19 Siekiant atkurti perspektyvinį vaizdo iškreipį (1.5, 1.8 pav.), paprastai užtenka turėti keturis taškus iškraipytame vaizde (pvz., kampuose esančius taškus) ir keturis galutinius taškus, į kuriuos deformuoti taškai bus transformuojami. Deformuoto vaizdo taškai gali būti pažymėti pele, ar rasti naudojant linijų (keturių linijų sankirtos taškai) ar kampų paieškos metodus (Heckbert 1989). Tuo tarpu galutiniai taškai, į kuriuos bus transformuotas perspektyvinis vaizdas, gali būti apibrėžti stačiakampio pavidalu imant vaizdo kadro kampų koordinates minimaliai jas atitraukiant, kad matytųsi pagrindas, ant kurio yra objektas. 1.8 pav. Perspektyva deformuotas objekto vaizdas (kairėje) ir atkurtas perspektyva deformuotas vaizdas (dešinėje) Perspektyvinės transformacijos formulė: i hv gu f ev du y i hv gu c bv au x = = ;, (1) Koeficientų a, b, c, d, e, f, g, h, i suradimui, kaip buvo minėta, užtenka aštuonių taškų, kad būtų rasti aštuoni nežinomieji. Užrašysime išvestinę lygčių sistemą matriciniu pavidalu, pagal kurį galima rasti minėtus koeficientus (Heckbert 1989): = y y y y x x x x h g f e d c b a y v y u v u y v y u v u y v y u v u y v y u v u x v x u v u x v x u v u x v x u v u x v x u v u, (2) kur (x n, y n) ir (u n, v n), n = 1,.., 4 yra taškų koordinatės.šią sistemą galima išspręsti naudojant Gauso eliminavimo metodą. Kontrasto aštrumas dar vienas iš esminių tikslumą lemiančių veiksnių. Praktikoje galima rasti įvairiausių metodų, skirtų didžiausio kontrasto paieškai (Liu et al. 27). Šis uždavinys gali būti sprendžiamas pasitelkus tokią schemą (1.9 pav.). u v x y

20 Vaizdo kadras Pradinis vaizdas Dominančios srities apibrėžimas kadre Vaizdas Glodintas vaizdas Glodintas vaizdas Skirtuminis vaizdas Vaizdo taškų verčių suma Pradinio ir glodinto vaizdo skirtumas 1.9 pav. Kontrasto matavimo metodo schema Apdorojus vaizdą pagal šią schemą, yra gaunama vaizdo taškų verčių suma, kuri atspindi kontrasto stiprį: kuo vertė didesnė, tuo kontrastas didesnis ir atvirkščiai. Dominančios vaizdo srities apibrėžimas yra labai svarbus etapas, ypač jei vaizdas perspektyvinis. Perspektyviniame vaizde kontrasto stipris pasiskirsto nevienodai, todėl didžiausio kontrasto reikia ieškoti tik mus dominančio objekto zonoje, dažnai žymimą AOI (angl. Area Of Interest). Taigi pagal apskaičiuojamą kontrasto įvertį galima keisti kameros fokusuojančio lęšiuko nuotolį, stumti kamerą toliau ar arčiau objekto, kol bus rasta ir pasiekta maksimali kontrasto įverčio reikšmė. Didžiausio kontrasto nustatymas šiuo metodu turi tokį minusą, kad gali prireikti nemažai iteracijų, kol bus pasiektas maksimalus kontrastas. Yra kamerų su integruotais atstumų matuokliais, kurie matuoja atstumą iki objekto ir didžiausio kontrasto radimui pakanka vienos iteracijos (Understanding 211). Turint neiškraipytą ir kontrastingą vaizdą, galima toliau taikyti objekto parametrų nustatymo metodą. 2

21 2. Objekto paieškos metodai Pramoniniu būdu gaminamų, apdorojamų ar tikrinamų daiktų yra be galo daug, kurie turi įvairias spalvas, tekstūras, formas ar kitas savybes. Tai komplikuoja objekto pozicijos nustatymą pasitelkus mašininę regą ir sunkina trajektorijų korekcijos įvedimą. Kadangi turime nustatyti tik mus dominančio objekto parametrus, objektas turi būti išskirtas iš aplinkos, o objektų skaičius viename paveikslėlyje vaidina be galo didelį vaidmenį šioje procedūroje. Norint sukurti pramoninę įrangą, automatiškai atskiriančią ir identifikuojančią daugiau nei vieną objektą, tenka įdėti daug pastangų ir laiko. Gali pasitaikyti ir kelių objektų sanklotos atvejų. Kai vienas objektas iš dalies uždengia kitą, vaizdo apdorojimo ir objektų išskyrimo metodai turi būti tinkamai parinkti, kad būtų išvengta dviejų objektų sujungimo į vieną. Automatinio identifikavimo sistemose labiausiai pastebima apšvietimo netolygumo erdvėje ar laike problema, kuri dažnai apriboja paprastų ir veiksmingų segmentavimo algoritmų panaudojimą. Šioje dalyje nagrinėjami mašininėje regoje naudojami metodai skirti objekto paieškai Aplinkos atimties metodas Vienas iš paprasčiausių ir efektyviausių objekto išskyrimo iš aplinkos metodų aplinkos atėmimas (angl. background substraction). Šis metodas remiasi aplinkos (2.1 pav.) ir objekto su aplinka (2.2 pav.) vaizdo kadrų skirtumu. Šį metodą galima taikyti tik tuomet, kai kameros pozicija yra fiksuotoje padėtyje. Visų pirma, kamera nuskaito aplinkos kadrą (2.1 pav.) ar kelis suvidurkintus kadrus, kad galima būtų turėti aplinką labiausiai atitinkantį ir nuo atsitiktinio triukšmo apsaugotą vaizdo kadrą. Toliau nuskaitomas kadras su objektu (2.2 pav.) ir atliekamas aplinkos ir objekto su aplinka vaizdo kadrų taškų atimties operacija. 2.1 pav. Aplinkos vaizdo kadras 2.2 pav. Apvalus objektas su aplinka Idealiomis sąlygomis būtų gautas reikiamas rezultatas, tačiau minimalūs kameros judesiai, apšvietimo pokytis ir triukšmas vaizdo kadre duoda nepageidaujamus rezultatus. Todėl reikia pritaikyti dar keletą etapų, kad galima būtų gauti švarų išskirto objekto vaizdą. Jei scenos apšvietimui naudojamos dienos šviesos lempos, kamera gaunami vaizdo kadrai gali labai stipriai 21

22 skirtis vienas nuo kito dėl dienos šviesos lempų mirgėjimo. Šį mirgėjimą akimi sunku pastebėti, tačiau jei vaizdą fiksuojanti kamera turi trumpą išlaikymo laiką, vienas vaizdo kadras gali būti šviesesnis, o kitas tamsesnis. Kad apšvietimas neįtakotų objekto išskyrimo rezultatų galima vidurkinti keletą vaizdo kadrų. Kameros vaizdo jutiklis taip pat gali duoti vaizdo triukšmų, todėl skirtuminiam vaizdui (2.3 pav.) atliekama sąlajos (angl. blur) operacija ir pritaikomas slenkstis. Atlikus šias operacijas, gaunama objekto kaukė arba dvejetainis objekto vaizdas (2.4 pav.). Dvejetainį vaizdą galima naudoti skaičiuojant objekto plotą ar kitus parametrus. 2.3 pav. Aplinkos vaizdo ir apvalaus objekto su aplinka vaizdo kadrų skirtumas skirtuminis vaizdas 2.4 pav. Apvalaus objekto kaukė, gauta sąlajos ir slenksčio uždėjimo operacijomis Jei norime gauti ne vieno spalvos lygio (dvejetainio pavidalo: juoda-balta) vaizdą (2.4 pav.), pradiniam objekto su aplinka kadrui (2.3 pav.) turime uždėti kaukę (1 formulė) ir tokiu būdu gautume iš aplinkos išskirtą objekto vaizdą (2.5 pav.). I p ( x, y), jei I m ( x, y) > I ( x, y) =, (1), kitu atveju kur I(x,y) iš aplinkos išskirtas objekto vaizdo kadro taškas, I p (x,y) pradinis objekto vaizdo kadro taškas, I m (x,y) kaukės vaizdo taškas. 2.5 pav. Apvaliam objektui su aplinka (2.2 pav.) pritaikyta kaukė (2.4 pav.) Šis metodas dažnai naudojamas praktikoje, ypač kai reikia išskirti judančius objektus (mašinos greičio nustatymas, objekto judančio konvejeriu apytikslis pozicijos nustatymas ir t.t.). Metodas geras tuo, kad nereikalauja vartotojo įsikišimo objekto pozicijos radimui nereikia nustatyti specialių nuostatų. Visos nuostatos (segmentavimo slenksčiai) gali lengvai būti parenkami 22

23 automatiniu būdu (pvz. pagal spalvų histogramą ar vidurkį). Didžiausias šio metodo trūkumas jautrumas šešėliams. Jei objektas yra apšviečiamas iš šono, gali susidaryti šešėliai. Jei nebus įvestas aukštas segmentavimo slenkstis ar nebus įvesta papildomų etapų šešėliams panaikinti, bus rastas ne tik objektas, bet ir šešėlis (rastas objekto centras pasislinks į šešėlio pusę). Aukštas segmentavimo slenkstis gali neigiamai įtakoti objekto paieškos rezultatus, nes gali būti paslėpta objekto dalis. Jei naudojamas tinkamas apšvietimas, šešėliai nesusidarys ir objektas bus tiksliai išskirtas iš aplinkos. Kai objektas išskirtas iš aplinkos, galima pritaikyti kitus metodus objekto dydžio, spalvos, tekstūros ar kitų parametrų nustatymui Projekcijos metodas Jei turime išskirtą objektą, kuris nėra pasuktas, objekto aukščio ar (ir) pločio nustatymui galima panaudoti paveikslėlio taškų projekcijos metodą. Šis metodas pagrįstas taškų, esančių matavimo srityje, projektavimu (susumavimu) į vienos dimensijos masyvą vertikalia ar (ir) horizontalia kryptimi (2.6 pav.). Kiekviena 2.6 pav. Taškų projekcija į vienmatį masyvą suma parodo visų stulpelyje esančių taškų intensyvumą. Toliau, visam gautam vienmačiui taškų projekcijos masyvui pritaikomas pirmosios išvestinės filtras [1,-1] (angl. first derivative filter). Filtras randa krašto stiprio vertę kiekvienai taškų projekcijos vertei. Kuo didesnis skirtumas tarp kaimyninių taškų projekcijos verčių, tuo krašto stipris didesnis. Toliau ieškant didžiausius krašto stiprius yra identifikuojami kraštai. Atstumas tarp dviejų kraštų ieškomas objekto plotis ar ilgis taškais. Įvedus konvertavimo koeficientą, milimetrai per paveikslėlio tašką, matavimo vienetus galima rodyti priimtinesniu formatu - milimetrais nei paveikslėlio taškais Šablono paieška paremtas metodas Praktikoje dažniausiai naudojama šablono paieška (2.7 pav.), kuri paremta didžiausio panašumo tarp paveikslėlio ir šablono taškų intensyvumų paieška (Hornberg 26; Steger 28; 23

24 EasyMatch 211; MIL 211). Detalesniam paieškos įsivaizdavimui galima įsivaizduoti slenkamą šabloną (paveikslėlį tik su dominančiu objektu) per visus paveikslėlio taškus ir skaičiuojamą taškų intensyvumų panašumą. Vieta, kur panašumo reikšmė didžiausia (2.7 pav. centrinės ir dešiniosios dalių tamsiausia vieta), parodo kuri paveikslėlio vieta yra panašiausia į šabloną. Deja, šis metodas be pakeitimų ir optimizacijų netoleruoja nei apšvietimo pokyčių, nei dalinio objekto uždengimo ir paieškos atlikimas reikalauja daug operacijų. Šio metodo veikimo schema galėtų būti tokia: vartotojas paimtame vaizde apibrėžia šabloną(us), tuomet sudaroma keletas šablonų (su įvairiais pasukimais ir dydžiais), kad būtų toleruojamas kintantis objekto dydis ir pasukimo kampas. Tada su kiekvienu šablonu vykdoma paieška. Pagal vartotojo nustatytas nuostatas gali būti gražinama viena ar kelios rastos šablonus atitinkančios objekto pozicijos. Taip veikianti sistema tampa labai lengvai pritaikoma prie kintančių objektų paieškos. Užtenka vartotojui tik pakeisti šabloną ir sistema galės dirbti su nauju objektu. 2.7 pav. Objekto paieška pagal šabloną Kad metodas toleruotų šviesos pokyčius, šablono lyginimo metu lyginami tik objekto kraštai ar kampai, kurie beveik nejautrūs šviesos kitimui (Borgefors 1988; Hornberg 26; Steger 22; Strzodka 23; Michel et al. 27; MIL 211). Objekto kraštų išskyrimui paprastai naudojamas Canny metodas, kuris gali būti pritaikytas vykdyti su GPU (Luo 28; Michel et al. 27). Kraštų, o ne viso šablono taškų intensyvumų lyginimas taip pat leidžia turėti dalinai uždengtą objektą, kurio dalies kraštų netekimas nepaveiks lyginimo rezultato, jei tik bus parinktas ne per daug griežtas šablono ir paveikslėlio dalies sutapimo slenkstis. Tuo tarpu, kai lyginimas atliekamas lyginant viso šablono taškų intensyvumus su paveikslėlyje esančio objekto taškų intensyvumais, metodas tampa jautrus ne tik daliniam objekto uždengimui, bet ir objekto spalvos ar apšvietimo kitimui. Šie trūkumai atsiranda, kadangi lyginimo metu metodas bando minimizuoti modelio objekto ir paveikslėlyje esančio objekto skirtumo vertę skaičiuojamą sumuojant modelio objekto ir paveikslėlyje esančio objekto taškų intensyvumų skirtumus. Yra būdas, kaip patikimai panaudoti ir palyginti objekto taškų intensyvumą parinkti tinkamą apšvietimą, kuris paskirstytų šviesą tolygiai po visą vaizdo kadrą ir pritaikyti vaizdo spalvų normalizacijos, kartais vadinama histogramos išlyginimo (angl. histogram equalization) etapą. Šiuo 24

25 etapu užtikrinamas metodo stabilumas dėl sumažėjusio ar padidėjusio šviesos intensyvumo. Taip pat kartais pritaikomi papildomi etapai leidžiantys nustatyti šviesos intensyvumo skirtumus skirtingose vaizdo kadro dalyse. Tuomet, turint šviesos pasiskirstymo modelį, galima įvesti vaizdo taškų intensyvumų korekciją kiekvienam kadro taškui. Tokiu būdu įvedamas tolygus apšvietimo pasiskirstymas visame vaizdo kadre. Mašininės regos taikymuose galima išvysti įvairiausių apšvietimo sprendimų, kurie leidžia patikimai ir sėkmingai naudoti šablono paiešką pagal taškų intensyvumo lyginimą. Kad lyginimas būtų greitas, mažinama vaizdo rezoliucija (dėl ko prarandamas tikslumas) arba naudojamas piramidinis-hierarchinis lyginimo principas, kurio metu pilnas šablono lyginimas atliekamas tik grubiausiame lygyje, o detalesniuose rezultatai tik patikslinami (Hornberg 26; Steger 22). Nagrinėti metodai yra gana greiti (iki 5-1 objekto parametrų nustatymo per sekundę), tačiau nėra realaus laiko metodai. Kadangi šiuolaikinės vaizdo apdorojimo plokštės yra pigios lyginant su centriniais procesoriais, jų skaičiavimo galia dažniausiai stipriai lenkia centrinių procesorių galią, nagrinėtoje literatūroje GPU sėkmingai pritaikomi vaizdų apdorojimui (Borovikov 29; Farrugia 26; Fung et al. 25; Luo 28; Michel et al. 27; Strzodka 23; Ziegler 26), todėl verta išnaudoti GPU skaičiavimo galią vaizdų apdorojimo uždaviniams spręsti. (Alves et al. 21) pateiktas Ciratefi metodas naudoja modifikuotą šablono paieškos metodą, kuris yra nepriklausomas nuo objekto pasukimo, dydžio ir pozicijos kitimo. Metodas naudoja tris filtrus, kurie efektyviai atmeta neperspektyvius lyginimo taškus. (Alves et al. 21) pažymėta, kad Ciratefi metodas 64x48 dydžio vaizde gali rasti objektą tik per 1 ms., kai metodas vykdomas su FPGA (angl. Field-programmable gate array) įrenginiu. Deja, šis metodas naudojantis CPU, objekto paieškai užtrunka apie 5 s. (EasyMatch 211) komercinė šablono lyginimo biblioteka geba rasti objektą pagal šabloną, jei objektas pasuktas, pastumtas ar pakitęs dydis. Kad būtų užtikrintas šablono lyginimo greitis, naudojamas apmokymo etapas, kurio metu sistema iš pateikto šablono parenka tik specialius taškus, kurie bus naudojami šablono lyginimo metu. (MIL 211) komercinė vaizdų apdorojimo biblioteka pateikia vaizdo taškų intensyvumų lyginimu ir objekto geometrija paremtus objekto paieškos metodus. Vaizdo taškų intensyvumų lyginimo metodas naudoja hierarchinį lyginimo principą, kad būtų pasiekta didelė metodo veikimo sparta. Geometrijos lyginimu paremtas metodas naudoja išskirtus objekto kraštus, kurie apjungiami į kontūrų grandines, kurias bandoma priderinti prie modelio kontūrų grandinių. Kompiuterinėje regoje labai populiarus Hough transformacijos metodas, skirtas linijų, apskritimų (Borovikov 29; Ruiz et al. 26), elipsių (Lee et al. 28) ar kitų kreivių paieškai. Deja, dėl lėtumo, kadangi reikia atlikti labai daug skaičiavimo operacijų nustatant figūrų 25

26 parametrus, šis metodas retai buvo taikomas mašininėje regoje. Hough transformacijai pagreitinti buvo sukurta daug įvairių modifikacijų, o Hough transformacijai atlikti panaudojus GPU, buvo pasiekti labai geri metodo spartos rodikliai (Borovikov 29; Ruiz et al. 26). Hough linijų radimo metodas susideda iš kelių etapų, kurie sėkmingai pritaikomi su GPU (Fung et al. 25). Etapai: Vaizdo glodinimas (pvz. Gaussian). Kraštų išryškinimo operatorius (pvz. Sobel). Hough proceso atlikimas (duomenų gavimas). Lokalaus maksimumo paieška. Vaizdo glodinimo operacijos ir kraštų išryškinimo operatoriaus įgyvendinimas su GPU parodė labai gerus rezultatus, kadangi šie etapai pagreitėjo vidutiniškai 3 kartų (Roodt et al. 27), o bendra elipsių ar apskritimų radimo procedūra pagreitėjo apie 1 kartų (Borovikov 29; Lee et al. 28; Ruiz et al. 26). Kiekvienas iš tyrinėtų metodų turi savų privalumų ir trūkumų. Deja trūkumai dažniausiai išaiškėja tik pritaikius metodą realiomis sąlygomis. Todėl dažnam mašininės regos taikymui reikia parinkti unikalų sprendimą užtikrinantį vaizdo kokybę, stabilius, tikslius ir greitai randamus rezultatus. Kompiuterinės regos užduotys reikalauja daug kompiuterio resursų, yra monotoniškos, dažnai išnaudoja visą CPU siekiant vaizdą apdoroti realiu laiku, tuo pačiu paliekant mažai CPU laiko atlikti sudėtingas užduotis. Tyrinėti metodai reikalauja daug operacijų siekiant rasti objekto parametrus. Norint padidinti vaizdų apdorojimo sistemos greitį, lengviausias būdas tą pasiekti sumažinti paveikslėlio dydį (tuo pačiu ir reikalaujamų operacijų kiekį), kas leistų sistemai veikti žymiai greičiau, tačiau būtų prarandamas šiame darbe akcentuojamas tikslumas. Todėl šiame darbe siekiama nemažinant vaizdo dydžio ir neprarandant greičio, dėka GPU paskirstytos skaičiavimo architektūros, sukurti tiksliai ir greitai veikiančią mašininės regos sistemą. GPU yra sukurti atvaizduoti grafinius primityvus siekiant sukurti scenos vaizdą, tuo tarpu kompiuterinė rega turi iš scenos vaizdo ištraukti grafinius primityvus. Šios kompiuterinės regos užduotys gali efektyviai būti vykdomos su GPU, kurių programavimo galimybės suteikia galimybę įgyvendinti daugumą kompiuterinės regos algoritmų. 26

27 2.4. Programuojama grafinė įranga Šiandienos vaizdo apdorojimo plokštės tapo galingais skaičiavimo įrenginiais, kurių platesnės valdymo (programavimo) galimybės atsivėrė tik visai nesenai. Vaizdo apdorojimas su GPU turi nemažai privalumų. Vaizdo apdorojimas su CPU reikalauja daug išteklių, o ne vaizdo apdorojimo užduotims paliekama mažai laiko. Tuo tarpu GPU galimybės retai būna išnaudojamos. Paveikslėlis tai spalvinių reikšmių 2D masyvas. Dauguma vaizdų apdorojimo algoritmų yra lygiagretūs, kadangi atlieka tą patį veiksmą kiekvienam vaizdo taškui. Kadangi GPU veikimas paremtas lygiagrečia architektūra, todėl GPU labai tinkamas vaizdams apdoroti. Vaizdų apdorojimui gali būti naudojama ir speciali techninė įranga, pvz: FPGA, tačiau šią techninę įrangą galima sutikti labai retai, tuo tarpu visi modernūs kompiuteriai turi GPU. Duomenų apdorojimo operacijos su GPU vykdomos efektyviau, todėl naudoja mažiau elektros energijos nei CPU (2.1 lentelė). 2.1 lentelė. Vaizdo procesorių ir centrinių procesorių skaičiavimo galia, naudojama energija ir dydžių santykis Procesorius GFLOPS Vatai Vatai per GFLOPS CPU Quad Bloomfield Xeon 3.2 GHz 25.6 GFLOPS 13 W 5,78 CPU Core 2 Duo Penryn 2.53 GHz 2.2 GFLOPS 25 W,81 GPU NVIDIA Tesla C GFLOPS 17 W,328 GPU NVIDIA GeForce 98 GT 54 GFLOPS 15 W,28 GPU NVIDIA GeForce 88M GTS 24 GFLOPS 35 W,145 GPU ATI Radeon HD GFLOPS 294 W,63 Dėl aukščiau paminėtų faktų ir specifinių GPU veikimo principų, kuriuos panagrinėsime vėliau, iškeltas tikslas dalį vaizdo apdorojimo veiksmų nuo CPU perkelti į GPU GPU veikimas Esminis dalykas kodėl vaizdas greičiau apdorojamas su GPU, nei su CPU, tai lygiagreti GPU architektūra. Šiuolaikiniai CPU turi 1-4 branduolius ir gali vykdyti 1-4 operacijas vienu metu, kai tuo tarpu GPU architektūra leidžia vykdyti net iki kelių tūkstančių operacijų vienu metu. Dažnas CPU turi integruotą MMX technologiją (MMX 24), leidžiančią vienu metu atlikti kelių vaizdo taškų primityvų apdorojimą (supakuojant kelių taškų intensyvumus į didelį skaičių), tačiau ir ši CPU savybė neprilygsta GPU šimtams ar net tūkstančiams vienu metu atliekamų lygiagrečių operacijų. Dėl šių priežasčių vaizdo apdorojo algoritmai su GPU gali veikti dešimt ar net šimtą kartų greičiau nei su CPU. 27

28 Dabartiniai grafiniai procesoriai turi galingas ir lanksčias architektūras, kurios pateikia pilnai programuojamus procesorius sugebančius atlikti įvairias slankaus kablelio (angl. floating point) operacijas. Buvo sukurtos aukšto lygio programavimo kalbos, kurios lengvai leidžia išnaudoti visus GPU privalumus apdorojant duomenis vektorių ir taškų srautuose. Norint išsiaiškinti, kodėl vaizdo procesorius yra žymiai greitesnis už pagrindinės paskirties procesorių, reikia suprasti, kaip jame apdorojami duomenys (2.8 pav.). Vaizdo procesoriaus pagrindinė užduotis yra atvaizduoti grafinius primityvus siekiant sukurti scenos vaizdą (Farrugia 26). Objektai trimačiame pasaulyje dažniausiai aprašomi trikampiais. Šių trikampių viršūnės apdorojamos vadinamosiose viršūnių programose (angl. Vertex shader). Toliau iš tų viršūnių susidarantys trikampiai paverčiami į taškus (vyksta rasterizavimas) ir perduodami taškų tonavimo programai (angl. Pixel shader). Taškų programa apdoroja kiekvieną vaizdo taškelį priklausomai nuo užduotos tonavimo programos siekiant sukurti tikroviškesnį vaizdą. Po to šis apdorotas taškas išvedamas į ekraną arba išsaugojamas į atmintį ir vėl iš naujo panaudojamas skaičiuojant kitas viršūnes ir taškus. Vektorinė informacija Viršūnių programa Rasterizavimas Taškinė informacija Taškų programa Vaizdo kadras Rastrinės operacijos 2.8 pav. Grafikos srautas vaizdo procesoriuje Viršūnių programa - pirmoji grafikos srauto dalis, kurią galima valdyti (suprogramuoti valdymą) grafikos vaizdo procesoriumi. Ši dalis dirba su apšvietimu ir transformacijomis. Pagrindinės operacijos atliekamos su vektoriais ir komponentais (pavyzdžiui, tekstūrų koordinatėmis). Viršūnių programos naudojamos transformuoti 3D koordinates į 2D koordinates, kurios naudojamos rasterizavimo (vaizdo apkarpymo ir vektorių vertimo į taškus) etape. Kadangi 28

29 viršūnių programos dirba su vektoriais, šios programos nelabai aktualios vaizdams apdoroti. Bet keletą funkcijų aktualių vaizdams apdoroti vis tiek galima pritaikyti: Tekstūrų pasukimas ir deformavimas (pvz., perspektyvinio vaizdo korekcija). Tekstūros pozicijos keitimas. Spalvos keitimas. Kadangi taškų programos išvesties pozicija yra fiksuota ir išvedimas galimas tik į taško vertę, todėl tekstūrų pozicijos keitimas yra pagrindinė operacija, kuria galima perstumti taškų programos išvesties pozicijas. Taškų programa sujungia tiek šviesos informaciją, apskaičiuotą viršūnių programoje, tiek tekstūrų vaizdo taškų informaciją ir paruošia galutinį vaizdo tašką, kuris bus vaizduojamas ekrane. Yra daug apribojimų, kurie sunkina vaizdų apdorojimą taškų programose. Vienas iš aktualiausių - nėra įmanoma atlikti operacijos su kaimyniniais taškais (pavyzdžiui, sudėti dviejų taškų), esančiais vykdomoje taškų programoje. Norint atlikti operaciją su kaimyniniais taškais, tenka vykdyti taškų programą, kuri paima taškus iš išorinių tekstūrų ir atlikusi operaciją, rezultatą saugo išvesties tekstūroje. Taškų programai galima pateikti įvairią informaciją: Įvesties (išvesties taškas po programos įvykdymo) taško spalvines komponentes. Konstantas pasirinktas prieš grafikos srauto pradžią. Einamojo įvesties taško koordinates. Taškų programose taip pat galima naudoti vidinius kintamuosius, įprastas ciklų, sąlygų valdymo galimybes. Taip pat grafikos procesoriuose yra integruotos įvairios greitos matematinės, trigonometrinės, geometrinės, spalvos komponenčių manipuliavimo funkcijos Programavimo kalbos Šiuo metu vyrauja kelios tonavimo ir šešėliavimo (angl. shader) programavimo kalbos, skirtos grafiniams procesoriams: Cg (C for Graphics), HLSL (High Level Shader Language), GLSL (OpenGL Shading Language) (Farrugia 26). Cg programavimo kalba buvo sukurta Nvidia vaizdo plokščių gamintojų, todėl ši kalba labiau tinkama Nvidia vaizdo plokštėms programuoti. CG veikia su Direct3D ir OpenGL grafikos bibliotekomis. HLSL programavimo kalba buvo sukurta Microsoft kompanijos, kuri kūrė šią kalbą naudoti su Direct3D. GLSL programavimo kalba yra paremta C programavimo kalba ir buvo sukurta OpenGL ARB konsorciumo, kurie siekė šia programavimo kalba suteikti programinės įrangos kūrėjams kuo daugiau tiesioginės grafinio srauto kontrolės, be būtinybės mokėti žemo lygio techninę kalbą. GLSL turi daug privalumų, palyginti su kitomis programavimo kalbomis. Visų pirma, ši kalba nepriklauso nuo operacinės sistemos, todėl gali veikti bet kurioje platformoje. Antra, ši kalba gali 29

30 veikti su bet kurio vaizdo plokščių gamintojo vaizdo plokšte, kuri palaiko OpenGL tonavimo kalbą. Trečia, kiekvienas grafikos plokščių gamintojas įtraukia GLSL kompiliatorių į vaizdo plokštės tvarkyklę, todėl gamintojas gali optimizuoti programos mašininį kodą kiekvienam skirtingam vaizdo procesoriui. Dėl minėtų privalumų šiame darbe ir vartosime GLSL programavimo kalbą, kartu su OpenGL biblioteka. Remiantis atlikta grafinių vaizdo plokščių veikimo ir pritaikomumo vaizdams analize, galima pažymėti: lygiagrečiais skaičiavimais paremta vaizdo plokščių architektūra labai tinkama greitam vaizdų apdorojimui; atlikti vaizdų apdorojimo darbai su grafinėmis vaizdo plokštėmis rodo grafinių vaizdo plokščių pranašumą prieš CPU apdorojant vaizdus. 3

31 3. Realaus laiko objekto parametrų radimo metodas 3.1. Objekto pozicijos nustatymo veikimo schema Tyrinėjant literatūrą apie objektų atpažinimą ir objekto parametrų nustatymą, vaizdo plokščių panaudojimą vaizdams apdoroti galimybes ir subtilumus, buvo stengiamasi suformuoti metodą, tinkamą greitam ir tiksliam objekto parametrų nustatymui mašininės regos sistemose. Kadangi objekto kraštų lyginimas yra efektyviausiais būdas, kuris yra tikslus, toleruoja šviesos netolygumus, toleruoja objekto dalinį uždengimą (Borgefors 1988; Hornberg 26; Steger 22; Strzodka 23), verta objekto paieškai naudoti objekto kraštus. Kadangi metodas turi būti greitas, verta panaudoti greitą hierarchinio lyginimo principą (Hornberg 26; Steger 22). Tyrinėtoje literatūroje vaizdų apdorojimas dažniausiai atliekamas su CPU, kurio skaičiavimo galia gali būti 1 ar daugiau kartų mažesnė nei GPU, todėl vaizdų apdorojimui verta naudoti GPU skaičiavimo galią (Borovikov 29; Farrugia 26; Fung et al; ir kt.). Tyrimų metu buvo prieita išvada, kad visi objekto paieškos etapai gali būti įgyvendinami, kuriuos vykdys vaizdo procesorius. Todėl šiame darbe buvo įgyvendintas realaus laiko objekto parametrų nustatymo metodas, kurio principinė veikimo schema pavaizduota 3.1 pav. 31

32 Šablono suformavimas Kraštų radimas Piramidės suformavimas Šablono suformavimas kiekvienam piramidės lygiui Objekto paieška Kraštų radimas Piramidės suformavimas Paieškos atlikimas Paieškos rezultato suformavimas 3.1 pav. Objekto pozicijos nustatymo schema Objekto pozicijos nustatymą galima suskaidyti į dvi dalis: Objekto modelio šablono suformavimas. Objekto pagal numatytą šabloną paieška. Modelio pateikimas sistemai neturi būti sudėtingas ar ilgas procesas. Kad šis siekis būtų pasiektas, modelio sudarymui pateikiamas modelio paveikslėlis, kurį geriausia ir lengviausia būtų paimti su ta pačia sistema, kuri bus naudojama objekto paieškos metu. Naudojant tą pačią sistemą galima išvengti modelio dydžio keitimo operacijos ar objekto paieškos, kai būtina naudoti metodą, toleruojantį objekto dydžio kitimą. Kitas svarbus reikalavimas - objekto modelis turi būti be aplinkos, kad aplinka nelemtų objekto paieškos rezultatų. Aplinkos atmetimui įprasta naudoti įdomios zonos (AOI - angl. Area Of Interest) apibrėžimą, kuriu apibūdinamas (dažniausiai stačiakampiu) mus dominančio objekto 32

33 kontūras. Objekto modelį pateikus sistemai, sistema apdoroja modelio paveikslėlį ir paruošia reikalingą informaciją objekto pagal objekto modelį paieškai Metodo realizacija Šiame darbe vaizdo programų rašymui buvo pasirinkta GLSL programavimo kalba. GLSL - tai santrumpa OpenGL šešėliavimo kalbos (OpenGL Shading Language). GLSL yra panaši į aukšto lygio C/C++ kalbas, kuri skirta veiksmams su grafikos procesoriumi (GPU) atlikti. GLSL kalba rašomos programos, vadinamos šešėliuoklėmis (angl. shader), kurios tiesiogiai vykdomos su grafikos procesoriumi. GLSL programų vykdymui (kompiliavimui, perkėlimui į GPU, duomenų perdavimui, kontrolei) naudojama OpenGL grafikos biblioteka. GLSL programos gali būti trijų tipų: vektorių (angl. vertex shader), geometrijos (angl. geometry shader) ir taškinės (angl. fragment shader). Kiekviena programa - tai tarsi tipinis C/C++ kalbos programos modulis, kuris turi būti sukompiliuotas. Tuomet vektorių, geometrijos ir taškinis modulis yra sujungiami į bendrą programą, kurią vykdo grafikos procesorius. Kad paieškos algoritmas vyktų efektyviai (greitai), reikia minimizuoti duomenų mainus tarp CPU ir GPU erdvės. Todėl pagrindinis metodo tikslas: įgyvendinti visus paieškos etapus su grafikos procesoriumi, kad būtų minimizuojami duomenų srautai. Pirmas paveikslėlio apdorojimo etapas - paveikslėlio nusiuntimas į grafikos procesorių. Nusiunčiama su standartinėmis OpenGL bibliotekos funkcijomis. Pradinis paveikslėlis gali būti tiek pilkos skalės (spalvos taškui 8 bitai), tiek spalvotas paveikslėlis (spalvos taškui 24 baitai). Grafikos procesorius gali dirbti tiek su vienos, tiek su trimis ar keturiomis komponentėmis vienam taškui. Šiame darbe dirbama su trimis komponentėmis, todėl jei pradinis paveikslėlis vienos komponentės (pilkos skalės), jis konvertuojamas į RGB spalvų erdvę Kontūrų išskyrimas Šioje dalyje bus apibrėžta objekto kontūrų paieška, kuri taikoma modelio kūrimo ir modelio paieškos vaizdo paveikslėlyje metu. 33

34 Taigi pradedamas vaizde esančių kraštų išskyrimas. Šiame etape pritaikomas Canny kraštų radimo metodas. Kraštų išskyrimas pradedamas vaizdo glodinimu. Glodinimo operacijos pagrindinis tikslas - panaikinti vaizdo paveikslėlyje esantį triukšmą. Triukšmas gali atsirasti dėl įvairių priežasčių. Pagrindinės yra dvi priežastys: kameros kokybė ir apšvietimo kokybė. Jei objektas prastai apšviestas, kameros ekspozicijos trukmę reikia kelti, dėl ko gali stipriai sumažėti kameros duodamų kadrų kiekis. Todėl ekspozicijos kėlimas ne visada tinkamas. Tuomet tenka gerinti apšvietimą arba didinti kameros jutiklio jautrumą (foto diodų stiprinimo reikšmę). Didinant kameros jutiklio jautrumą, atsiranda kameros vaizdo triukšmų, kurie nepageidaujami kraštų išryškinimo metu (triukšmingi taškai būtų išryškinti). Rinkoje galima rasti ir jautrių vaizdo kamerų, kurios turi matricos šaldymo elementus. Šaldymo elementai atšaldo matricą iki žemos temperatūros ir sumažina generuojamų triukšmų lygį, tačiau šios kameros yra didelės ir brangiai kainuoja. Dėl minėtų priežasčių atliekama vaizdo glodinimo operacija, kuriai naudojamas Gauso filtras. Gauso filtras gali būti tiek vienos, tiek dviejų dimensijų. Atlikti kokybiškam (vertikalia ir horizontalia kryptimi) paveikslėlio glodinimui reikia dvimačio Gauso filtro, kurio sąsūkos operacija su paveikslėliu duoda suglodintą vaizdą. Jei Gauso filtras yra didelis, sąsūkos operacija pareikalaus daug operacijų. Kad reikėtų mažiau operacijų vaizdui glodinti, vaizdo glodinimas vykdomas dviem etapais (Efficient 21). Visų pirma, vaizdas glodinamas horizontalia kryptimi, o gautas rezultatą dar kartą glodinamas, tik šį kartą vertikalia kryptimi. Glodinimas atliekamas ne su dvimačiu, o su vienmačiu Gauso filtru. Jei naudotume sąsūkos operaciją 124 taškų pločio ir aukščio paveikslėliui su filtro pločiu ir aukščiu lygiu 9, sąsūkos operacijai atlikti reiktų peržiūrėti ir apdoroti 124*124*9*9, t.y. apie 85 milijonus taškų. Tuo tarpu naudojant dvi sąsūkos operacijas su vienmačiu Gauso filtru, tenka peržiūrėti ir apdoroti 124*124*9*2, t.y. apie 19 milijonų taškų. Tokiu būdu keturis kartus sumažinamas veiksmų kiekis reikalingas glodinimo operacijai atlikti. 34

35 uniform samplerrect sampler; varying vec2 Texcoord; uniform float offset[5] = float[](., 1., 2., 3., 4. ); uniform float weight[5] = float[]( , , , , ); void main(void) { gl_fragcolor = texture2drect ( sampler, Texcoord ) * weight[]; for (int i=1; i<5; i++) { gl_fragcolor += texture2drect( sampler, ( Texcoord+vec2(offset[i],.) )) * weight[i]; gl_fragcolor += texture2drect( sampler, ( Texcoord-vec2(offset[i],.) )) * weight[i]; } } GLSL taškų programos kodas, skirtas glodinti paveikslėlį horizontalia kryptimi. Programos rezultatas (spalva) išvedamas į standartinį GLSL kalbos taškų programos kintamąjį gl_fragcolor, į kurį išvedamas kiekvienas paveikslėlio taškas. Kintamasis gl_fragcolor yra float4 tipo, todėl kintamasis apima tris taško spalvų komponentes (raudoną, žalią, mėlyną) ir permatomumo reikšmę, kuri šiame darbe naudojama tik papildomos informacijos talpinimui. Kintamajam gl_fragcolor reikšmę galima priskirti naudojant vieną iš šių priskyrimo eilučių. [1] gl_fragcolor = x; [2] gl_fragcolor.rg = float2(x,y); [3] gl_fragcolor.rgb = float3(x,y,z); [4] gl_fragcolor.rgba = float4(x,y,z,w); [5] gl_fragcolor.abgr = float4(x,y,z,w); [6] gl_fragcolor.r = 1.; čia x, y, z, w - kintamieji. Jei dirbama su 1 baitu skaičiui formatu, minėtų kintamųjų reikšmės gali kisti tik [., 1.] ribose. Jei bus bandoma įrašyti didesnį skaičių nei 1, jis bus sumažintas iki 1, o jei įvestas skaičius mažesnis nei nulis, jis bus pakeltas iki. Todėl patogiau dirbti su slankiojo kablelio formatu. [1] eilutė priskiria visoms gl_fragcolor komponentėms reikšmę x. [2] eilutė priskiria raudonai ir žaliai gl_fragcolor komponentei atitinkamai reikšmę x ir y. [3] ir [4] eilutė analogiškai kaip ir [2] kodo eilutė priskiria gl_fragcolor kintamojo kitas komponentes. [5] eilutė parodo GLSL kalbos ir grafikos procesoriaus galimybę variuoti komponenčių įrašymo tvarką. Tai leidžia efektyviai sukeisti spalvines taško komponentes. [6] kodo eilutė priskiria visoms gl_fragcolor komponentėms reikšmę

36 Dėl specialios GPU architektūros skirtos dirbti su spalvomis, GPU lygiagrečiai gali dirbti su visomis komponentėmis vienu metu, todėl, pavyzdžiui, norint pašviesinti tašką, reikia vykdyti: gl_fragcolor.rgb +=.5; kodo eilutę, o ne tris kodo eilutes: gl_fragcolor.r +=.5; gl_fragcolor.g +=.5; gl_fragcolor.b +=.5; Paprasto centrinio procesoriaus atveju abu variantai užtruktų vienodai laiko, o GPU pirmą eilutę atliktų 3 kartus greičiau nei antro varianto tris eilutes. Su texture2drect funkcija galima gauti norimą tašką iš paveikslėlio spalvos. texture2drect funkcijai reikia pateikti du argumentus. Pirmas argumentas - tekstūros numeris, kuriame turi būti ieškomas taškas. Antras argumentas - taško koordinatė. texture2drect funkcija gali grąžinti ne tik vieno taško, artimiausio pasirinktai koordinatei spalvą, o spalvos reikšmę tiesiškai interpoliuojant 4 aplinkinių spalvų apie pasirinktas koordinates spalvas. Interpoliavimo funkcija taip pat yra standartinė GPU funkcija, kurios atlikimas nereikalauja papildomų GPU skaičiavimo operacijų ir yra vykdoma taip pat efektyviai kaip ir paprasta taško paėmimo funkcija. Ar bus imamas arčiausias, ar bus interpoliuojami 4 taškai nurodoma su OpenGL biblioteka. Duomenų tarp CPU ir GPU erdvės mainai vyksta naudojant OpenGL bibliotekos funkcijas. Kad pateiktumėme minėtai texture2drect funkcijai pirmą argumentą norimą tekstūros numerį, turime vykdyti tokias kodo eilutes, kurios naudoja OpenGL bibliotekos funkcijas: gluseprogramobjectarb( shader ); GLint location = glgetuniformlocation(shader, "sampler"); gluniform1f(location, ); Duomenų nusiuntimas GLSL taškų programai. Pirma kodo eilutė pasako, kad turi būti įjungta GLSL programa, kuri identifikuojama shader kintamuoju. Su antra eilute gauname nuorodą į shader kintamuoju apibrėžtos programos sampler kintamąjį. Trečia eilutė leidžia priskirti sampler kintamajam reikšmę, kuri pasako, kad GLSL programoje naudojant texture2drect funkciją su sampler kintamuoju, texture2drect funkcija naudos pirmąją tekstūrą grąžinant pirmos tekstūros vaizdo tašką. Analogiškai aprašoma ir vertikali Gauso filtro programa. Po glodinimo operacijos atliekama kraštų išryškinimo procedūra, naudojant Sobel kraštų radimo operatorių. Kraštų išryškinimo procedūra taip pat yra išskaidyta į du etapus. Visų pirma 36

37 randami kraštų gradientai ir kampai, o toliau vykdomas nemaksimalių verčių atmetimas. Kiekvienam vaizdo taškui yra apskaičiuojamas gradientas G(u,v), kur u, v vaizdo taškų koordinatės. Apskaičiavimui naudojamas vertikalus H x ir horizontalus H y Sobel operatorius. H x 1 1 = H y =. (1) Gradientas G(u,v) randamas pagal formulę: G( u,v ) = G x ( u,v) *G x ( u,v) + G y ( u,v) * G y ( u,v) (2) G x (u, v) = H x *I(u,v) (3) G y (u, v) = H y *I(u,v). (4) Krašto gradiento kryptis randama pagal formulę: α(u,v) = tan -1 (G x /G y ). (5) Kad galėtume atlikti nemaksimalių kraštų atmetimo procedūrą, apskaičiuotos gradiento ir kampo vertės turi būti išsaugotos į vaizdo tašką. Saugojimo procedūra identiška glodinimo algoritme naudojamai procedūrai, kuomet spalva saugoma į gl_fragcolor kintamąjį. Šiuo atveju į gl_fragcolor kintamojo raudoną komponentę yra saugoma gradiento, o į žalią kampo reikšmė (3.2 pav.). Gradientas Kampas 3.2 pav. Gradiento ir gradiento krypties (kampo) saugojimas spalvinėse komponentėse Nemaksimalių kraštų atmetimo procedūra naudojama, kad būtų išskirtas tik gradiento (3.3 pav. A dalis) lokalus maksimumas (3.3 pav. B dalis) pagal gradiento kryptį. Kraštas pažymimas tik tuomet, jei krašto gradientas G(u,v) kryptimi α(u,v) yra lokaliai maksimalus. 37

38 3.3 pav. Kraštų išskyrimas. A dalis krašto gradientas. B išskirtas objekto kraštas atmetant ne lokalius maksimumus. C A ir B dalies kombinacija rodo išskirtą objekto krašto poziciją ir gradientą 3.4. Piramidės sudarymas Toliau vykdoma piramidės sudarymo iš išskirtų modelio kraštų procedūra. Iš objekto kontūrų sudaromą piramidės struktūrą panagrinėsime vėliau. Taigi apatiniame piramidės lygyje ( lygis) yra originalus paveikslėlis modelio kraštai. Aukštesniame lygyje paveikslėlis yra du kartus mažesnis nei žemesniame lygyje esantis paveikslėlis. Kiekvieno aukštesnio lygio paveikslėlis sudaromas iš žemesniame lygyje esančio paveikslėlio (3.4 pav.). Aukštesnio lygio taško vertė I n (x,y) nusakoma kaip maksimali vertė žemesniame lygyje esančių keturių taškų: I n (x, y) = max(i n-1 (x*2, y*2), I n-1 (x*2+1, y*2), I n-1 (x*2, y*2+1), I n-1 (x*2+1, y*2+1)), (6) kur n - piramidės lygis. Tokiu būdu daroma piramidė, kol jos aukščiausio lygio paveikslėlio matmenys didesni už nustatytą minimalių dydį. Toliau sudaryta piramidė (3.4 pav.) perkeliama iš GPU į CPU erdvę. Tuomet vykdomas modelio duomenų struktūros kūrimo procesas. Visų pirma skaičiuojami išskirti objekto kraštai skirtinguose piramidės lygiuose, kad lyginimo ir modelio kūrimo etapuose žinotumėm, kiek reikšmių lyginti, kiek masyvo elementų išskirti ir t.t. Kitu etapu modelio taškai atsitiktinai sumaišomi, kad lyginimo proceso metu galėtumėm pradinį lyginimą atlikti su mažiau taškų, kurie bus atsitiktinai sumaišyti ir modelio dalinio uždengimo atveju geriau atstovaus modeliui nei šalia vienas kito uždengti taškai. 38

39 Toliau pagal nuostačius gali būti sumažinamas modelio lyginamų taškų skaičius, kad lyginimo procedūroje nereikėtų lyginti labai daug modelio taškų. Tai ypač aktualu, jei modelis yra didelis ir turi daug išskirtų kraštų. Paskutiniame etape modelio koordinatės sudedamos į 2D masyvą, kuris nusiunčiamas į GPU, kad kiekvieną kartą, prieš vykdant paiešką, modelio duomenys būtų perkelti į GPU ir nereikėtų iš naujo siųsti. Taigi kiekvieno piramidės lygio modelio koordinatės saugomos šablone, prie kurių galima greitai prieiti šablono lyginimo metu. Apibrėžta modelio kūrimo procedūra gali būti įgyvendinama ir su GPU, tačiau modelio sukūrimo procesas nereikalauja didelio greičio, kadangi modelį užtenka sukurti vieną kartą ir naudoti lyginimo procese kiek norima kartų. Be to, modelio sukūrimas neužtrunka daugiau nei,5 sekundės. 3.4 pav. Išskirta modelio piramidė 3.5. Šablono paieška Šioje dalyje bus apibrėžtas modelio paieškos vaizdo paveikslėlyje algoritmas ir jo ypatybės. Paieškos veikimo principas yra toks: vaizdo šablonas slenkamas per ieškomą paveikslėlį ir tikrinama, ar šablono kraštai atitinka paveikslėlyje esančio objekto kraštus. Lyginimo operacijos rezultatas - sutampantys vaizdo taškai. Kuo daugiau šablono ir ieškomo paveikslėlio taškų sutampa, tuo labiau tikėtina, kad paslinkto šablono pozicija sutampa su ieškomo paveikslėlyje objekto pozicija. Viso paveikslėlio lyginimo su modelių rezultatas pateiktas 3.5 pav. Tokiu būdu slenkant šablonui per visus paveikslėlio taškus, patikrinamos visos galimos pozicijos, kur šablonas galėtų geriausiai atitikti ieškomą objektą. Šis metodas gali surasti objektus tik esant ieškomam pastumtam ir dalinai uždengtam objektui. Jei objektas yra pasuktas, aprašytas metodas neveiks, kai šablono ir ieškomo objekto kampai bus stipriai išsiskyrę (neaktualu apskritimo atveju, kvadrato, kai kvadratas pasuktas 9 laipsnių kampu). Tuomet objekto paieška pagal šabloną duos mažas šablono sutapties su ieškomu objektu vertes, kadangi bus mažai sutampančių objekto ir šablono kraštų taškų. Todėl norint pasiekti paieškos invariantiškumą objekto pasukimui, reikia pritaikyti papildomą paieškos etapą. 39

40 Šiame etape modelis yra papildomai pasukamas ir vykdoma ta pati šablono slinkimo ir lyginimo su paveikslėlyje esančiais objekto kraštais schema. Objekto pasukimų skaičius priklauso nuo reikalaujamo tikslumo. Tokį pat principą galima ir pritaikyti objekto dydžio kitimo kompensavimui ir objekto dydžio radimui. Aprašyta objekto parametrų radimo schema reikalauja labai daug operacijų. Todėl siekiant sumažinti veiksmų skaičių, naudojama hierarchinė vaizdo apdorojimo schema ir kiti patobulinimai. Hierarchinė vaizdų apdorojimo procedūra leidžia stipriai sumažinti veiksmų, skirtų vaizdą apdoroti, kiekį (Borgefors 1988; Steger 22; Treiber 21). Tikrinimas yra vykdomas aukščiausiame lygyje, kur sudaromos hipotezės apie galimas modelio buvimo vietas ir pasukimo kampus. Kadangi lyginimas atliekamas aukščiausiame lygyje, kur paveikslėlio ir modelio dydžiai maži, labai sumažėja lyginimo operacijų. Lyginimo operacijos rezultatas - spalva. Spalvos raudona komponentė gauna reikšmę 1, jei lyginimo rezultatas viršija slenkstį, kitu atveju. Žalioje ir mėlynoje komponentėse saugomos šablono pasukimo kampų pradžia ir pabaiga, kuomet šablono lyginimo rezultatas viršija nustatytą slenkstį. Šiame metode slenkstis parinktas 5 procentų nuo modelio saugomų taškų kiekio. T.y. jei bent 5% taškų atitiks, sistema priims lyginimo rezultatą. Žinoma, šį modelio taškų sutapimo nuostatą vartotojas gali valdyti. Tai ypač aktualu, jei yra didelė tikimybė, kad ieškomas objektas gali būti dalinai uždengtas. Žemesniame lygyje I n (x, y) taške yra tikrinama raudonos komponentės reikšmė n-1 lygyje (x/2, y/2) koordinatėje ir šios koordinatės aplinkiniuose taškuose. Jei reikšmė nors viename taške 1, tuomet daroma hipotezė, kad šis (x, y) taškas yra modelio centrinis taškas ir vykdomas šablono lyginimas, kitu atveju taškas atmetamas. Lyginimas atliekamas tik tose kampų ribose, kurios buvo išsaugotos į žalią ir mėlyną taško komponentes. 4

41 3.5 pav. Šablono lyginimo rezultatas Šablono lyginimo rezultate galima matyti vieną ypač ryškią tamsią sritį (jei paveikslėlis nebūtų invertuotas, sritis būtų šviesi), kurios lokaliame maksimume yra mūsų ieškomas rezultatas Rezultatų suformavimas Po duomenų apdorojimo, gali būti reikalinga pereiti iš paveikslėlio 2D taškų masyvo į detektuotų taškų paveikslėlyje sąrašą. Su CPU tai būtų daroma įprastu būdu: keliaujama per viso paveikslėlio taškų masyvą, tikrinamas kiekvienas vaizdo taškas ir kiekvienas rastas tinkamas taškas pridedamas į rezultatų sąrašą. Kadangi šablono lyginimo rezultatai saugomi didelėje tekstūroje, efektyvus ir tvarkingas rezultatų sudėjimas į sąrašą yra būtinas. Su grafikos procesoriumi tai gali būti padaryta ir paskirstytu (angl. parallel) būdu (Smistad 21; Ziegler et al. 26). Šio būdo privalumas ne vien, kad algoritmas gali būti vykdomas paskirstytai, bet ir nereikia atsisiųsti viso paveikslėlio iš GPU į CPU erdvę, kas leidžia sutrumpinti algoritmo vykdymo laiką. Kai objektų parametrai paveikslėlyje rasti ir saugomi paveikslėlio taškų masyve, reikia vykdyti šių parametrų ištraukimą iš didelio paveikslėlio masyvo, tuo pačiu rasti šių parametrų (x, y) koordinates, kurios parodo rasto modelio pagal šabloną centro koordinates. Paieškos rezultato suformavimo procesą, kai naudojamas vaizdo procesorius, sudaro trys žingsniai: 1. Vaizdo taškų su rezultatais sudėjimas (suskaičiavimas) formuojant piramidės struktūrą. 2. Rezultato masyvo (tekstūros) užpildymas naudojant suformuotą piramidę. 41

42 Aukščiausias piramidės lygis Antras piramidės lygis Pirmas piramidės lygis Šablono rezultatų masyvas 3.6 pav. Rezultatų formavimo proceso metu sudaryta piramidė Piramidės struktūra (3.6 pav.) pradedama formuoti nuo šablono lyginimo rezultatų masyvopaveikslėlio (3.5 pav.). Pirmas piramidės lygis bus du kartus mažesnis nei šablono paieškos rezultatų masyvas, iš kurio formuojamas pirmas lygis, kurio vaizdo taškuose saugomas rastų šablonų kiekis (aptiktų šablonų paveikslėlyje skaičius). Aukštesniuose lygiuose yra sumuojami keturi kaimyniniai žemesnio lygio taškai ir tęsiama tol, kol piramidės plotis ir aukštis bus lygus vienam. Aukščiausiame piramidės lygyje esanti reikšmė parodo šablono rezultatų kiekį. Panaudojus OpenGL bibliotekos standartines funkcijas, šį skaičių jau galime nuskaityti į CPU erdvę. Šis skaičius bus pirmasis paieškos vykdytos su GPU parametras, kuris bus nuskaitytas iš GPU. Rezultato masyvo užpildymas paremtas Mortono kodu, kuris leidžia patogiai ir efektyviai iš 1D masyvo pereiti į 2D masyvą ir atvirkščiai. Rezultato masyvo pildymas yra vykdomas lygiagrečiai, t.y. kiekvienas masyvo elementas turi indeksą, pagal kurį vykdoma paieška suformuotoje piramidėje. Panagrinėkime pavyzdį (5 pav.), kad geriau suprastume kaip vykdoma paieška. Iš aukščiausio piramidės P lygio n (4 pav.) paimame skaičių 5, kuris parodo, kiek rezultato taškų buvo rasta. Tuomet leidžiamės į žemesnį piramidės P lygį n-1 ir pagal masyvo B indeksą i (pavyzdžio atveju 4) tikrinama, į kurią šaką reikia toliau keliauti. Tikrinimas atliekamas taip: žiūrima pagal 3pav. pavaizduotą elementų peržiūros tvarką į pirmąjį skaičių P n-1 (x, y) 3 iš piramidės lygio P n-1 ir jei jis viršija arba lygus masyvo B indeksui i, leidžiamasi į žemesnio piramidės lygio P n-2 elementų grupę {(x*2, y*2), (x*2+1, y*2), (x*2, y*2+1), (x*2+1, y*2+1)}, kurią atstovauja pirmasis taškas P n-1 (x, y). Jei indeksas i didesnis už pirmąjį skaičių P n-1 (x, y), tuomet tikrinama ar antrojo P n-1 (x+1, y) ir 42

43 pirmojo skaičių suma P n-1 (x, y)+p n-1 (x+1, y) viršija arba lygi masyvo indeksui i. Jei suma viršija arba lygi, leidžiamasi į žemesnio piramidės lygio P n-2 elementų grupę {((x+1)*2, y*2), ((x+1)*2+1, y*2), ((x+1)*2, y*2+1), ((x+1)*2+1, y*2+1)} kurią atstovauja antrasis taškas P n-1 (x+1, y) ir indekso i reikšmė sumažinama pirmojo skaičiaus reikšme. Jei suma mažesnė, analogiškai skaičiuojama pirmų trijų elementų suma ir jai viršijus ar esant lygiai leidžiamasi į taško P n-1 (x, y+1) atstovaujamą grupę ir indeksas i sumažinamas pirmųjų dviejų elementų suma, kitu atveju leidžiamasi į P n-1 (x+1, y+1) taško atstovaujamą grupę piramidės lygyje P n-2 ir indekso i reikšmė mažinama pirmųjų trijų skaičių suma. Pavyzdžio atveju indeksas 4 mažesnis tik po 4 taškų sumos (3+++4), todėl leidžiamasi į taškų grupę, atstovaujamą ketvirtojo taško, o indekso reikšmė sumažinama trimis iki 1. Ta pati verčių lyginimo ir paieškos operacija atliekama kituose piramidės lygiuose iki bus pasiektas žemiausias piramidės lygis. Piramidės lygiai Rezultatų masyvas Piramidės lygio elementų peržiūrėjimo tvarka 3.7 pav. Rezultatų formavimo proceso pavyzdys Pavyzdyje (3.7 pav.) matome, kaip iš viršūnės su skaičiumi 5 keliaujama į taškų grupę,kurią atstovauja ketvirtasis elementas. Toliau taip pat leidžiamasi į ketvirto elemento atstovaujamą grupę, kadangi pirmų trijų taškų suma neviršija 1 (sumažinto indekso i nuo 4 per pirmų trijų elementų sumą). Kadangi pasiekėme apatinį lygį, o mūsų indeksas i lygus pirmajam elementui, rezultatų masyvo ketvirtam indeksui galima priskirti rastame elemente saugomą informaciją. Tokiu būdu užpildomas visas rezultatų masyvas. Kadangi dažniausiai masyvas bus nedidelis, tai jo nuskaitymas į CPU erdvę nereikalaus daug išteklių. 43

44 3.7. GPU ir CPU greičio palyginimas Vaizdo apdorojimo procedūra pagal nagrinėtą literatūrą turėjo būti žymiai greitesnė su GPU nei su CPU. Kadangi objekto parametrų išskyrimo metodą sudėtinga lyginti su kitų autorių atliktais darbais dėl skirtingų sąlygų (kompiuterio, metodo, duomenų), o specialios komercinės bibliotekos sunkiai prieinamos, todėl buvo palygintas populiarus Canny kraštų išskyrimo metodas, kuris sudarytas iš trijų dalių: glodinimas, kraštų išskyrimo operatorius ir nemaksimalių lokalių reikšmių pagal gradiento kryptį atmetimas. Testui atlikti buvo naudojamas nešiojamas kompiuteris su dviejų branduolių Intel 2,26GHz procesoriu ir NVIDIA Quadro NVS 16 vaizdo plokšte. Taip pat buvo testuota su stacionariu kompiuteriu, kuris turi keturių branduolių AMD Phenom 3,2GHz procesorių ir ATI Radeon HD 555 vaizdo plokštę. Įgyvendintas Canny metodas vykdymui su GPU buvo lyginamas su populiarios atviro kodo OpenCV bibliotekos pateikiamu Canny metodu. Vaizdo apdorojimo testas su GPU buvo vykdomas, kai vienai taško spalvinei komponentei buvo skirta 8 bitai, kitu atveju 32 bitai. 32 bitu formatas yra labai priimtinas, kadangi komponentės reikšmė gali kisti dideliame float formato intervale. Tai leidžia į komponentes saugoti pakankamai dideles reikšmes, kurių saugojimas naudojamas kituose modelio paieškos etapuose. Deja, kaip galima matyti iš 3.1 lentelės, greitis nukrenta 2-3 kartus lyginant su 8 bitų formatu. Pagal 3.1 lentelę galima pastebėti, kad Canny kraštų išskyrimas veikia iki 3 kartų greičiau su GPU, nei CPU (OpenCV 25ms., o pateiktas metodas,8ms., kai paveikslėlio dydis 512x512). Deja, dėl duomenų perkėlimo į GPU juos apdoroti ir apdorojus nuskaityti prarandama daug laiko. 3.1 lentelė. Canny algoritmo atlikimo laikas su CPU naudojant OpenCV bibioteką ir įgyvendintas vykdymui su GPU metodas Kompiuteris Intel 2x2,2GHz + Nvidia NVS 16M Veiksmas Gauso 9x9 glodinimas Canny (Sobel+nemaksimalių reikšmių atmetimas) Duomenų perkėlimas Paveikslėlio dydis 512 x 512 CPU GPU GPU OpenCV 8-bit 32-bit 1 ms. 1,5 ms. 2,5 ms. 14 ms. 2,1 ms. - 2,4 ms. 3,1 ms. 8,4 ms. Paveikslėlio dydis 124 x 124 CPU GPU GPU OpenCV 8-bit 32-bit 4 ms. 5,5 9,5 ms. ms. 35 ms. - 8,5 ms. 11 ms. 11,5 ms. 32 ms. Intel 2x2,2GHz + Nvidia NVS 16M AMD Phenom 4x3.2GHz + ATI Radeon HD 555 Bendras apdorojimas su duomenų perkėlimu Bendras apdorojimas su duomenų perkėlimu 24 ms. 6 ms. 14 ms. 75 ms. 25 ms.,8 ms. 2,2 ms. 94 ms. 24 ms. 2,9 ms. 53 ms. 8,8 ms. 44

45 Nešiojamuose kompiuteriuose naudojami grafikos procesoriai dažniausiai neturi daug procesorių, tuo tarpu stacionariuose kompiuteriuose integruojami grafikos procesoriai turi iki kelių tūkstančių procesorių, lyginant su vienetais centrinių procesorių. Dėl šių priežasčių stacionariuose kompiuteriuose vykdomas objekto pozicijos nustatymo algoritmas su GPU veikia daug kartų greičiau lyginant su CPU. Dar pastebimai didesnį greitį galima pasiekti, jei būtų naudojama galingesnė vaizdo plokštė, tuo tarpu geresnis procesorius reikšmingo metodo pagreitėjimo neduos. Taip pat galima pastebėti, kad OpenCV bibliotekos pateikiamo metodo greitis nepriklauso nuo procesorių skaičiaus, todėl galima teigti, kad standartinė OpenCV biblioteka pateikia Canny kraštų išskyrimo metodą skirtą vykdyti tik su vienu procesoriu. Visas objekto parametrų nustatymo metodas su nešiojamu kompiuteriu trunka apie 5 ms., kai paveikslėlio dydis 512x512 ir 11ms., kai paveikslėlio dydis 124x124. Įgyvendintas metodas buvo palygintas su OpenCV bibliotekos pateikiamu šablono paieškos metodu. OpenCV šablono paieškos metodas pateiktą modelį (3.9 pav.) vidutiniškai randa per 65 ms., todėl šiame darbe pateiktas metodas yra 6 kartus greitesnis už OpenCV bibliotekos objekto paieškos metodą. Taip pat OpenCV bibliotekoje pateiktas metodas netoleruoja objekto dalinio uždengimo ir pasukimo, dėl kurio šablono paieškos metodas netenka tikslumo, jei objekto pasukimo kampas kinta. Taip pat buvo testuotas OpenCV bibliotekoje pateikiamas Chamfer metodas, kuris šablono paiešką atlieka pagal išskirtus objekto taškus. Chamfer metodas gali atpažinti objektą, jei kinta objekto pozicija ar nestipriai kinta objekto kraštai (pvz. objektas didėja ar mažėja). Deja OpenCV bibliotekoje pateiktas Chamfer metodas netoleruoja objekto pasukimo ir šis metodas objektą randa per 2 s., todėl šis metodas be patobulinimų netinkamas naudoti greitose objekto paieškos sistemose Metodo tikslumas Mašinine rega gaunamų rezultatų stabilumas ir tikslumas yra labai aktualus, kai mašininės regos sprendimai yra diegiami į pramoninius įrenginius ne vien tik lazerių, bet ir kitose pramonės srityse. Įgyvendinto metodo stabilumo ir tikslumo įvertinimui buvo atliekami bandymai. Bandymų metu buvo atliekama objekto paieška pagal pateiktą modelį. Vaizdo fiksavimui buvo naudojama IDS ueye pramoninė kamera. Detalės apšvietimui buvo naudojamas šviesos diodų žiedas. Metodo stabilumo ir tikslumo patikrinimo metu buvo atliekami tokie bandymai: Apvalaus modelio (monetos) paieška. Detalės modelio paieška vaizde, kai detalė vaizde nėra uždengta ir nesusidaro šešėliai. Detalės modelio paieška vaizde, kai detalė vaizde yra uždengta ir nesusidaro šešėliai. Detalės modelio paieška vaizde, kai detalė vaizde yra neuždengta ir susidaro šešėliai. 45

46 Metodo testavimas pradedamas nuo detalės modelio sukūrimo, todėl į kameros matymo lauką buvo padėta detalė. Toliau kameros vaizde buvo apibrėžiama detalės sritis, pagal kurią sudaromas detalės modelis. Detalės modeliui sudaryti buvo parinkta 5 procentų išskirtų detalės kraštų, kurie atsitiktiniu būdu parenkami iš išskirtų kraštų sąrašo. Kai detalės modelis paruoštas, detalės pozicija lieka nepakitusi nuo paruošto modelio pozicijos. Todėl mašininės regos sistema geriausiu atveju turėtų rasti modelio poziciją nepakitusią laikui einant. 3.8 pav. pateiktas objekto pozicijos nustatymo stabilumo ir tikslumo grafikas. 3.8 pav. Objekto pozicijos nustatymo stabilumo ir tikslumo grafikas Pagal 3.8 pav. galima matyti, kad įgyvendintas metodas modelio centro poziciją randa didesniu negu 2,5 vaizdo taško tikslumu. Atlikus bandymą su apvalia penkių litų moneta (3.9 pav.), buvo rastas vidutinis apie,3 laipsnių nuokrypis nuo tikros monetos kampo padėties. Nuokrypis atsirado dėl monetos apvalumo ir prasto kraštų išskyrimo, pagal kuriuos būtų galima nustatyti monetos pasisukimo kampą. 46

47 3.9 pav. Rastas monetos modelis Atliekant bandymus su stačiakampio formos detale, detalės kampo nuokrypis nebuvo fiksuojamas. Kadangi tiksliausio detalės piramidės lygio lyginimo metu kampas kito,3 laipsnio, todėl galima teigti, kad detalės kampas buvo nustatytas didesniu negu,3 laipsnio tikslumu. Pagal 3.8 pav. galima matyti, kad turint detalę dalinai uždengtą (3.1 pav.) ar (ir) su šešėliu (3.11 pav.), detalės pozicija nustatoma kokybiškai. 3.1 pav. Nustatyta dalinai uždengtos detalės pozicija 47

48 Kadangi detalės spalva stipriai skiriasi nuo aplinkos spalvos, todėl tikslus detalės kraštų išskyrimas ir detalės forma (nėra apvali) leidžia užtikrinti aukštą detalės pozicijos (centro ir pasukimo kampo) nustatymo tikslumą ir stabilumą pav. Nustatyta dalinai uždengtos ir su šešėliu detalės pozicija Kadangi modelio paieškos nuostatose buvo parinktas 5 procentų modelio taškų sutapimo su objektu slenkstis, todėl uždengus daugiau nei 5 procentų objekto kraštų, modelis nerandamas. Pagal atliktus tyrimus galima teigti, kad aprašytas metodas atsparus vaizdo triukšmui, daliniam objekto uždengimui, daliniam kontrasto tarp aplinkos ir objekto nebuvimui. Dažniausiai industriniuose taikymuose objekto dydis nekinta, todėl objekto dydis laikomas pastoviu ir nelabai aktualiu objekto pozicijos radime. Įgyvendintas metodas leidžia įvertinti objekto centro poziciją didesniu negu 2,5 vaizdo taško tikslumu, todėl galima teigti, kad įgyvendintas metodas yra tikslus ir stabilus Metodo privalumai, trūkumai ir tolesni tyrimai Atlikus vaizdo apdorojimo greičių palyginimą, buvo nustatyta, kad vaizdo apdorojimas kai spalvos komponentei saugoti naudojami 8 bitai vietoje 32 bitų, leistų pasiekti 2-3 kartus sparčiau veikiančius vaizdo apdorojimo metodus. Deja dėl objekto lyginimo metu naudojamų algoritmų 8 bitų formatas nėra tinkamas. Yra keletas šios problemos sprendimo variantų: 1. Reikia rasti kitą greitą ir tikslų metodą leidžiantį vienu etapu atlikti objekto paiešką ir rastus rezultatus suspausti į keturias 8 bitų spalvos komponentes. Rezultatų suspaudimas reikalingas, nes į 48

49 8 bitų formatą galima saugoti reikšmes kintančias tik nuo iki 256. Į šias ribas vieno laipsnio tikslumu nepavyks išsaugoti objekto kampo, kuris gali kisti nuo -18 iki 18 laipsnių. Jei paieškos metodas yra tikslesnis nei vienas laipsnis ar objekto pozicija nustatoma taško dalių tikslumu, į keturias 8 bitų spalvų komponentes nepavyks dideliu tikslumu išsaugoti objekto pozicijos. Tikslių rezultatų išsaugojimui galima būtų įgyvendinti metodą saugantį pozicijos nustatymo reikšmes į kelis vaizdo taškus, bet šis sprendimo variantas taip pat lėtintų objekto paieškos metodą. 2. Verta objekto paieškos pradžią (vaizdo deformacijų panaikinimą, kraštų išskyrimą) atlikti su 8 bitų formatu, kuris yra pakankamas daugeliui vaizdų apdorojimo uždavinių, o objekto lyginimą atlikti su 32 bitų formatu ar lyginimui atlikti naudoti CPU. Kad lyginimą atlikti su 32 bitų formatu, 32 bitų paveikslėlį su objekto kraštais reiktų versti į 8 bitų formatą. OpenGL biblioteka turi reikimus metodus šiam vertimui atlikti, tačiau reikia atlikti detalesnius tyrimus ir modifikuoti darbo su duomenų struktūromis ir formatais programos kodą. Paieškai atlikti galima būtų panaudoti CPU, kurio programavimo lankstumas leistų sumažinti nereikalingų veiksmų kiekį, kuris atliekamas su GPU paieškos rezultatų tikslinimo etapuose. Aprašytas metodas atsparus daliniam objekto uždengimui ar daliniam kontrasto tarp aplinkos ir objekto nebuvimui, dėl kurio gali būti neišskirti objekto kraštai. Tipinės kraštų "praradimo" situacijos: objekto spalva atitinka aplinkos spalvą, per stiprus apšvietimas ar atspindys, dėl kurio kameros vaizdo taškai įsisotina ir vaizdo taškų informacija prarandama (3.12 pav.; 3.13 pav.) pav. Atspindys, dėl kurio prarandama dalis objekto kraštų 3.13 pav. Pritaikyta kraštų išskyrimo operacija 3.12 paveikslėliui Dažniausiai industriniuose taikymuose objekto dydis nekinta, todėl objekto dydis laikomas pastoviu ir nelabai aktualiu objekto pozicijos radime. Be abejo galima rasti pavyzdžių, kai objekto dydis kinta: ant konvejerio važiuojantis objektas kilnojasi aukštyn-žemyn (mažėjant objekto 49

GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE

GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE 14-osios Lietuvos jaunųjų mokslininkų konferencijos Mokslas Lietuvos ateitis ISSN 2029-7149 online 2011 metų teminės konferencijos straipsnių rinkins ISBN 978-9955-28-835-0 KOMPIUTERINĖ GRAFIKA IR PROJEKTAVIMAS

More information

Parengė ITMM Artūras Šakalys 1

Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 2 Kaip suprantame masyvą? Pavyzdys: Peteliškių šeima; Gėlių laukas; 2014.02.02 Parengė ITMM Artūras Šakalys 3 Kaip suprasti

More information

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5] Masyvas 2013 1 Vienmatis masyvas Veiksmai su masyvo elementais: reikšmių priskyrimas ir išvedimas, paieška, rikiavimas. Masyvų perdavimas procedūros (funkcijos) parametrais. 2 Kas yra masyvas? Masyvu vadinamas

More information

El. pašto konfigūravimas

El. pašto konfigūravimas El. pašto konfigūravimas Outlook Express (integruota Windows XP) elektroninio pašto klientas Žemiau pateikta instrukcija, kaip sukonfigūruoti savo elektroninį paštą vartotojams, turintiems elektroninio

More information

Elektroninis.lt šakninių sertifikatų diegimas

Elektroninis.lt šakninių sertifikatų diegimas Elektroninis.lt šakninių sertifikatų diegimas Ši instrukcija aprašo, kaip į kompiuterį įdiegti šakninius elektroninis.lt sertifikatus. Diegimo darbus galima atlikti turint kompiuterio administratoriaus

More information

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) C++ programavimo kalba Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) Konstruktorius Sukuriant objektą, jo duomenims paprastai turi būti priskiriamos pradinės

More information

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) C programavimo kalba 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) Sąlygos operatorius if - else Sąlygos operatoriai skirti perduoti programos vykdymą vienai ar kitai programos šakai. Operatorius

More information

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo)

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo) DUOMENŲ STRUKTŪROS IR ALGORITMAI Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo) Rūšiavimo veiksmas Kasdieniniame gyvenime mes dažnai rūšiuojame: Failus kataloguose Katalogus lokaliame diske Kasdienines

More information

Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas

Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas Pasirenkamojo modulio kūrybinis darbas atliekamas keliais etapais: kūrybinio darbo temos (problemos / užduoties) pasirinkimas ir derinimas

More information

JAVA pagrindai Lek. Liudas Drejeris

JAVA pagrindai Lek. Liudas Drejeris JAVA pagrindai Lek. Liudas Drejeris Programa (1) Programa, tai eilė instrukcijų (vadinamų programiniais sakiniais), kurie vykdomi paeiliui, kol gaunamas norimas rezultatas. Programa (2) Programa (2) /*

More information

C programavimo kalba. 5 paskaita (Funkcijos, masyvai)

C programavimo kalba. 5 paskaita (Funkcijos, masyvai) C programavimo kalba 5 paskaita (Funkcijos, masyvai) Funkcijų pavyzdys // Skaičių lyginimo programa #include void pmax(int, int); /* prototipas */ int main() {int i, j; for (i = -10; i

More information

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV Pagrindas OS X, skirtas ARM įrenginiams Programavimo aplinka: XCode ir Objective-C Programavimo kompiuteris -

More information

Come to the TypeScript

Come to the TypeScript Come to the TypeScript we have type hinting! Sergej Kurakin Sergej Kurakin Amžius: 36 Dirbu: NFQ Technologies Pareigos: Programuotojas Programuoti pradėjau mokytis 1996 metais. Programuotoju dirbu nuo

More information

VAIZDO APDOROJIMO METODŲ TYRIMAS IR TAIKYMAS PAPILDYTOS REALYBĖS SISTEMOSE

VAIZDO APDOROJIMO METODŲ TYRIMAS IR TAIKYMAS PAPILDYTOS REALYBĖS SISTEMOSE VAIZDO APDOROJIMO METODŲ TYRIMAS IR TAIKYMAS PAPILDYTOS REALYBĖS SISTEMOSE Edgaras Artemčiukas, Leonidas Sakalauskas Vilniaus Universitetas Įvadas Papildytos realybės sritis išsivystė iš virtualios realybės.

More information

Kompiuterių diagnostika

Kompiuterių diagnostika Kompiuterių diagnostika Paskaitoje bus apžvelgta: AK architektūra ir vaizdo plokščių vieta joje Vaizdo plokštės sandara Populiariausi ekrano raiškos standartai Šiuolaikinių grafinių procesorių architektūra

More information

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai Pavyzdys A 2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai int konvertuojamas(int skaic, int id); char konvertuojamas2(int dal);

More information

Trumpai-ilga istorija

Trumpai-ilga istorija Įvadas į Web Services Kas yra Web Service? Kas ką žino??? 70-ieji: Mainframe Trumpai-ilga istorija 80-ieji: Client-Server Istorijos 90-ieji: Web 2000: SOA 2010: Cloud Computing Šaltinis: Sergejus Barinovas,

More information

JAKUŠEV DEVELOPMENT, ANALYSIS AND APPLICATIONS OF THE TECHNOLOGY FOR PARALLELIZATION OF NUMERICAL ALGORITHMS FOR SOLUTION OF PDE AND SYSTEMS OF PDES

JAKUŠEV DEVELOPMENT, ANALYSIS AND APPLICATIONS OF THE TECHNOLOGY FOR PARALLELIZATION OF NUMERICAL ALGORITHMS FOR SOLUTION OF PDE AND SYSTEMS OF PDES Aleksandr JAKUŠEV DEVELOPMENT, ANALYSIS AND APPLICATIONS OF THE TECHNOLOGY FOR PARALLELIZATION OF NUMERICAL ALGORITHMS FOR SOLUTION OF PDE AND SYSTEMS OF PDES Summary of Doctoral Dissertation Technological

More information

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017 Gijos Gijų modelis Javoje R.Vaicekauskas, OP, 2017 1 Turinys Motyvacija Sukūrimas Valdymas Sinchronizacija Susijusios klasės 2 Motyvacija Gijos reikalingos tam, kad išreikšti lygiagretumą vieno proceso

More information

Amadeus On-Line Helpdesk

Amadeus On-Line Helpdesk Amadeus On-Line Helpdesk Vartotojo instrukcija Skirta kelionių agentūroms Turinys Įžanga... 3 Jungimasis prie Amadeus Helpdesk... 3 Patarimai ir pastabos... 7 Dokumento valdymas 2007 Apsauga Viešas Įmon

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Operatorių perkrovimas (7 paskaita) Operatorių perdengimas Programavimo kalbose naudojami operatoriai pasižymi polimorfizmu (daugiavariantiškumu). Kaip pavyzdys gali būti operatorius

More information

WVGA :9 None. This is the only supported resolution for Windows Phone OS 7.1.

WVGA :9 None. This is the only supported resolution for Windows Phone OS 7.1. Windows Phone Palaikomi ekranai Resolution Resolution Aspect ratio Delta from Windows Phone OS 7.1 Scaled resolution WVGA 480 800 15:9 None. This is the only supported resolution for Windows Phone OS 7.1.

More information

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Polimorfizmas Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2009-2010 m. m. pavasario semestras Dar apie paveldėjimą Java kalboje kiekvienas paveldėtos klasės objektas gali būti naudojamas ten, kur

More information

Tautvydas Dagys Microsoft Lietuva

Tautvydas Dagys Microsoft Lietuva Tautvydas Dagys Microsoft Lietuva Programos akademinėms institucijoms ir studentams Studentų partnerių programa Akademinės institucijoms Studentams MSDN AA Tai efektyvus būdas aprūpinti savo laboratorijas/klases

More information

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ Renata Baronienė, Egidijus Paliulis Šiaulių universitetas, Technologijos fakultetas Įvadas Kasmet didėja kaupiamų, saugojamų ir apdorojamų duomenų kiekiai ir apimtys.

More information

Išplėtimo lizdai gale (kiekis): 7 Korpuso spalva: Black Išorinių 5.25" lizdų skaičius: 4 Išorinių 3.5" lizdų skaičius: 1 Vidinių 3.

Išplėtimo lizdai gale (kiekis): 7 Korpuso spalva: Black Išorinių 5.25 lizdų skaičius: 4 Išorinių 3.5 lizdų skaičius: 1 Vidinių 3. Korpusas (case) MicroATX: Yra 3.5" External: 2 3.5" Internal: 1 5.25" External: 2 Audio-Out: 1 USB 2.0: 2 Spalva: Juodas / Sidabrinis Unit Brutto Volume: 0.021805 Unit Net Weight: 4.37 Unit Gross Weight:

More information

WWW aplikacijų saugumas 2

WWW aplikacijų saugumas 2 WWW aplikacijų saugumas 2 Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009

More information

MULTI-OBJECTIVE GLOBAL OPTIMIZATION OF GRILLAGES USING GENETIC ALGORITHMS

MULTI-OBJECTIVE GLOBAL OPTIMIZATION OF GRILLAGES USING GENETIC ALGORITHMS VILNIUS GEDIMINAS TECHNICAL UNIVERSITY Darius MAČIŪNAS MULTI-OBJECTIVE GLOBAL OPTIMIZATION OF GRILLAGES USING GENETIC ALGORITHMS SUMMARY OF DOCTORAL DISSERTATION TECHNOLOGICAL SCIENCES, MECHANICAL ENGINEERING

More information

Informacijos apsaugos standartai serija

Informacijos apsaugos standartai serija Informacijos apsaugos standartai 27000 serija Pareng : Marius Celskis www.isec.lt 2007 m. balandis 12 d. ISO 27000 serija 2 iš 9 Tarptautin standartizacijos organizacija ISO informacijos apsaugos standartizavimui

More information

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Paveikslėliai Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Klasė Image Priklauso paketui java.awt Abstrakti klasė paveldėta iš Object Tai visų grafinių paveikslėlių

More information

Sequential Nonlinear Mapping versus Simultaneous One

Sequential Nonlinear Mapping versus Simultaneous One INFORMATICA, 2002, Vol. 13, No. 3, 333 344 333 2002 Institute of Mathematics and Informatics, Vilnius Sequential Nonlinear Mapping versus Simultaneous One Algirdas Mykolas MONTVILAS Institute of Mathematics

More information

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS Sąlygos sakiniai PHP skriptų vykdymo eigą galite valdyti naudodami sąlygos sakinius. Sąlygos sakiniai tai loginės struktūros, kuriose saugomas kodas, įvykdomas įgyvendinus

More information

RECONSTRUCTION OF 3D OBJECT S SURFACE IMAGE USING LINEAR BEAM

RECONSTRUCTION OF 3D OBJECT S SURFACE IMAGE USING LINEAR BEAM VILNIUS GEDIMINAS TECHNICAL UNIVERSITY Vilius MATIUKAS RECONSTRUCTION OF 3D OBJECT S SURFACE IMAGE USING LINEAR BEAM SUMMARY OF DOCTORAL DISSERTATION TECHNOLOGICAL SCIENCES, ELECTRICAL AND ELECTRONIC ENGINEERING

More information

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // C programavimo kalba 10 paskaita (Struktūros) Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // Gale

More information

Step-by step guide for MRU students to uploading Master s Thesis to elaba repository

Step-by step guide for MRU students to uploading Master s Thesis to elaba repository Step-by step guide for MRU students to uploading Master s Thesis to elaba repository www.elaba.lt Log in the repository Go to www.elaba.lt Select Submit to repository Select your institutional affiliation

More information

Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI

Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI Distributed memory parallel programming Paskirstytos atminties lygiagretieji kompiuteriai Kiekvienas procesorius turi tik savo nuosavą atmintį

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Rodyklė this, C++ string klasė (9 paskaita) Rodyklėthis Visos objekto funkcijos gali naudotis rodykle this, kuri rodo į patį objektą. Tokiu būdu kiekviena funkcija gali rasti objekto,

More information

Redis Ma as, greitas, galingas. Specialiai VilniusPHP

Redis Ma as, greitas, galingas. Specialiai VilniusPHP Redis Ma as, greitas, galingas Specialiai VilniusPHP 2013.06.06 Sergej Kurakin Na, Jūs mane jau nekarta matėte, tai nieko nesakysiu apie save. Kaip aš susipa inau! Tai buvo prieš keletą metų! Projektas

More information

C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ

C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ LIETUVOS EDUKOLOGIJOS UNIVERSITETAS GAMTOS, MATEMATIKOS IR TECHNOLOGIJŲ FAKULTETAS INFORMATIKOS KATEDRA Arvydas Putna C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ Magistro baigiamasis darbas Darbo

More information

INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO SISTEMA

INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO SISTEMA ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Denas Pavlavičius Informatikos specialybės II kurso dieninio skyriaus studentas INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO

More information

Scrum su Kanban naudojančios organizacijos programų sistemų kūrimo proceso vertinimas

Scrum su Kanban naudojančios organizacijos programų sistemų kūrimo proceso vertinimas ISSN 9-056. INORMACIJOS MOKSLAI. 07 79 DOI: https://doi.org/0.588/im.07.79.05 Scrum su Kanban naudojančios organizacijos programų sistemų kūrimo proceso vertinimas Vaidotas Pėkis Vilniaus universiteto

More information

TECHNOLOGIJOS UNIVERSITETAS TRIMAČIŲ OBJEKTŲ SANKIRTŲ NUSTATYMAS, NAUDOJANT CUDA

TECHNOLOGIJOS UNIVERSITETAS TRIMAČIŲ OBJEKTŲ SANKIRTŲ NUSTATYMAS, NAUDOJANT CUDA KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS Tadas Baskutis TRIMAČIŲ OBJEKTŲ SANKIRTŲ NUSTATYMAS, NAUDOJANT CUDA Baigiamasis magistro projektas Vadovas Lekt. dr. Kęstutis Jankauskas KAUNAS,

More information

Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas

Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas Justas Dapkūnas 2017 1 Įvadas Šio darbo tikslas yra praktiškai išbandyti baltymų struktūrų modeliavimą, naudojant paprastus

More information

TRAJECTORIES FORMATION FOR MOBILE MULTIDIMENSIONAL PIEZOROBOTS WITH NANOMETER RESOLUTION

TRAJECTORIES FORMATION FOR MOBILE MULTIDIMENSIONAL PIEZOROBOTS WITH NANOMETER RESOLUTION VILNIUS GEDIMINAS TECHNICAL UNIVERSITY Asta DRUKTEINIENĖ TRAJECTORIES FORMATION FOR MOBILE MULTIDIMENSIONAL PIEZOROBOTS WITH NANOMETER RESOLUTION SUMMARY OF DOCTORAL DISSERTATION TECHNOLOGICAL SCIENCES,

More information

Principles of Computer Architecture Processors Lecture 1

Principles of Computer Architecture Processors Lecture 1 Principles of Computer Architecture Processors Lecture 1 prof.dr. Dalius Mažeika Dalius.Mazeika@vgtu.lt http://dma.vgtu.lt Room No. L424 Lectures and evaluation Scope of the course is 3 ECTS (80 hours)

More information

PROGRAMINĖS ĮRANGOS KŪRIMO PRIEMONIŲ MOBILIOSIOMS PLATFORMOMS TYRIMAS

PROGRAMINĖS ĮRANGOS KŪRIMO PRIEMONIŲ MOBILIOSIOMS PLATFORMOMS TYRIMAS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMATIKOS STUDIJŲ PROGRAMA AUDRIUS MIČIULIS PROGRAMINĖS ĮRANGOS KŪRIMO PRIEMONIŲ MOBILIOSIOMS PLATFORMOMS TYRIMAS Magistro darbas Darbo vadovas

More information

Rekomendacijos skaitmeninimo įrangai

Rekomendacijos skaitmeninimo įrangai Rekomendacijos skaitmeninimo įrangai Šiame dokumente pateikiamas kompiuterinės programinės bei kitos įrangos aprašymas yra rekomendacinio pobūdžio. Rekomendacijos skirtos visiems Lietuvos muziejams, kurie

More information

Rekomendacijos skaitmeninimo įrangai

Rekomendacijos skaitmeninimo įrangai Rekomendacijos skaitmeninimo įrangai Šiame dokumente pateikiamas kompiuterinės, programinės bei kitokios įrangos aprašymas yra rekomendacinio pobūdžio. Rekomendacijos skirtos visiems Lietuvos muziejams,

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Šablonai (10 paskaita) Kodėl šablonai (templates)? Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų tipais (pvz. modulio radimas,

More information

Spatial classification rule with distance in three dimensional space

Spatial classification rule with distance in three dimensional space Lietuvos matematikos rinkinys ISSN 0132-2818 Proc. of the Lithuanian Mathematical Society, Ser. A Vol. 57, 2016 DOI: 10.15388/LMR.A.2016.15 pages 81 85 Spatial classification rule with distance in three

More information

MINING FREQUENT SEQUENCES IN LARGE DATA ARRAYS

MINING FREQUENT SEQUENCES IN LARGE DATA ARRAYS INSTITUTE OF MATHEMATICS AND INFORMATICS VYTAUTAS MAGNUS UNIVERSITY Romanas Tumasonis MINING FREQUENT SEQUENCES IN LARGE DATA ARRAYS Summary of Doctoral Dissertation Physical Sciences (P 000) Informatics

More information

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Java grafinės bibliotekos AWT (Abstract Window Toolkit) Swing 2009.04.09 P.Kasparaitis. Objektinis

More information

PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V ) 1

PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V ) 1 SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V-02-001) 1 UGDYMO PLĖTOTĖS CENTRAS PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS

More information

LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC

LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC Bronius Paradauskas, Aurimas Laurikaitis, Sigitas Paulavičius, Anna Truncaitė Kauno technologijos universitetas, Informacijos sistemų katedra, Studentų g. 50,

More information

Pelenų debesies trajektorijos ir oro uosto procedūrų modeliavimas bei vizualizavimas

Pelenų debesies trajektorijos ir oro uosto procedūrų modeliavimas bei vizualizavimas VILNIAUS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS PROGRAMŲ SISTEMŲ KATEDRA Pelenų debesies trajektorijos ir oro uosto procedūrų modeliavimas bei vizualizavimas Modeling and visualization of

More information

A Lithuanian Verbalization Template for ORM conceptual models and rules

A Lithuanian Verbalization Template for ORM conceptual models and rules A Lithuanian Verbalization Template for ORM conceptual models and rules Mustafa Jarrar, Vrije Universiteit Brussel, Belgium. (Contact Author) Maria Keet, Free University of Bozen-Bolzano, Italy. Juozas

More information

Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas)

Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas) Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas) Vilnius 2010 - 2 - Turinys PROGRAMAVIMO SAMPRATA... - 4 - KINTAMIEJI

More information

RESEARCH OF CIRCULAR RASTER SCALES IN COMPACT DISK

RESEARCH OF CIRCULAR RASTER SCALES IN COMPACT DISK VILNIUS GEDIMINAS TECHNICAL UNIVERSITY Deividas SABAITIS RESEARCH OF CIRCULAR RASTER SCALES IN COMPACT DISK SUMMARY OF DOCTORAL DISSERTATION TECHNOLOGICAL SCIENCES, MEASUREMENT ENGINEERING (10T) Vilnius

More information

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy C programavimo kalba 12 paskaita (Daugiafailinės programos, laiko ir datos funkcijos) Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos

More information

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ TINKAMUMO BIOMEDICININĖMS SISTEMOMS ĮVERTINIMAS

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ TINKAMUMO BIOMEDICININĖMS SISTEMOMS ĮVERTINIMAS DUOMENŲ BAZIŲ VALDYMO SISTEMŲ TINKAMUMO BIOMEDICININĖMS SISTEMOMS ĮVERTINIMAS Renata Baronienė, Egidijus Paliulis Šiaulių universitetas, Technologijos fakultetas Įvadas Šiuo metu labai aktuali problema

More information

ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Mindaugas Gapšys BAKALAURO DARBAS

ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Mindaugas Gapšys BAKALAURO DARBAS ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Mindaugas Gapšys Informatikos specialybės IV kurso dieninio skyriaus studentas Bash skriptų panaudojimas Unix/Linux operacinių

More information

Mobili duomenų perdavimo kokybės analizės sistema

Mobili duomenų perdavimo kokybės analizės sistema KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS PROGRAMŲ INŽINERIJOS KATEDRA Vaidotas Januška Mobili duomenų perdavimo kokybės analizės sistema Magistro darbas Darbo vadovas dr. R. Kavaliūnas

More information

Paprastų lentelių kūrimas

Paprastų lentelių kūrimas HTML lentelės Lentelės Informacijos pateikimas HTML-dokumentuose lentelių pagalba yra vienas iš dažniausiai naudojamų. HTML kalboje lentelės yra naudojamos ne tik tradiciškai, kaip duomenų pateikimo metodas,

More information

Eksperimentiniai sprendimai

Eksperimentiniai sprendimai Komandos Eksperimentiniai sprendimai Prisistatymas Vilniaus Universitetas, MIF 2005 1. Bendras komandos prisistatymas Komanda Eksperimentiniai sprendimai tai Vilniaus Universiteto, Matematikos ir Informatikos

More information

KAUNO TECHNOLOGIJOS UNIVERSITETAS DIRBTINIO INTELEKTO METODŲ TAIKYMAS KRAŠTŲ APTIKIMUI

KAUNO TECHNOLOGIJOS UNIVERSITETAS DIRBTINIO INTELEKTO METODŲ TAIKYMAS KRAŠTŲ APTIKIMUI KAUNO TECHNOLOGIJOS UNIVERSITETAS ELEKTROS IR ELEKTRONIKOS FAKULTETAS DARIUS DIRVANAUSKAS DIRBTINIO INTELEKTO METODŲ TAIKYMAS KRAŠTŲ APTIKIMUI Baigiamasis magistro projektas Vadovas Doc. dr. Vidas Raudonis

More information

Atminties technologijos

Atminties technologijos Atminties technologijos 3 paskaita RAM (laisvosios kreipties atmintis) Atminties hierarchija Kreipties trukmė Talpa Kompiuterio resursai apibrėžiami pagal lokališkumo principą (laike ir erdvėje), kas leidžia

More information

Interneto technologijų taikymai

Interneto technologijų taikymai Interneto technologijų taikymai Mantas Puida (mantasp@gmail.com) VI paskaita Entity pirminis raktas Kiekviena Entity klasė privalo turėti pirminį raktą (Primary Key). Jei turima Entity objektų hierarchija,

More information

RESEARCH OF A FLEXURE BASED MICROPOSITIONING STAGES

RESEARCH OF A FLEXURE BASED MICROPOSITIONING STAGES VILNIUS GEDIMINAS TECHNICAL UNIVERSITY Giedrius AUGUSTINAVIČIUS RESEARCH OF A FLEXURE BASED MICROPOSITIONING STAGES SUMMARY OF DOCTORAL DISSERTATION TECHNOLOGICAL SCIENCES, MECHANICAL ENGINEERING (09T)

More information

PAIEŠKOS SISTEMŲ OPTIMIZAVIMO METODŲ ANALIZĖ

PAIEŠKOS SISTEMŲ OPTIMIZAVIMO METODŲ ANALIZĖ PAIEŠKOS SISTEMŲ OPTIMIZAVIMO METODŲ ANALIZĖ Donatas Veikutis, Simona Ramanauskaitė UAB Komeksimas, Šiaulių universitetas Įvadas Visuomenė, internetas ir jame esanti informacija dabar turi vieną didžiausių

More information

Synchronization of B-scan diagnostic imaging with transducer position tracking for three-dimensional ultrasonic scanning

Synchronization of B-scan diagnostic imaging with transducer position tracking for three-dimensional ultrasonic scanning Synchronization of B-scan diagnostic imaging with transducer position tracking for three-dimensional ultrasonic scanning A. Sakalauskas 1, R. Jurkonis 1, A. Lukoševičius 1 1 Biomedical engineering institute

More information

JAVA PROGRAMOS KODO ANALIZĖS NAUDOJANT SCRO ONTOLOGIJĄ GALIMYBIŲ TYRIMAS

JAVA PROGRAMOS KODO ANALIZĖS NAUDOJANT SCRO ONTOLOGIJĄ GALIMYBIŲ TYRIMAS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS VYTENIS SODAITIS JAVA PROGRAMOS KODO ANALIZĖS NAUDOJANT SCRO ONTOLOGIJĄ GALIMYBIŲ TYRIMAS Baigiamasis magistro projektas Vadovas doc. dr. R. Butkienė

More information

Web servisai WSDL. Osvaldas Grigas

Web servisai WSDL. Osvaldas Grigas Web servisai WSDL Osvaldas Grigas Web servisų aprašymas Kiekvienas web servisas yra unikalus Jis turi adresą(arba kelis adresus), kuriuo į jį galima kreiptis. Jis supranta tik tam tikros struktūros įeinančius

More information

ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA

ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Asta Drukteinien ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA MAGISTRO DARBAS Darbo vadov : Doc. S. Turskien Recenzentas:

More information

ŽMOGAUS POZŲ ATPAŽINIMO ALGORITMO IR JĮ REALIZUOJANČIOS PROGRAMINĖS ĮRANGOS SUKŪRIMAS BEI ALGORITMO TIKSLUMO TYRIMAS

ŽMOGAUS POZŲ ATPAŽINIMO ALGORITMO IR JĮ REALIZUOJANČIOS PROGRAMINĖS ĮRANGOS SUKŪRIMAS BEI ALGORITMO TIKSLUMO TYRIMAS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS Karolis Ryselis ŽMOGAUS POZŲ ATPAŽINIMO ALGORITMO IR JĮ REALIZUOJANČIOS PROGRAMINĖS ĮRANGOS SUKŪRIMAS BEI ALGORITMO TIKSLUMO TYRIMAS Baigiamasis

More information

II SEKCIJA. Duomenų bazės ir modeliai

II SEKCIJA. Duomenų bazės ir modeliai II SEKCIJA Duomenų bazės ir modeliai VEIKLOS TAISYKLIŲ SAUGYKLA, INTEGRUOTA SU VEIKLOS TAISYKLIŲ IŠKVIETIMO MECHANIZMU 1 Rimantas Butleris, Liudas Motiejūnas Kauno technologijos universitetas Straipsnyje

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Standartinė šablonų biblioteka (STL) Duomenų struktūros (11paskaita) Šablonai Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų

More information

HTML dokumentai. Praktinės užduotys

HTML dokumentai. Praktinės užduotys HTML dokumentai Praktinės užduotys 1. DzSoft PHP Editor šablonai Pakeiskite HTML šabloną į: ... Programos

More information

Jolita BERNATAVIČIENĖ METHODOLOGY OF VISUAL KNOWLEDGE DISCOVERY AND ITS INVESTIGATION

Jolita BERNATAVIČIENĖ METHODOLOGY OF VISUAL KNOWLEDGE DISCOVERY AND ITS INVESTIGATION Jolita BERNATAVIČIENĖ METHODOLOGY OF VISUAL KNOWLEDGE DISCOVERY AND ITS INVESTIGATION Summary of Doctoral Dissertation Technological Sciences, Informatics Engineering (07T) 1494-M Vilnius 2008 VILNIUS

More information

KAUNO TECHNOLOGIJOS UNIVERSITETAS ONTOLOGIJŲ VAIZDINIO PATEIKIMO MODELIS IR JO REALIZACIJA SEMANTINIAME TINKLE

KAUNO TECHNOLOGIJOS UNIVERSITETAS ONTOLOGIJŲ VAIZDINIO PATEIKIMO MODELIS IR JO REALIZACIJA SEMANTINIAME TINKLE KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS Aurelijus Saldauskas ONTOLOGIJŲ VAIZDINIO PATEIKIMO MODELIS IR JO REALIZACIJA SEMANTINIAME TINKLE Baigiamasis magistro projektas Vadovas prof.

More information

Ian Sommerville 2008 Software Engineering, 8th edition. Chapter 28 Slide 1. Tikslai

Ian Sommerville 2008 Software Engineering, 8th edition. Chapter 28 Slide 1. Tikslai Programinės įrangos kūrimo proceso tobulinimas Ian Sommerville 2008 Software Engineering, 8th edition. Chapter 28 Slide 1 Tikslai Paaiškinti programinės įrangos kūrimo proceso tobulinimo principus. Paaiškinti,

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Klasės, klasių savybės, vardų erdvės (3 paskaita) OOP Struktūrinio programavimo modelio problema: Didelės programos tampa labai sudėtingos t.y. egzistuoja tūkstančiai kintamųjų ir

More information

Resursų virtualizacija. 12 paskaita. Virtualizacija ir cloud computing

Resursų virtualizacija. 12 paskaita. Virtualizacija ir cloud computing Resursų virtualizacija 12 paskaita Virtualizacija ir cloud computing Virtualizacijos prielaidos Šiuolaikiniai kompiuteriai yra pakankamai galingi: 2, 4, 8, 32 branduolių procesoriai 4 128 GB operatyviosios

More information

Virtualizavimo infrastruktūros parinkimas ir taikymas mažose ir vidutinio dydžio įmon se

Virtualizavimo infrastruktūros parinkimas ir taikymas mažose ir vidutinio dydžio įmon se KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS KOMPIUTERIŲ KATEDRA Žygimantas Žąsytis Virtualizavimo infrastruktūros parinkimas ir taikymas mažose ir vidutinio dydžio įmon se Magistro darbas

More information

VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA EDITA MUDURYTĖ

VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA EDITA MUDURYTĖ VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA EDITA MUDURYTĖ MICROSOFT OPERACINIŲ SISTEMŲ SĄSAJŲ LYGINAMOJI ANALIZĖ Magistro baigiamasis darbas Darbo vadovai

More information

Buferio perpildymo klaida Įvadas, techniniai klausimai

Buferio perpildymo klaida Įvadas, techniniai klausimai Buferio perpildymo klaida Įvadas, techniniai klausimai Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-10-16 R. Griškevičius, Saugus

More information

Internetas. Programinė įranga Internetinei TV (IPTV) PAGRINDINĖS SAVYBĖS SYSTEMOS APŽVALGA

Internetas. Programinė įranga Internetinei TV (IPTV) PAGRINDINĖS SAVYBĖS SYSTEMOS APŽVALGA Programinė įranga Internetinei TV (IPTV) PAGRINDINĖS SAVYBĖS Mažas Interneto greitis netgi HD (720p) peržiūrai Kokybiškas HD (720p) įkodavimas/transliavimas Video indeksavimas realiame laike Pilna tiesioginių

More information

AN IMPROVEMENT OF THE TECHNOLOGIES OF THE LIDAR MEASUREMENTS AND APPLICATIONS FOR THE MODELLING OF THE EARTH PHYSICAL SURFACE

AN IMPROVEMENT OF THE TECHNOLOGIES OF THE LIDAR MEASUREMENTS AND APPLICATIONS FOR THE MODELLING OF THE EARTH PHYSICAL SURFACE VILNIUS GEDIMINAS TECHNICAL UNIVERSITY Aušra KALANTAITĖ AN IMPROVEMENT OF THE TECHNOLOGIES OF THE LIDAR MEASUREMENTS AND APPLICATIONS FOR THE MODELLING OF THE EARTH PHYSICAL SURFACE SUMMARY OF DOCTORAL

More information

Vilniaus Gedimino technikos universitetas,

Vilniaus Gedimino technikos universitetas, INFORMATIKA 11-osios Lietuvos jaunųjų mokslininkų konferencijos Mokslas Lietuvos ateitis, įvykusios Vilniuje 2008 m. balandžio 9 11 d., straipsnių rinkinys VERSLO VALDYMO SISTEMOS MICROSOFT DYNAMICS AX

More information

KAUNO TECHNOLOGIJOS UNIVERSITETAS PASLAUGŲ ARCHITEKTŪROS MODELIŲ KŪRIMAS VEIKLOS PROCESŲ MODELIŲ PAGRINDU

KAUNO TECHNOLOGIJOS UNIVERSITETAS PASLAUGŲ ARCHITEKTŪROS MODELIŲ KŪRIMAS VEIKLOS PROCESŲ MODELIŲ PAGRINDU KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS Jurgita Krukonytė PASLAUGŲ ARCHITEKTŪROS MODELIŲ KŪRIMAS VEIKLOS PROCESŲ MODELIŲ PAGRINDU Baigiamasis magistro projektas Vadovas doc. dr. T. Skersys

More information

INŽINERINĖ IR KOMPIUTERINĖ GRAFIKA Užduotys ir atlikimo metodika Verslo vadybos fakulteto studentams

INŽINERINĖ IR KOMPIUTERINĖ GRAFIKA Užduotys ir atlikimo metodika Verslo vadybos fakulteto studentams VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS Daiva Makutėnienė, Ina Gujienė INŽINERINĖ IR KOMPIUTERINĖ GRAFIKA Užduotys ir atlikimo metodika Verslo vadybos fakulteto studentams Mokomoji knyga Vilnius 2006

More information

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė A.Kynienė С, C++ kalbų ABC Metodinė priemonė Vilnius 2004 TURINYS C KALBOS PRIVALUMAI...4 PROGRAMAVIMO PROCESAS...5 OPERACIJOS...6 PAPRASTOS PROGRAMOS STRUKTŪRA...8 DUOMENŲ IR KINTAMŲJŲ TIPAI...9 SIMBOLINĖS

More information

STUDIJŲ PROGRAMOS PAVADINIMAS

STUDIJŲ PROGRAMOS PAVADINIMAS AUKŠTOSIOS MOKYKLOS PAVADINIMAS PATVIRTINTA STUDIJŲ PROGRAMOS PAVADINIMAS KETINAMOS VYKDYTI STUDIJŲ PROGRAMOS APRAŠAS Aukštosios mokyklos vadovas (pareigos)... (laipsnis) Vardas Pavardė (parašas) Programos

More information

Vienlusčių įtaisų projektavimas. 1 paskaita

Vienlusčių įtaisų projektavimas. 1 paskaita Vienlusčių įtaisų projektavimas 1 paskaita HDL įvadas Tradicinės programavimo kalbos (C, Pascal, Python) yra nuoseklios: jomis parašytos programos yra kompiliuojamos į universalaus procesoriaus instrukcijų

More information

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas KOMPIUTERIŲ TINKLAI 5 paskaita Tinklo lygmuo, IP protokolas Lokalus tinklas (kartojimas) Lokalaus tinklo technologijos: Kokius žinote prieigos prie terpės metodus? Kas yra Ethernet, kokie jo skiriamieji

More information

2. Pakopiniai stiliai

2. Pakopiniai stiliai 1 2. Pakopiniai stiliai 2.1. Pakopiniai stiliai (CSS) Pakopinius stilius (Cascading Style Sheets; CSS) kaip ir HTML sukūrė bei kontroliuoja Pasaulinis hipertekstinės informacijos tinklo konsorciumas (World

More information

VERSLO KLIENTŲ APTARNAVIMAS TEL

VERSLO KLIENTŲ APTARNAVIMAS TEL paslaugos Virtualus biuras valdymas ir naudojimas VERSLO KLIENTŲ APTARNAVIMAS TEL. 1816 Skambučio kaina tel. 1816 TEO tinkle 0,16 Lt/min., sujungimo mokestis 0,12 Lt; iš Omnitel, Bitė Lietuva ir Tele2

More information

MD3 Integrated Model-Driven Data Design for Objects, XML, and Relational Databases

MD3 Integrated Model-Driven Data Design for Objects, XML, and Relational Databases ISSN 392-056. INFORMACIJOS MOKSLAI. 2009 50 MD3 Integrated Model-Driven Data Design for Objects, XML, and Relational Databases Darius Šilingas UAB Baltijos programinė įranga mokymų skyriaus vadovas No

More information

Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas

Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas ISSN 1392-0561. INFORMACIJOS MOKSLAI. 2009 50 Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas Tatjana Jevsikova Matematikos ir informatikos instituto doktorantė Institute

More information

ŽILVINAS VAIRA. Programinės įrangos kūrimo technologijos. Mokomoji priemonė

ŽILVINAS VAIRA. Programinės įrangos kūrimo technologijos. Mokomoji priemonė ŽILVINAS VAIRA Programinės įrangos kūrimo technologijos Mokomoji priemonė Projektas Socialinių mokslų kolegijos vykdomų studijų programų internacionalizacija kuriant atvirą aukštąją mokyklą užsienio šalių

More information

2-3 PASKAITOS. Paprasčiausia programa:

2-3 PASKAITOS. Paprasčiausia programa: 2-3 PASKAITOS Turinys: Paprasčiausios programos pavyzdys. Darbas su programavimo terpėmis. Duomenys. Duomenų tipai ir charakteristikos. Paprasčiausia įvestis/išvestis. Paprasčiausia programa: /* Pirmoji

More information