Reaalaja videotöötluse jõudluse parendamine Eesti Infotehnoloogia Kolledži Robootikaklubi Botmaster platvormi baasil
Enhancement of Real-time Video Processing Performance based on Estonian Information Technology College Robotics Club Botmaster Platform

Monday, October 8, 2012

Chapter 4 - Things are getting serious

NEVE@Robotex
XIMEA tehasest tuli kauaoodatud uudis - meid (Robotexi team NEVE) toetatakse Currera R kaameraga. Tegemist on väga "püssi" industriaalseadmega, mida kutsutakse smartcamera'ks, ehk siis "nutikaamera".
Objektiivid on eraldi ja vahetatavad.

Nii palju tarkust on:
CPU: Intel Atom Z530 1.6GHz
RAM: 1GB
SSD mälu 3.6 GB + Micro SD võimalus
Global Shutter 5Mpix sensor


Ta on umbes nagu Audi R8 V10, aga kaamerate seas :P
Ja sellise mänguasja lisandumine kindlasti mõjutab ka minu lõputööd.




VisionTime
Vahepeal uuendasin oma pilditöötluse jõudluse mõõtmisvahendit VisionTime'i, millest rääkisin eelmises postituses. Uuendused seisnevad selles, et nüüd salvestatakse vahetulemused RAMi, mitte csv faili. Kuna mälu on peaaegu, et piiramatu, siis on see palju parem lähenemine. Ühe protsessi mõõtmine VisionTime'iga võtab nüüd ise 2000ns ehk mõõta saaks 500000 korda sekundis.
Kuna valmiv Botmasteri lahendus tuleb mitmevooline, siis tegin jõudluse mõõtja ka threadsafe'iks, Qt vahenditest sobis hästi QMutex.
VisionTime v1.2:

Thesis
Septembris pidin täitma "Lõputöö teema kavandi", seega oli viimane aeg sõnastada lõputöö lõplik pealkiri. See oli paras peavalu, sest järsku avastasin, et pean enne kirjutamist teadma päris detailselt, milliseks lõputöö siis lõpuks kujuneb. Hankisin kolme varasema lõpetaja teema kavandid, et saada üldse aimu selle dokumendi eeldatavast sisust. Palju abi oli juhendajast Valdurist, kes aitas sõnastamisel. Riputasin selle tulevaste põlvede abistamiseks ka üles.

Lõputöö pealkiriReaalaja videotöötluse jõudluse parendamine EIK Robootikaklubi "Botmaster" platvormi baasil
Ingliskeelne lõputöö pealkiriEnhancement of real-time video processing performance based on EIK robotics club "Botmaster" platform

Nüüd siis olen alustanud lõputöö enda kirjutamisega. Hetkel on käsil peatükid "Videotöötlus ning selle alamprotsessid" ja "Analüüs esialgse platvormi videotöötluse komponendi jõudlusele". Hetkel tunnen ja mõistan igat pisemat protsessi Botmasteri masinnägemise elutsükklis, sellest kirjutangi.

Pean tunnistama, et mul on väga vedanud juhendajaga. Olen jätkuvalt Rootsis ning pole vahepeal  Eestis käinud, kuid vaatamata sellele oleme Valduriga pidevalt suhelnud Skype'i ning TeamViewer'i vahendusel ning tema pädevus ja pühendumine on väga inspireeriv.

2 comments:

  1. FYI sul on VisionTime'is üks viga, millest võib tulevikus saada paras peavalu. Sa tegid VisionTime constructor'i privaatseks aga unustasid copy-constructor'i ja assignment operator'i. C++ lisab vaikimisi versioonid sinu VisionTime klassile. Seega kui sa praegu teed nii,

    cout << "ptr1: " << VisionTime::DO() << endl;
    VisionTime vt = *VisionTime::DO();
    cout << "ptr2: " << &vt << std::endl;

    siis sa peaksid nägema kahte erinevat aadressi. Ehk siis võib tekkida olukord kus sa arvad, et pöördud ühe ja sama instantsi poole aga tegelikult on neid kaks ja siis tekivad veidrad mõõte tulemused :)

    Kui sa oled 100% kindel, et sa kunagi seda VisionTime pointerit mõnele librale edasi ei anna ja ise alati pöördud selle poole VisionTime::DO() meetodit kasutades, siis ei tohiks probleeme tekkida.

    Kindlam variant on need ära deklareerida ja privaatseks teha.

    private:
    VisionTime(const VisionTime&);
    VisionTime& operator=(const VisionTime&);

    ReplyDelete
  2. Jah, minu idee järgi pidi VisionTime::DO() olema ainus selleks mõeldud võimalus. Aga kindlasti kasutan Sinu nõuannet ja teen asja lollikindlamaks. Väga hea kommentaar, meeldiv näha, et keegi isegi mõtleb kaasa! Ära anonüümseks jää :P

    ReplyDelete