Realizarea Fotografiei Panoramice

CUPRINS

Lista abrevierilor:

Introducere

1. CONCEPTE FUNDAMENTALE PRIVIND SISTEMELE PENTRU REALIZAREA FOTOGRAFIEI PANORAMICE

1.1. Evoluția fotografiilor panoramice

1.2. Cercetarea dispozitivelor existente de comandă, comunicare și captare a imaginii

1.2.1. Studierea dispozitivelor de captare a imaginii

1.2.2. Analiza dispozitivelor mecanice pentru panorama

1.2.3. Studierea problemelor de proiectare a întregului sistem

2. ANALIZA ALGORITMULUI DE CREARE A FOTOGRAFIEI PANORAMICE

2.1 Alegerea utilajului

2.2 Procesul de captare a imaginilor propriu-zis

2.3. Post-redactarea și generarea sferei panoramice

3. REALIZAREA SOFT-ULUI PENTRU CALCULATOR

3.1 Analiza cerințelor

3.1 Proiectarea arhitecturii

3.2 Structura mesajului pentru expediere

3.3 Proiectare interfeței utilizator

3.4 Codul sursă al componentelor

3.5 Validarea aplicației

Concluzii

Bibliografie

Anexe

Lista abrevierilor:

• AE Expunere automata.
• AF – Autofocus Sistem care pune claritatea obiectivului pe subiectul dorit; exista sisteme pasive si active.
• AF-L Memorarea autofocalizării (Nikon).
• AF-lock Procedura de blocare voluntara a focalizării pe un anumit subiect; in acest mod este posibila păstrarea planului de focalizare chiar si in cazul reîncadrării.
• AI Servo AF Sistem de focalizare "inteligenta" destinat in special fotografierii subiectelor in mișcare. In modul AI Servo AF aparatul focalizează continuu urmărind cele mai mici deplasări din cadru, util in cazul obiectivelor lungi unde câmpul de profunzime este redus.
• A-DEP Mod de expunere cu prioritate de diafragma ce urmărește obținerea unei anumite profunzimi de câmp (Canon).
• AEB – Auto Exposure Bracket Bracket sau Bracketing – se refera la acțiunea de a executa o serie de fotografii (cel puțin trei) ale aceluiași subiect cu variația expunerii; prima – care se executa cu timpul de expunere si cu diafragma indicata de exponometru sau de experiența, a doua, supra-expusa cu 1/3 – 1 diafragma iar a treia sub-expusa cu 1/3 – 1 diafragma. In acest fel fotograful are șanse sporite de a obține o poza corect expusa. De asemenea, fotograful poate recurge la aceasta metoda pentru a vedea efectul diferitelor expuneri asupra subiectului. Majoritatea aparatelor pro-sumar, cursiv cele digitale, efectuează bracketing-ul in mod automat.
• APS – Advanced Photo System Un format de film foto care permite pe lângă imagine înregistrarea unor parametrii de fotografiere.
• AWB ("Auto White Balance") La camere digitale: ajustare automata a redării culorilor prin care se evita dominantele de culoare ce pot apare in diverse condiții de iluminare (soare, cer acoperit, lumina tungsten, etc).
• CMOS Dispozitiv electronic de captura a imaginii si conversie din semnal luminos in semnal electronic.
• DOF ("Depth Of Field") Un obiectiv, in afara de obiectul exact pe care este pusa claritatea, mai reda clar un spațiu din fata si spatele acestuia. Acest spațiu este mai mare sau mai mic, funcție de diafragma si distanta focala si mai ales cercul de difuzie ales. Câmpul in care parți din imagine sunt redate clar se numește câmp de profunzime.

• DX Sistem electronic folosit la filmele 135 si 120 care ia in calcul si transmite aparatului informații despre sensibilitatea filmului, lungimea acestuia, si contrastul sau; se transmite de pe caseta metalica sau rola de hirtei cu ajutorul unor palpatoare electrice sau optice.
• EV (Exposure Value) Număr care se refera la cantitatea de lumina dintr-o anumita expunere. Uneori exprima si o combinație de senzitivi țațe (ISO), diafragma si timp de expunere.
• F-stop F-stop este un raport intre distanta focala a obiectivului si diametrul diafragmei; se mai numește si f-number si se scrie "f/2" ceea ce înseamnă diafragma are un diametru egal cu jumătate din distanta focala; fiecare valoare permite intrarea in aparat a jumătate din cantitatea permisa de diafragma imediat mai mare si de doua ori mai multa decât diafragma imediat mai mica; valorile standard cele mai frecvent întâlnite sunt: f/1,4 f/2 f/2,8 f/4 f/5,6 f/8 f/11 f/16; de notat ca numitorii se afla in progresie aritmetica cu rația SQRT(2); termenul datează de pe vremea când ajustarea diafragmei se făcea prin rotirea unui disc cu găuri de diferite diametre si a rămas in vigoare si pentru obiectivele actuale, cu diafragma tip iris.
• IS – Image Stabilization Metoda de compensare optica, folosita de Canon, a mișcărilor (tremurăturilor) fotografului care folosește obiective cu focala lunga si timpi lungi de expunere; se realizează prin deplasarea intr-un plan perpendicular pe axa optica si pe direcția dominanta de mișcare a unui grup de lentile, din aceasta cauza denumit "stabilizator". Permite obținerea de imagini clare cu obiective de 300 – 400 mm chiar si la timpi de 1/30 sec., dar fotograful trebuie sa aleagă un mod specific de vibrație

• MF Manual Focus Focalizare in mod manual
• SD/MMC ("Secure Digital/MultiMedia Card") Tip de suport de memorie folosit pentru stocarea informației digitale in diverse aparate foto si palmtop-uri. Se caracterizează prin dimensiuni mici, aproximativ cat un timbru obișnuit, precum si posibilitatea de a bloca accesul la date prin parola.
• SLR – Single Lens Reflex Aparat foto reflex, cu vizare prin obiectiv.

Introducere

În prezent așa noțiuni ca fotografie, aparat foto sunt de neînlocuit și practic ne întâlnim cu ele zi de zi. Simplu vorbind fotografia nu este altceva decât o reprezentare vizuală directă a unui subiect sau eveniment. Odată cu dezvoltarea artei fotografice au apărut așa genuri de fotografii ca Panorama, Panorama 180, 360 (3D).Panorama sferică sau fotografia panoramică 360 este o fotografie interactivă care poate fi vizualizată, în general, pe ecranul unui monitor. Cu ajutorul mouse-ului, poți naviga în sus, în jos, la stânga și la dreapta, iar după o rotire completă, ajungi de unde ai plecat. În general, se obține din mai multe fotografii, iar numărul fotografiilor depinde de cameră și de obiectivul folosit. Aceste tipuri de fotografii interactive au deschis o sumedenie de posibilități și sunt folosite pe larg practic în orice domeniu, începând cu turismul și finisând cu servicii de marketing. Panorama sferică fiind o fotografie, are aceeași utilitate ca și fotografia clasică, dar și unele avantaje în plus. Mai multe panorame pot fi conectate între ele, rezultatul fiind un tur virtual. În cazul tururilor virtuale de prezentare, se realizează câte o panoramă în fiecare punct important al locației, astfel ca vizitatorul virtual să-și facă o idee cât mai reală despre locația respectivă (hotel, pensiune etc).Realizare practică însă a acestora e destul de complicată și necesită diferite tehnici și utilaje. Posibilitatea rezolvării aceste probleme se explica prin folosirea controlerelor moderne, folosirea electronicei și mecanismelor de acționare.

La baza asigurării unei calități înalte a Panoramei stă echipamentul utilizat. Anume la el și ne vom referi în continuare.

Deci se cere de elaborat un dispozitiv necesar pentru comunicare și comandă cu procesul de captare a imaginilor pentru crearea fotografiei panoramice. Dispozitivul dat trebuie sa fie controlat de către utilizator la distanță, astfel odată montat pe dispozitiv, aparatul foto nu necesită implicarea operatorului, acesta este un plus destul de mare, mai ales datorită excluderii unor așa numite zone ”moarte” care ar urma să apară în fotografia panoramică. Plus la toate fotografia panoramică este o suită de imagine care intercalează între ele în proporție de 20%, așa numitul overlap, iar operatorul nu poate asigura deplasarea sistemului cu exactitatea unei astfel de intercalări.

Scopul lucrării constă în proiectarea dispozitivului de poziționare a sistemului pentru Panorama 360 cu următoarele funcții:

– captarea imaginilor în dependență de parametrii introduși de utilizator și anume:

– Cu ajutorul unui soft proiectat, de realizat metodica de conducere a sistemului, selectarea gradelor de rotație, numărului de fotografii;

-Sistem pentru fixare rapidă a dispozitivului

– Crearea dispozitivului adaptiv la orice tip de dispozitiv (aparat foto)

– posibilitatea de comandă la distanță prin Bluetooth a sistemului

Structura tezei va fi compusă din:

Cercetarea prototipurilor, și analiza căilor de soluționare a sarcinii;

Elaborarea grafului și algoritmului de funcționare a dispozitivului.

Proiectarea schemei de structură a dispozitivului, și cercetarea modulelor de acționare și achiziție;

Elaborarea schemei electrice principiale;

Simularea modulelor de acționare(motoare);

Elaborarea algoritmilor, și subprogramelor de comunicare, achiziție, acționare pentru controlerul Arduino2560;

Proiectarea și elaborarea softului de comunicare la distanță cu placa bord Arduino.

În concluzie, dispozitivul trebuie să ofere: o precizie maximă, posibilitatea conducerii la distanță, posibilitatea efectuării fotografiei panoramice, în funcție de parametrii introduși de utilizator. Luând în considerare rapiditatea dezvoltării tehnice nu ne rămâne decât să ne închipuim metodele și tehnologiile noi ce vor apărea în viitor pentru satisfacerea necesităților umane.

1. CONCEPTE FUNDAMENTALE PRIVIND SISTEMELE PENTRU REALIZAREA FOTOGRAFIEI PANORAMICE

1.1. Evoluția fotografiilor panoramice

Compunerea fotografiilor panoramice din mai multe expuneri normale permite fotografilor crearea de imagini de o rezoluție mai mare si/sau cu un unghi de acoperire mai larg decât le permit in mod normal aparatul si obiectivele lor fotografice. Astfel iau naștere poze cu detalii uimitoare si efecte de imagine dramatice. Deși pare un proces simplu, acesta presupune captarea corecta a imaginii, corectarea perspectivei si distorsiunii obiectivului, identificarea elementelor comune ale imaginilor, alăturarea si lipirea pozelor si finisarea imaginii finale.

A trecut de mult timpul când pozele panoramice presupuneau o adevărata măiestrie fotografica începând de la expunerea perfecta, procesarea filmelor si imprimarea pozelor la exact aceleași culori si densități, tăierea efectiva cu foarfeca si lipirea lor. Foarte putini fotografi se încumetau sa facă poze panoramice acum câțiva ani. In ultimii ani programele de editare a imaginilor panoramice au devenit din ce in ce mai performante iar acum timpul necesar de la capturarea imaginii pana la imprimarea fotografiei panoramice este de doar câteva minute. Indiferent de softul folosit pentru compunerea imaginilor panoramice, captarea imaginilor potrivite joacă un rol decisiv pentru obținerea unui rezultat cat mai profesional.

Ideea de fotografie panoramică a apărut acum 2 secole, prim simpla îmbinare a unor serii de imagini care aveau elemente comune suprapuse (aproximativ 15-20 %). Acestea într-un final fiind alipite au creat un imagini de tip wide, ca cea prezentată mai jos.

Fig. 1.1 Fotografie panoramică

Apariția fotografiei digitale, a dispozitivelor și soft-urilor speciale, a redus dramatic munca de îmbinare a imaginilor, a transformat panoramarea într-o îndeletnicire creativă, agreabilă, și a făcut posibil obținerea imaginilor cilindrice cu o cuprindere de până la 180 de grade. Grație algoritmilor matematici ai aplicațiilor software, care pot asambla și comprima zeci de imagini într-una singură, fotografia panoramică 180 a devenit din ce în ce mai răspândită, Panorama 180 reprezintă o fotografie interactivă ce permite utilizatorului vizualizarea imaginii în întregime pe orizontală. Panorama 180 (ca soft) a fost implementată în numeroase dispozitive noi, ce procesează singure imaginile obținute din deplasarea pe 180 grade a dispozitivului, exemplu elocvent fiind smartphoane-le din prezent. Panorama 180 folosește practic aceeași tehnică, adică imagini alăturate, suprapuse 12-20% cu elemente comune.

Următoare etapă și cea din prezent a fotografiilor panoramice e caracterizată de așa numită Panorama 360 sau sferică. Tehnicile moderne au reușit să dimensioneze imaginea panoramică, de la cea convențională (semicilindrică) cu unghi de cuprindere de circa 1oritmilor matematici ai aplicațiilor software, care pot asambla și comprima zeci de imagini într-una singură, fotografia panoramică 180 a devenit din ce în ce mai răspândită, Panorama 180 reprezintă o fotografie interactivă ce permite utilizatorului vizualizarea imaginii în întregime pe orizontală. Panorama 180 (ca soft) a fost implementată în numeroase dispozitive noi, ce procesează singure imaginile obținute din deplasarea pe 180 grade a dispozitivului, exemplu elocvent fiind smartphoane-le din prezent. Panorama 180 folosește practic aceeași tehnică, adică imagini alăturate, suprapuse 12-20% cu elemente comune.

Următoare etapă și cea din prezent a fotografiilor panoramice e caracterizată de așa numită Panorama 360 sau sferică. Tehnicile moderne au reușit să dimensioneze imaginea panoramică, de la cea convențională (semicilindrică) cu unghi de cuprindere de circa 180 de grade pe orizontală, până la una sferică, cu unghi maxim de cuprindere de 360 de grade, atât pe verticală, cât și pe orizontală. Panorama sferică oferă posibilitatea vizualizării de imagine curbata – vizitatorul se afla in interiorul unui glob virtual, si se rotește in ce direcție dorește. Ideal pentru hoteluri, pensiuni, restaurante, cluburi, baruri, agenții imobiliare, locații, muzee, biserici, etc. Fascinația pe care o transmite o imagine panoramică reușită nu poate fi negată de nimeni. Definită ca o priveliște vastă din natură, ca o imagine de ansamblu, ori ca o vedere circulară, panorama se deosebește de fotografia clasică prin faptul că surprinde mai mult decât poate acoperi un obiectiv foto normal. În comparație cu fotografia clasică, panorama se apropie mai firesc de câmpul vizual al ochilor umani (apreciat de specialiști la 120 de grade pe orizontală și 60 grade pe verticală), deoarece acoperă și ceea ce nu se vede în fotografia obișnuită.

Uzual, panorama sferică e destinată pentru rulajul la calculator, printr-un anumit soft, unde utilizatorul se poate deplasa oriunde. Anume din această cauză varianta printată nu oferă nici un efect așteptat. Vizual aceasta ar arăta ca în figura de mai jos:

Fig.1.2 Panorama 360

Mai multe fotografii panoramice de acest tip, unite împreună permite crearea unui așa numit tur virtual, un procedeu care a căpătat popularitate maximă în ultima vreme. În cazul turului virtual utilizatorul se poate deplasa în diferite locuri ale unei locații pentru analiza lor în parte. La astfel de servicii au apelat companii gigantice, cum ar fi Google, care au implementat tururile virtuale în proiectele lor ca Google Earth, Google Maps și altele. Cu ajutorul acestor servicii utilizatorul poate să exploreze locuri direct de la calculator, fiind la câteva click-uri distanță de obiecte istorice, muzee, hoteluri, etc. Mai jos este prezentat un screenshot din explorarea virtuala a orașului Paris.

Fig 1.3. Tur virtual creat cu ajutorul Panoramei 360

1.2. Cercetarea dispozitivelor existente de comandă, comunicare și captare a imaginii

1.2.1. Studierea dispozitivelor de captare a imaginii

Din punct de vedere tehnic pentru realizarea panoramei avem nevoie în primul rând de o cameră foto. Cel mai optimal este folosirea unui aparat de tip DSLR, care reprezintă un aparat de fotografiat digital, ce utilizează un sistem mecanic tip oglindă și pentaprismă pentru a direcționa lumina direct de la lentilele fotografice la cele optice, printr-un vizor pe partea din spate a aparatului de fotografiat.

Principalul avantaj față de alte tipuri de aparate foto digitale este vizorul optic, moștenit de la camerele SLR, ce oferă o gamă largă de culori, și posibilitatea fotografierii la luminozități scăzute.

Matricea utilizată în camere digitale DSLR, de regulă, sunt mult mai superioare după dimensiunea fizică a matricei de la aparate foto digitale compacte. Matricea mai mare oferă o calitate mai bună a imaginei, zgomot mai redus, și o sensibilitate mai mare.

Exemplu de schemă de structură a DSLR camerei este reprezentată în figura de mai jos:

Fig. 1.4. Structura camerei DSLR

La selectarea obiectelor de fotografiat și monitorizarea directă a lui se folosește ocularul vizorului(8), dar imaginea reală este percepută de lentilele camerei(1) ce se proiectează pe ecranul focusat(5) cu ajutorul oglinzii(2). Pentaprisma(7) întoarce imaginile în pozițiile lor reale. După ce să ales obiectul și a fost tastat butonul printr-un mecanism special, se elimină oglinda(2), pe un timp de întrerupere se deschide zăvorul(3), și pe matricea(4) se proiectează imaginea.

Aparatele mirrorless cu obiective interschimbabile reprezintă cea mai nouă tendință de pe segmentul foto. Ele se poziționează în piață între compactele clasice (fără obiective interschimbabile) și DSLR-urile de talie medie. Prin construcția și caracteristicile lor, aparatele mirrorlesspot concura și chiar depăși la calitate un DLSR entry-level.  Prețurile sunt și ele comparabile cu cele ale DSLR-urilor entry level, dar pot ajunge mult mai sus în cazul modelelor de top. Ele la fel permit realizarea panoramei. Principala diferență în afară costului de DSLR este și gabarite mult mai mici din cauza lipsei oglinzilor, cum de altfel e arătat în figura de mai jos.

Fig 1.5 Diferența dintre DSLR si Mirrorless

Regula de bază la obiectivele folosite la panoramare este simplă: cu cât au un unghi de acoperire mai larg, cu atât panorama se realizează din mai puține imagini, deci mai simplu și mai rapid. Luând în considerați prețul mai avantajos al aparatelor DSLR vom analiza o serie de așa tipuri de aparate foto.

Nikon D3s – O caracteristică importantă ce deosebește această cameră de restul camerelor este posibilitatea fotografierii minunate în condiții de luminozitate minimală datorită cipului NR. Astfel realizarea panoramei în condiții de luminozitate scăzută este posibilă. Dispozitivul dispune de 12,2 MP, auto focus, iar bateria permite realizarea a cel puțin 4000 de fotografii la o încărcare completă.

Caracteristici de bază:

• Senzor CMOS 12.1 Mpx FX (36×23.9mm)
• ISO pana la 102,400
• Rezistenta sporita la apa si praf
• Ecran LCD cu diagonala de 3", 920,000 puncte cu funcție Live View
• Buffer pana la 48 de cadre RAW sau 130 de cadre JPEG calitate maxima
• Pana la 11 cadre pe secunda
• 51 puncte de focalizare

• Unghi de cuprindere mari (la obiectivul implicit)

• Posibilitatea conectării opticii de tip fisheye
• Procesare RAW din camera

• Video în format FullHD
• 2 sloturi pentru card CF
• Acumulator cu autonomie superioara

Fig.1.6 Nikon D3s cu modul Panorama

SONY NEX5 – unul din aparatele foto moderne care are așa numitul mod ”panorama” ce permite realizarea rapidă a acesteia. Cel mai important este ca poți stabili modul de baleiere a scenei când faci panorama. Adică poți face panorame orizontale sau verticale, de la stânga la dreapta, dreapta la stânga sau de sus in jos sau de jos in sus.

Fig.1.7 Realizarea panoramei în mod manual cu aparatul foto Sony NEX5

Canon 7D – Camera este foarte ermetica și o face rezistentă la praf și umezeală. Cu această performanta ușor se pot crea time-lapse și panorama în condiții nefavorabile a mediului la o perioadă destul de mare, chiar și zile întregi. Camera poate filma 8,9 imagini într-o secundă. HDMI monitoringul este pînă cînd cel mai bun, chiar și 1080i nu se schimbă în timpul filmării. Prețul camerei este destul de bun, dar totuși un dezavantaj apare la o luminozitate nefavorabilă, imaginea nu are caracteristici bune.

Fig.1.8 Camera Canon EOS 7D

Tokina ATX 11-16mm f/2.8 Pro DX II este un zoom superangular dedicat aparatelor foto Nikon, oferind un unghiul de cuprindere extrem de generos, alături de o luminozitate excepțională.  Aceste lucruri recomanda Tokina ATX 11-16mm f/2.8 Pro DX II pentru cadrele largi, peisaj, în special pentru fotografii interactive de tip Panorama. Acest obiectiv oferă o calitate excepțională a imaginii, mulțumită elementelor optice cu dispersie scăzută, a elementelor sferice si a multiplelor tratamente. Luminozitatea excelenta F2.8 si distanta focala de 11-16mm oferă o versatilitate extraordinara într-o serie variata de contexte pentru fotografiere.
Motorul incorporat asigura autofocalizarea împreuna cu aparatele foto Nikon D40, D40x, D60, D3000, D3100, D3200, D5000, D5100, D5200.

Specificații: 
• Distanta focala: 11-16mm

• Compatibilitate Nikon
• Diafragma maxima: f/2.8
• Nr. lamele diafragma: 9 (rotungite)
• Compatibil APS-C

• Unghi de cuprinde pe verticală: 162⁰
• Diametru filtru: 77

Fig.1.9 Obiectivul TokinaATX pentru panorama (aparate foto Nikon)

Declanșatorul cu intervalometru este un dispozitiv care permite captare fotografiilor prin declanșări repetate în funcție de parametrii introduși de utilizator. Declanșatoarele se deosebesc în primul rând prin faptul că fiecare tip sau serie de aparate foto au declanșatoarele lor.

Declanșatorul MC-C1 este perfect pentru time-lapse si panorama. Se folosește exclusiv cu aparatele de fotografiat Canon.

Funcții:

Self-Timer, Interval Timer, Long-Exposure Timer si Exposure Count

Ideal pentru fotografia time-lapse (cadru cu cadru)

Ecranul LCD cu lumina

Delay / Self Timer (DELAY) Exact ca si timer-ul camerei. Declanșatorul va permite setarea unei întârzieri in declanșare (in incremente de 1 secunda) pana la 99 ore 99 minute si 99 secunde

Interval Timer (INTVL) – Intervalometrul permite reglarea timpului dintre declanșări in perioade de timp de pana la 100 de ore. De exemplu se poate seta un interval intre declanșări de 10 minute si un număr de declanșări (Exposure Count). Poate merge si pana când filmul sau cardul de memorie este plin.

BULB/Long Exposure (LONG) – Permite expuneri de 100 de ore

Exposure Count (N) – Permite setarea unui număr de declanșări

Conectare prin GPS port

Fig. 1.10 Declanșator MC-C1

1.2.2. Analiza dispozitivelor mecanice pentru panorama

Alegerea capului panoramic reprezintă cea mai dificilă problemă, datorită ofertei reduse și prețurilor ridicate ale dispozitivelor de calitate. În acest moment cel mai bun raport calitate/preț, incluzând aici și ușurința de utilizare, aparține mai multor dispozitive. De reținut, fotografia panoramică reușește doar dacă aparatul se rotește în jurul punctului nodal al obiectivului – locul unde se formează imaginea în obiectiv. Rolul dispozitivelor de panoramare este de a permite poziționarea aparatului astfel încât el să se rotească în jurul punctului nodal, la care vom reveni, și nu al șurubului de prindere pe trepied. Altfel, apare problema de paralaxă care împiedică asamblarea corectă a imaginilor. Determinarea punctului nodal se poate face practic, dar este o procedură delicată și laborioasă, iar în cazul obiectivelor zoom trebuie realizată pentru fiecare distanță focală pe care intenționați să o folosiți. Problema de paralaxă Posesorii modelelor ca Nodal Ninja sunt avantajați prin faptul că fabricantul a publicat pe site reglajele necesare pentru majoritatea aparatelor și obiectivelor curente, ușurând considerabil utilizarea acestor dispozitive.

Nodal Ninja 3 este un dispozitiv ingenios. Este dotat cu nivelă, indispensabilă pentru alinierea orizontală a aparatului, și susține fără probleme aparatul montat. Pentru aparate mai voluminoase se poate opta pentru modelul Nodal Ninja 5. Rotitorul dispozitivului ascunde în interior o bilă de oțel împinsă de un arc, cu rol de a stopa aparatul, pentru declanșare, la fiecare gaură de pe disc. Rotirea dispozitivului de la un stop la altul se face ușor, precis și fără joc, chiar dacă aparatul cântărește câteva kilograme, ceea ce relevă genialitatea construcției. Cu cât obiectivul are un unghi de acoperire mai mic, apare necesitatea de a folosi un disc cu mai multe găuri, deci mai multe fotografii la o panoramare. Este adevărat, în acest caz, rezoluția imaginii finale va fi proporțional mai mare. Nodal Ninja 3 permite fixarea aparatului atât orizontal cât și vertical. Opinia generală e că prinderea aparatului în plan vertical dă randament mai mare. O panoramă cu Nodal Ninja se realizează ușor. După fixarea și reglarea aparatului, se efectuează o suită de cadre în plan orizontal, rotind dispozitivul cu tot cu aparat, din stop în stop, declanșând la fiecare stop, până când subiectul vizat este complet acoperit. Singurul dar și cel mai mare minus e că prețul unui astfel de sistem este extrem de ridicat și pornește de la 800$.

Structura unui astfel de sistem este prezentată în figura de mai jos:

Fig. 1.11 Schema structurală a sistemului NodalNinja 3

Capul foto panoramic Manfrotto 303SPH permite realizarea fotografiilor panoramice, fiind cel mai complex cap din aceasta gama.

 303SPH este un cap foto panoramic multi-row. Acesta are doua plăcuțe glisante pentru poziționarea aparatului deasupra axei de rotație panoramice, plus o plăcuță glisanta care se învârte in jurul axei de inclinare fata/spate. In acest mod, aparatul foto poate fi rotit, atât in plan vertical cat si in plan orizontal, in jurul punctului nodal al aparatului/obiectivului, astfel încât sa se poată realiza cu ușurință si exactitate fotografii panoramice in secvențe, pe mai multe rânduri (fotografii VR).

  Prin folosirea capului 303SPH se garantează faptul ca software-ul folosit pentru compunerea imaginilor realizează o fotografie panoramica îmbinata perfect, cu o prelucrare post producție minimă.

 Toate plăcuțele au marcajele vizibile, astfel încât repoziționarea aparatului in punctul nodal sa fie ușor de realizat, odată ce acesta a fost identificat si notat.

 Bratul vertical al capului 303SPH poate fi deblocat si întors la 90° si apoi reblocat, astfel încât sa ocupe cat mai puțin spațiu la transport, iar mecanismele de glisare ale plăcuței sa fie protejate de șocuri si lovituri in timpul transportului.

 Capul 303SPH este livrat cu un extra set de plăcuțe glisante pentru a putea fi folosit cu aparate foto de dimensiuni diferite.

  Spre deosebire de competitori, la capetele Manfrotto greutatea maxima admisa reprezintă standardul sever de calcul, care ia in considerare nu doar greutatea maxima in axul coloanei la nivelul plăcutei, ci si greutatea maxima măsurata in centrul gravitațional al sistemului cap-camera (la 12 cm deasupra plăcuței), in poziția pe verticala a camerei, excentrica fata de axul coloanei, care determina momentul maxim de răsucire. Astfel când veți selecta capul Manfrotto dorit, va fi foarte simplu: nu trebuie sa mai țineți cont de centrul de greutate al sistemului cap-camera (ca in cazul altor producători), ci doar de greutatea neta a camerei așa cum e normal. Acest cap foto panoramic însă la fel e condus manual, ceea ce nu oferă o precizie maximă a sistemului și respectiv o post-redactare ceva mai complicată. Plus la asta, acesta are un preț ridicat. Forma sa fizică este reprezentată în figura 1.12, une este reprezntată și posibilitatea

Fig. 1.12 Cap panoramic 303SPH (preț 8900 lei)

Triton Cap trepied panoramic PH 36 este un cap de trepied pentru mișcări deosebit de fine – reglaj pe 3 planuri – suporta pana la 9kg. Capul TRITON 3-D PH 36 oferă caracteristici remarcabile pentru prietenii naturii si pentru fotografii care caută un cap de trepied ce suporta sarcini grele si in același timp care permite mișcări fine. Având doar 1,4kg acest cap robust nu încearcă trepiedul mai mult decât este nevoie. In ciuda greutății reduse PH 36 suporta instrumente cu o greutate proprie de pana la 9kg.
TRITON PH 36 oferă 3 planuri de mișcare libera, mișcarea orizontala si verticala la care se adaugă posibilitatea de inclinare a bazei aparatului cu 90°. Aveți astfel posibilitatea sa fotografiați si in formatul portret. Axurile capului de trepied PH 36 au un diametru mare. Astfel sunt posibile mișcări fine si la o încărcare maxima. Fixarea poziției se face in toate cele trei planuri sigur si fără mare efort.

Date tehnice:

conexiune trepied 3/8"

conexiune spre optica prin filet foto 1/4"

sarcina maxima suportata pana la 9kg

greutate 1,4kg

intervale de pendulare: 360° orizontal; -30° pana la 90° vertical; basculare 0° – 90°

înălțime cca. 16cm

realizat din aluminiu stabil si ușor

sistem de fixare rapida

poziționare precisa cu ajutorul a doua nivele

Forma capului panoramic Triton este prezentată mai jos:

Fig. 1.13 Capul panoramic Triton PH-36

Capul 804RC2 este primul cap de trepied din lume care folosește un sistem de siguranța bazat pe un arc de revenire. Acest sistem protejează camera foto in cazul in care fotograful uita sa strângă maneta de inclinare a capului. Acest sistem cu arc de revenire este incorporat in axa ‘inainte/inapoi’ a mișcării pe verticala. Arcul de asemenea face ușoară poziționarea camerei atunci când se folosesc teleobiective. Un cap de trepied excelent din toate punctele de vedere. Are un stick-slip aproape imperceptibil, nu-si modifica orientarea la strângere, iar arcurile de amortizare sunt geniale. Pe lângă ca aparatul e ferit de șocuri ajuta si la o modificare foarte precisa a unghiului Pitch la capete de cursa.

Fig. 1.14 Capul panoramic 804RC2

După ce s-au studiat toate prototipurile și dispozitivele ce pot ajuta la proiectare, au apărut câteva probleme, ce ar trebui concretizate înainte de a începe proiectarea. În primul rând cei care pentru prima dată încearcă să formeze panorama prin softurile specializate se întâlnesc cu așa problemă numită paralax, care constă în schimbarea relativă a poziției unui obiect față de fonul îndepărtat, în dependență de poziția observatorului. De exemplu dacă am privi cu un ochi prin ocular, apoi cu altul imaginea s-ar schimba. Cel mai des și accentuat asta se observă la obiectele din planul apropiat. Mai jos este reprezentat efectul de paralax la mișcarea camerei.

Fig.1.15 Efectul de paralax la mișcarea camerei

Din această figură se observă că în timpul mișcării sau mai bine zis rotirii camerei are loc intra schimbarea planurilor obiectelor. Astfel în timpul post-procesării imaginilor și compoziționare în sfera panoramică apar unele nepotriviri la intercalarea imaginilor. Pentru evitarea acestui efect este necesar de a roti aparatul foto în jurul unui punct special, numit nodal. De obicei punctul nodal al aparatelor foto este specificat în foaia de catalog, însă sunt și o serie de tehnici ce permit găsirea punctului nodal în mod manual. Punctul nodal, dacă de vorbit simplu, se găsește pe axa optică a aparatului foto, la fel cu e arătat în figura ce urmează:

Fig. 1.16 Punctul nodal

În timpul rotirii camerei în jurul punctului nodal divergența dintre obiectele planului apropiat și îndepărtat nu mai au loc, adică are loc următorul caz:

Fig.1.17 Rotația în jurul punctului nodal

Pentru ca aparatul foto să se rotească împrejurul acestor puncte nodale se folosesc capurile panoramice descrise mai sus.

Cel mai bine e ca sistemul să ofere posibilitățile rotirii atât pe vertical și orizontal, cit și să permită alegerea corectă a punctului nodal. În sistemul arătat mai jos se vede că în timpul oricărui tip de rotire axele orizontale și verticale sau mai bine zis intersecția acestora nu deviază. Astfel dacă instalăm aparatul foto în așa poziție ca punctul nodal să coincidă cu intersecția prezentată mai jos, efectul de parallax practic nu va fi. Punctul nodal a oricărui tip de aparat fot e specificat în foaia de documentație.

Fig.1.18 Sistem pentru excluderea efectului de ”paralax”

Mai jos este prezentată o imagine cu problema paralax:

Fig. 1.19 Influența parallax-ului asupra captării imaginii panoramice

Pe fundalul din spate se poate observa neconcordanța la încercarea creării fotografiei panoramice. Această problemă nu este foarte vizibilă în cazul imaginilor din exterior, cum ar fi natură sau peisaje deschise. Însă se observă în cazul texturilor liniare, din interior.

1.2.3. Studierea problemelor de proiectare a întregului sistem

Pentru a putea elabora un dispozitiv este necesar să alcătuim un caiet de sarcini ce va include toate funcțiile și operațiile care dispozitivul trebuie să le înfăptuiască. Pentru a putea crea baza de proiectare(algoritmii, grafurile, schemele), alcătuiesc acest caiet de sarcini:

1. Conducerea se face de la calculator.

2. Transmiterea datelor la distanță prin canalul Bluetooth. Comunicarea va fi bidirecționala pe un canal se transmit pachetele necesare pentru mișcarea sistemului (direcția, viteza, timpul de acționare) și tot pe acest canal se vor primi date de la sistem.

3. Mecanismul pe care va fi fixată camera trebuie să se rotească pe axa x și y.

4. Sistemul trebuie să se adapteze la datele specificate în softul de bază pentru captarea fotografiilor

5. Sistemul trebuie să fie capabil să efectueze mai multe fotografii pe poziție

6. Sistemul trebuie să aibă un timp de stabilizare pentru evitarea vibrațiilor sau devierilor în timpul fotografierii.

La cercetarea prototipurilor existente am observat câteva neajunsuri, sistemele ce se conduc manual nu sunt foarte precise, iar cele ce folosesc capurile panoramice costa foarte scump și oferă o gamă de funcții care nu sunt necesare pentru o panoramă simplă, pentru aceasta se proiectează acest dispozitiv cu funcții limitate și la un preț cât de cât rezonabil. Mai mult ca atît sistemul trebuie să asigure o rapiditate a procesului de captare și respectiv o rapiditate a generării panoramei.

După ce transmitem coordonatele prin Bluetooth este necesară primirea lor la dispozitivul de conducere cu camera, dispozitivul analizează datele primite și acționează cu motoare în dependență de datele primite. Problema constă în posibilitatea trecerii coordonatelor primite în impulsuri pentru motoare pas cu pas. Principală problemă cum am menționat este softul la calculator de conducere a sistemului și respectiv softul de pe placa Arduino.

2. ANALIZA ALGORITMULUI DE CREARE A FOTOGRAFIEI PANORAMICE

În mod general întregul proces pentru crearea unei fotografii panoramice, ar conține următorii pași:

Alegerea utilajului

Definirea punctului nodal (pentru evitarea paralax-ului)

Procesul captare a imaginilor propriu-zis

Redactarea imaginilor obținute

Generarea sferei panoramice și/sau a turului virtual.

Mai jos este prezentată o schemă generală pentru ilustrarea procesului de formarea a unei fotografii panoramice.

Fig.2.1 Etapele procesului de creare a panoramei

În cele ce urmează vom descrie succint fiecare din acest proces, însă ne vom axa mai mult pe procesul de captare propriu-zis a imaginilor, el prezintă pentru noi o importanță deosebită, deoarece pe baza analizei lui vor fi definiți algoritmii de funcționare a sistemului nostru ce urmează a fi proiectat.

2.1 Alegerea utilajului

Când ne referim la alegerea utilajului, subînțelegem toate mijloacele tehnice, care în corelație ne vor permite captarea imaginilor. Mai întâi de toate ne vom referi la aparatul de fotografiat propriu-zis. După cum știm, în prezent, există o mulțime de aparate foto de tot tipul. Pentru realizare fotografiilor panoramice însă se recomandă anumite aparate foto, în dependență de caracteristicele acestuia. Chiar dacă fotografii pot fi captate și de pe fotoaparate simple, majoritatea fotografiilor panoramice sunt create pe DSLR, completate cu obiective de tip fisheye. Aceste obiective au o distanță focală foarte mica (îndeosebi sub 15mm) permițând unghiuri de fotografiere foarte mari, aproape de 180 º, de exemplu un obiectiv cu distanta focala de 15 mm va avea unghiul de cuprinde de 180 º, unghiurile de cuprindere diferă în funcție de producătorul obiectivului dar el este specificat în detaliile obiectivului. Obiectivele de tipul fisheye pot fi combinate cu obiectivele de tipul lensbaby rezultând un lensbaby cu un câmp de cuprindere foarte mare. Asemenea obiectiv permite în primul rând realizarea panoramei din mai puține fotografii și de o calitate înaltă. Mai jos avem prezentat o diagramă ce denotă procentajul utilizării unor anumite tipuri de obiective (distanța focală a lentilei) în fotografiile panoramice.

Fig. 2.2 Ponderea diferitor obiective în crearea Panoramei, după distanța focală

Distanța focală reprezintă distanta fizică dintre senzorul aparatului de fotografiat si centrul optic al obiectivului. Cu cât aceasta distanță focală este mai mică (scurtă) cu atât obiectivul este mai ”wide”, are un câmp de acoperire mare si o magnificare mai mica.

În principal, obiectivele sunt de trei feluri: wide, normale si teleobiective. De obicei, obiectivele wide sunt cele cu distanța focală mai scurtă de 28mm, după cum se vede din figura de mai sus acestea sunt și cele mai folosite în cazul realizării fotografiilor panoramice. Obiectele apropiate se văd mari, cele îndepărtate se văd foarte mici și obiectele din planuri diferite au  mărimi disproporționate între ele.

Un obiectiv “normal” este cel a cărui distanță focală se situează în jurul valorii de 50mm, pe un aparat DSLR.

Teleobiectivele sunt, de obicei, mai “lungi” de 100 de mm, având distante focale ce pot ajunge si pana la 800mm sau chiar mai mult. Acest tip de obiective pentru noi nu prezintă un interes sporit în cazul realizării Panoramei. În figura ce urmează este prezentată structura simplificată a distanței focale.

Fig.2.3 Reprezentarea distanței focale pentru un DSLR tipic

Fiecare obiectiv are o distanță focală fixă (de ex. 50mm) sau variabilă, în cazul obiectivelor “cu Zoom” (de exemplu 24-70mm).

In cazul aparatelor DSLR Full Frame, distanta focală a obiectivului este aceeași cu distanța focală percepută. În cazul aparatelor foto dotate cu senzor de dimensiuni reduse, distanța focală percepută este mai mare decât distanța focală a obiectivului datorită mărimii mai mici a senzorului față de standardul “full-frame”, de 35mm. Acesta, în termeni non-tehnici, este un fel de “crop” pe care îl înregistrează senzorul în comparație cu un full-frame. Diferența dintre senzorul cu mărime standard și cel redus poarta denumirea de “factor de multiplicare”.

În cazul aparatelor foto DSLR Canon dotate cu senzor în format APS-C, factorul de multiplicare a distanței focale este de 1.6x iar în cazul aparatelor Nikon cu senzor DX este de 1.5x. Asta deoarece senzorul Nikon DX este de 1.5 ori mai mic decât dimensiunea standard a unei pelicule de film de 35mm. Daca luam ca exemplu un obiectiv cu distanța focală de 50mm, pe un body Canon distanța focală percepută va fi de 80mm (50mm x 1.6), iar același obiectiv pe un DSLR Nikon va avea o distanta focala echivalenta de 75mm (50mm x 1.5).

În prezent, producătorii de obiective au în gama lor de produse două tipuri de obiective: cele “optimizate” pentru aparate cu senzor de dimensiuni reduse (gama EF-S la Canon, DX la Nikkor sau DC de la Sigma) și cele “clasice” ce pot fi folosite și pe aparate cu senzor redus dar și pe full-frame. Dacă un obiectiv clasic  funcționează și pe aparate cu senzor redus, nu același lucru se poate spune despre cele dedicate senzorilor mici. Aceste obiective nu funcționează pe aparate cu senzor full-frame deoarece imaginea proiectată pe senzor este optimizată ca dimensiuni pentru senzorul mic si nu acoperă întreaga suprafață a unui senzor de dimensiuni standard.

Din punct de vedere optic, lentilele cu distanță focală fixă (de ex: 50mm sau 28mm) oferă o calitate mai bună a imaginii și distorsiuni mai bine controlate. Pe de alta parte, lentilele cu distantă focală variabilă (zoom) sunt mai versatile, oferind o gamă mai larga de posibilități de fotografiere, fără a mai fi necesara schimbarea obiectivului. Totuși, obiectivele cu un factor de zoom mare, deci un interval larg de distanțe focale (de exemplu 28-300mm), oferă un compromis în ceea ce privește calitatea imaginii si distorsiunile.

Odată cu lungimea focală se definesc alți 2 parametri, și anume câmpul de vedere și unghiul de vedere. Unghiul de vedere poate fi definit ca unghiul format de cele două linii din punctul principal și secundar al senzorul de imagine. Unghiul de vizualizare variază, în conformitate cu dimensiunea imaginii. De exemplu, pentru un obiectiv simplu, cu distanța focală de 55 mm, ungiul de vedere este de aproximativ 94⁰. În cazul unui obiectiv fisheye, acest unghi este de 160⁰. Cu cît este mai mare cu atît calitatea panoramei este mai bună. Forma schematică a unghiului de vedere e prezentată mai jos:

Fig.2.4. Dependența unghiului de vedere de distanța focală

Câmpul de vedere (Field of View, FOV) este măsura dimensiunii captate atît pe verticală cît și pe orizontală (VFOV, HFOV). Pentru a înțelege că această valoarea sau mai bine zis acest parametru al camerei foto nu diferă foarte mult de unghiul de vedere, prezentăm imaginea de mai jos:

Fig.2.5 Unghiul de vedere și câmpul de vedere

Factorul de crop (sau coeficientul de multiplicare focală) este un parametru ce raportează dimensiunea senzorului de imagine al unui aparat foto digital la dimensiunea de referință, respectiv dimensiunea filmului de 35mm.

În fotografia clasică, formatul  de referință este considerat filmul de 35mm(36mm X 24mm). În fotografia digitală, senzorul de imagine echivalent acestui format de referință este numit senzor full frame, și are aceleași dimensiuni, 36mm X 24mm.  Majoritatea aparatelor DSLR au un senzor de imagine semnificativ mai mic decât senzorul full frame (datorita costurilor de producție mult mai reduse.) Formula matematica de calcul a factorului de crop pentru un aparat DSLR este raportul dintre diagonala senzorului full frame și diagonala senzorului aparatului.

Să luăm ca exemplu aparatul DSLR, Nikon D3100,  care are un senzor de imagine Nikon DX, de dimensiune aproximativ 24mm X 16mm. Diagonala senzorului este 28,8mm (folosim formula geometrica: ipotenuza =  radical din suma pătratelor catetelor). Diagonala unui senzor full frame este 43,3mm. Folosind formula de mai sus, factorul de crop pentru senzorul Nikon DX este  43,3 / 28,8 =1,5. Pentru a înțelege mai bine,  este exemplificat în imaginea de mai jos ce vede un DSLR full frame (senzor de imagine 36mm X 24mm) și, în cadranul roșu, ce vede un DSLR cu factor de crop  1,5X (senzor de imagine 24mm X 16mm), folosind aceiași distanță focală pentru obiectiv.

Folosind aceeasi lentila, camera cu senzorul mai mic va “vedea” mai putin din imagine. De aceea se numeste factor de crop.  Senzorul mai mic face crop la ceea ce vede senzorul full frame. Reprezentarea grafică la toate cele menționate mai sus poate fi observată în figura următoare:

Fig.2.5 Crop factorul

Unghiul de cuprindere (ceea ce “vede” camera) depinde de suprafața senzorului de imagine și de distanta focală. Dacă distanța focală crește, unghiul de cuprindere scade. Și dacă senzorul este mai mare, unghiul de cuprindere este mai mare.

Astfel,  pentru ca unghiul de cuprindere al unui DSLR cu factor de crop 1,5X (cadranul roșu) să se suprapună peste unghiul de cuprindere al DSLR-ului full frame, fie micșorăm distanța focală la primul cu 1,5X (Zoom out), fie mărim distanta focală la al doilea cu 1,5X(Zoom in). De aici, factorul de crop se mai numește si coeficient de multiplicare focală.

Practic, o fotografie făcută cu un Nikon D3000(factor de crop de 1,5), cu un obiectiv cu distanta focală de 50mm va corespunde cu o fotografie făcută cu un DSLR full frame, cu un obiectiv cu distanța focală de 1,5 X 50mm ,adică 75mm.

Avantajele sau dezavantajele unui DSLR cu factor de crop  față de un DSLR full frame sunt vizibile atunci când distanta focală a obiectivului se îndreaptă către o extremitate.  Va  fi în dezavantaj pentru o distanta focală mică (wide angle), si foarte avantajat pentru o distanță focală mare (când subiectul este foarte departe, și folosim un obiectiv cu distanță focală mare,  de 300mm să zicem,  la un DSLR full frame ar trebui sa folosit un obiectiv de 450mm).

Pentru majoritatea camerelor DSLR, factorul de crop este intre 1,3 si 2X

Senzorul de imagine Nikon DX, si cel Sony au factor de crop 1,5X.

Senzorul de imagine Canon APS-C are factor de crop 1,6X.

Senzorul de imagine Canon APS-H are factor de crop 1,26X.

Punctul nodal, pentru evitarea parallaxului.

Alegerea punctului nodal se face de obicei manual. Mai jos este reprezentată alegerea corectă a punctului nodal, descrierea acestui proces a fost făcută în capitolul 1

Fig.2.6 Alegerea punctului nodal

2.2 Procesul de captare a imaginilor propriu-zis

Când ne referim la procesul de captare, ne referim totodată și la presetările fotoaparatului pentru fotografiere. Aici putem atrage atenția în primul rând la formatul în care vor fi captate imaginele.

Multe camere digitale DSLR pot înregistra imagini în ambele fișiere RAW și JPEG, de dimensiuni și calități diferite. Formatul de fișier RAW produce fișiere mult mai mari decât JPEG , însă luând în considerație perioada curentă memoria de dimensiuni mari nu constituie o problemă, dar RAW ne oferă o calitate mia înaltă pentru preprocesare ulterioară și respectiv rezultatul final al panoramei va fi mai bun. Asta se datorează mai ales faptului că fișierele RAW sunt o înregistrare a datelor brute captate de senzor de camera foto, cu procesare minimă a imaginii aplicate de aparatul de fotografiat. RAW este de fapt un termen generic pentru o serie de formate proprietare dezvoltate de diferiți producători de camere, toate fiind capabile să genera, fișiere necomprimate imagine de înaltă adâncime a culorii, adică numărul de biți folosiți pentru a caracteriza fiecare pixel dintr-o imagine; cu cat se folosesc mai mulți biți, cu atât in imagine apar mai multe nuanțe de culori; cel mai frecvent se folosesc: 1, 8, 16, 24 (cate 8 biți pentru culorile de baza: roșu, verde, albastru) sau 48 biți (cate 16 biți pentru fiecare culoare). În cadrul formatului RAW fișierele sunt inutilizabile până când nu au fost prelucrate într-o aplicație de editare de imagini care sprijină acest tip de fișier special.

Fig.2.7 Diferența între RAW și JPG

Avantaje ale formatului RAW:

• Formatul RAW înregistrează toate datele capturate de senzor . RAW este cel mai aproape de versiune în prezent de un " negativ digital " .

• Este posibil de reglat expunerea (în timpul editării).

• Deciziile cu privire la balansul de alb, de corecție a culorilor, saturație, contrast, pot fi luate în timpul fazei de post- producție , cu puțin sau nici un impact asupra calității imaginii .

• fișiere RAW pot fi arhivate și revizuite ulterioar pentru a obține noi " interpretări "de o imagine cu nici o pierdere de calitate .Cu toate acestea, acest lucru presupune că software adecvat pentru manipula aceste formate proprietare vor fi în continuare disponibile .

Dezavantaje:

• fișierele RAW folosesc mult mai mult spațiu pe carduri de memorie și alte depozitare.

• Trebuie să fie post- procesate pentru a crea tipuri de imagini utilizabile .

Odată ce ne-am familiarizat cu setările sau așa numitul pre-proces, trecem la procesul de captare propriu-zis. Pentru efectuarea Panoramei avem nevoie de o serie de fotografii, efectuate la o deviație de unghi. Cel mai uzual este captarea pentru forma sferică, în care imaginile sunt captate pe așa-zise inele la o diferență de cadre. Grafic acest proces este prezentat în figura următoare:

Fig.2.8 Proiecția mozaică a imaginii în cadrul panoramei

Pentru a înțelege mai bine procesul de captare prezentăm diagrama în timp a captării imaginilor, sau mai bine diagrama în timp a secvențelor de cadru, prezentată în figura (2.9):

Fig. 2.9 Diagrama în timp a secvențelor de cadru

Pentru captarea imaginilor în așa mod utilizatorul, trebuie să fie plasat centrul ariei de fotografiere pentru surprinderea consecutivă a unui număr de fotografii la devierea de câteva grade de vizualizare. Totodată trebuie să ținem cont că în cadrul fotografiilor panoramice aceasta conțin elemente comune (15-20%), așa numitul overlap. Mai jos este reprezentat felul în care sunt captate imaginele, utilizatorul fiind reprezentat prin q, iar imaginile statice la diferite unghiuri și nivele prin v. Astfel realizăm o serie de imagini captate pe plan orizontal apoi, schimbând cu câteva grade unghiul pe verticală executăm același proces (pentru realizarea sferică a panoramei). Menționăm că pentru realizarea unui singur strat de panorama (180) este suficient o singură rotație pe orizontală.

Fig.2.10 Procesul de captare a sferei panoramice

Dar apare o întrebare, totuși de cîte imagini captate avem nevoie pentru crearea unei panorame depline. Răspunsul dat este foarte desfășurat. Acest număr depinde de o serie de factori, mai bine zis de aproape toți parametrii lentilei și aparatului foto. Adică în dependență de ce aparat foto folosim și ce tip de obiectiv numărul necesar de imagini va fi diferit. Totodată mai trebuie să ținem cont și de intercalarea imaginilor, după cum am menționat mai sus de obicei această valoare e de aproximativ 20 % din imaginea precedentă. Pentru a înțelege mai bine acest proces prezentăm figura următoare:

Deci după cum se vede din desenul precedent cînd vom calcula numărul total de imagini necesare pentru efectuarea panoramei vom ține cont și de intercalarea imaginilor.

După cum am menționat numărul de imagini captate depinde de mai mulți factori, cei mai importanți fiind: unghiul de vedere, sau cîmpul de vedere (orizontal, vertical, diagonal), factorul de decuplare (crop factor), distanța focală a lentilei și logic tipul lentilei. Vom încerca să analizăm dependența acestui număr în dependență în dependență de fiecare factor în parte

Fig.2.11 Intercalarea imaginilor în procesul Panoramei

În punctul precedent ne-am făcut cunoscuți cu așa noțiuni ca cîmpul de vedere și unghiul de vedere. Acum o să încercă să explicăm rolul lor în procesul de captare a imaginilor. Începem cu unghiul de vedere. Expresia matematică și reprezentările sunt definite în figura următoare:

Fig.2.12 Unghiul de vedere al lentilei

Deci după cum se poate de observat unghiul de cuprindere sau de vedere poate fi calculat folosind formula următoare:

(2.1)

Unde D este dimensiunea matricei (pe verticală sau orizontală), f – distanța focală a lentilei. În așa mod, avînd caracteristicele obiectivului nostru putem determina unghiul care va acoperi acesta. Această valoare ulterior o vom folosi în softul de bază pentru calcularea numărului optim de imagini necesare pentru o panoramă perfectă. Al doilea parametru analizat este câmpul de vedere, sau FOV (Field of view). Cîmpul de vedere și unghiul de vedere au într-un sens mai larg aceeași însemnătate. Deobicei în foile de catalog al obiectivelor pentru DSLR sunt specificate așa abrevieri ca: HFOV – unghiul orizontal, VFOV – unghiul vertical și DFOV – unghiul diagonal de cuprindere. Drept exemplu prezentăm niște obiective intra schimbabile unde sunt specificați acești parametri.

Fig.2.13 Exemple de foi de catalog pentru obiective panoramice, cu specificația parametrilor de bază

Astfel putem găsi numărul de fotografii necesar pentru orice tip de optică. Aceste valori le putem implementa într-o bază de date a softu-lui proiectat, astfel ca utilizatorul să fie capabil să aleagă tipul de optică, iar programul automat să specifice toți parametrii acestui obiectiv. Aceștia vor fi parametrii optimali de operare, însă utilizatorul ar putea oricînd să modifice orice parametru la dorința proprie. Pentru ca crearea panoramei să nu fie afectată, trebuie de creat un algoritm care ar calcula automat numărul optim de imagini și a unghiului de deplasare pe cele 2 axe.

În tabelul ce urmează sunt prezentate valorile optime pentru unghiul de cuprindere și numărul optim de imagini, ce ar trebui să fie captate, considerând rata de acoperire a 2 imagini de aproximativ 20%.

Tabelul 2.1 Parametrii specifici si numărul optim de imagini pentru diferite obiective

Unghiurile de acoperire prezentate în tabelă nu au o valoare exactă. Z și N sunt zenit și respectiv nadir; numărul de numere întregi constituie numărul de rânduri în fotografia panoramică, iar valoarea numărului proprie este nu altceva decât numărul de imagini într-un rând. În cazul în care numărul de imagini este luat mai mare, are loc o rată de acoperire a imaginilor vecine mai mare. Această nu afectează, dar nici nu ajută formarea sferei panoramice, însă dacă se vor capta mai puține imagini, atunci rata de acoperire a imaginilor vecine va fi mică și asta va afecta formarea panoramei.

2.3. Post-redactarea și generarea sferei panoramice

După realizarea tuturor fotografiilor necesare obținerii unei panorame este momentul să le unim fie manual fie cu ajutorul unui software de îmbinare. Varianta de îmbinare manuală a fotografiilor este un proces destul de lung și anevoios, în acest caz, fiecare imagine se îmbină una cu alta, apoi la sfârșit se aplică funcția de decupare pentru crearea unei panorame, se folosește în rare cazuri și exclusiv în panorama 180. Varianta de “îmbinare automată” a fotografiilor este la îndemâna oricui nefiind necesare cunoștințe în diverse programe de editare grafică. Pentru unirea fotografiilor necesare realizării panoramei următoarele softuri vă pot fi de mare ajutor:RealViz Stitcher, Panorama Tools, Microsoft ICE, AutoStitch, AutoPano, 360 degrees of freedom  și Panorama Factory. Lista softurilor pentru realizarea panoramelor este foarte lungă, existând foarte multe ce vă pot ușura munca din programele clasice de editare foto. În cele ce urmează însă ne vom referi la softul PTGui.

PTGui (de la Panorama Tools Graphical user interface) este un soft gratuit produs de compania New House Internet Services. El este preconizat pentru crearea oricărui tip de panoramă, avînd o interfață de lucru interactivă și extrem de simplă. Ultimele versiuni ale programei permite și crearea tururilor virtuale interractive. Interfața grafică a softu-lui e prezentată mai jos:

Fig.2.14 Interfața de lucru a programei PTGui

Principala sarcină a acestui soft este corecția distorsiunilor geometrice apărute în timpul captării imaginilor, inclusiv distorsiunile inerente obiectivului. Este un instrumentariu foarte util pentru procesarea imaginilor, care au fost captate fără cap panoramic, adică ajută la mascarea efectului de paralax. La fel aceasta permite fotografiilor de gigapixeli, prin alipirea miilor de fotografii captate. Oferă o pre vizualizare în timp real pentru aprecierea procesului de generarea a panoramei. Ultima versiune a softu-lui lucrează și pe Windows 64 bit.

După alipirea tuturor imaginilor captate în soft-ul de referință obținem posibilitatea analizei imaginii în toate direcțiile, după felul reprezentat mai jos:

Fig.2.15 Modul de vizualizare a fotografiei panoramice obținute

3. Realizarea soft-ului pentru calculator

În acest capitol ne vom referi la modelarea soft-ului propriu-zis. Dezvoltarea unui produs software presupune etape de analiză, proiectare, scriere, testare și mentenanță a codului sursă al programelor. Implementarea, testarea, verificarea și validarea produsului software sunt cele mai importante etape. Pentru înțelegerea lor este însă nevoie de cunoașterea tuturor etapelor. Deși sunt considerate etape separate, între ele există o puternică relație de interdependență. Mai jos este ilustrat procesul de proiectare a unui sistem software complex:

Fig.3.1 Etapele parcurse în proiectarea unui soft

Analiza cerințelor este prima etapă a ciclului de realizare a unui produs în care se stabilesc cerințele aplicației, pornind de la cerințele utilizatorului final, se identifică funcțiile viitorului produs software precum și datele implicate. Această etapă răspunde la întrebarea ce se va realiza prin dezvoltarea produsului software.

Proiectarea reprezintă acea etapă a ciclului de realizare în care se stabilește modul de realizare a cerințelor identificate în etapa de analiză, adică trebuie să răspundă la întrebarea cum se vor realiza aceste cerințe atât la nivel global cât și la nivel de detaliu. Această etapă pornește deci de la cerințele și specificațiile definite anterior și continuă cu detalierea și transformarea acestora până la definirea structurii unei soluții care să fie reprezentată folosind un limbaj grafic, textual sau mixt. În această etapă intră: modelarea diagramelor UML, scrierea codului, proiectarea interfeței grafice ș.a.

Validarea este procesul de evaluare a unui sistem sau a unei componente în timpul sau la sfârșitul procesului de dezvoltare pentru a determina dacă satisface cerințele specificate.

3.1 Analiza cerințelor

Este esențial sa dezvoltăm un model pentru sistem, înainte de a începe sa scriem cod ce va fi folosit pentru controlarea sistemului sau interacțiune cu acesta. Modelarea software-ului este probabil partea cea mai grea a proiectării software. Înainte de a proiecta arhitectura unui sistem software este important să se obțină o imagine clară asupra cerințelor care influențează arhitectura.

Procesul de identificare a cerințelor care afectează arhitectura are două tipuri de intrări: pe de o parte trebuie să se analizeze cerințele funcționale, iar pe de altă parte trebuie să se țină cont și de cerințele venite din partea celor care vor interacționa cu aplicația. În urma analizei efectuate asupra celor două tipuri de cerințe rezultă cerințele care influențează arhitectura sistemului software. Procesul de analiză a cerințelor în vederea izolării cerințelor care influențează arhitectura este ilustrat în figura următoare:

Fig.3.1 Cerințele impuse la proiectarea software

Dacă e să ne referim la cerințele funcționale, atunci trebuie de menționat intrările și ieșirile. interfața de interacțiune cu utilizatorul, cu mediul. Prin intrări și ieșiri, în cazul dat, ne referim anume la datele ce vor fi introduse de utilizator, iar la ieșire mesajul ce trebuie transmis microcontrolerului de la sistemul de poziționare. Interfața de interacțiune sau interfața utilizatorului va face posibilă captarea datelor introduse de utilizator. După cum am menționat în capitolele precedente utilizatorul va trebui să introducă parametrii motoarelor cu care e echipat sistemul, coeficientul de proporționalitate dintre diametrul roții motorului și a sistemului, timpul de stabilizare a poziției, timpul între 2 fotografii consecutive, numărul de fotografii pe poziție și numărul de fotografii pe inel și numărul de inele. Pentru a ușura lucrul utilizatorului cu sistemul dat, vom crea ceva asemănător unei baze de date, în care se va conține informația despre unghiul de vedere a celor mai uzuale obiective și respectiv a numărului de fotografii necesare pentru. Astfel utilizatorului nu-i va rămâne decât să introducă aceste date în câmpurile predestinare. Cât ține de cerințele care vor veni de la cei ce vor interacționa cu aplicația, în cazul nostru utilizatorii vor necesita doar cunoștințe generale de lucru calculatorul.

3.1 Proiectarea arhitecturii

Etapa de proiectare a arhitecturii are ca și intrări cerințele obținute în etapa anterioară iar ca rezultat se obține descrierea arhitecturii sistemului software. Tot în această etapă vom proiecta și interfața de interacțiune cu utilizatorul.

Pentru a forma o viziune clară asupra modului de funcționare a soft-ului dat, și a determina scenariile de utilizare a acestuia vom așa numitele diagrame UML. Unified Modelling Language este un limbaj pentru specificarea, vizualizarea, construirea și documentarea elementelor sistemelor software. Este un standard de facto pentru modelarea software. Diagramele UML sunt grafuri care prezintă simboluri ale elementelor de modelare (model element( aranjate astfel încît să ilustreze o anumită parte sau un anumit aspect al sistemului. În UML sunt mai multe tipuri de diagrame. Pentru proiectarea fost-ului nostru vom folosi doar cîteva din ele.

Diagrama cazurilor de utilizare este o descriere a unei funcționalități ( o utilizare specifică a sistemului) pe care o oferă sistemul. Diagrama reprezintă actorii externi și cazurile de utilizare identificate, numai din punctul de vedere a actorilor.

Proiectăm deci acest tip de diagrame pentru soft-ul nostru, ținînd cont de cazurile de utilizare. Actorii, în cazul dat, vor fi calculatorul și respectiv microcontrolerul ce va conduce cu sistemul exterior. Utilizatorul, de la PC poate efectua următoarele cazuri de utilizare: alege COM port-ul, în caz că COM Portul e ales corect (corespunde cu sistemul extern conectat) acesta se deschide, se alege viteza (Baud rate), în caz că portul serial este utilizat de alt serviciu, atunci acesta este ocupat și nu poate fi deschis. Definirea setărilor de către utilizator poate fi făcută automat (citindu-se ultimele setări salvate în fișierul de configurări) sau pot fi definite din nou. Mesajul care urmează a fi transmis spre portul serial este în dependență de setările definite mai sus. Mesajul este gata spre expediere în caz că toate setările sunt introduse corect și portul serial e deschis și este imposibil de trimis dacă setările sunt incomplete. Acest mesaj e în corelație și cu sistemul exterior (microcontroler). Microcontrolerul trimite mesajul primit înapoi pentru compararea cu cel inițial. În caz că mesajele coincid sistemul e apt de a executa comanda mesajului, dacă mesajele nu coincid acesta va cere din nou mesajul de la PC.

Pornind de la toate descrierile efectuate mai sus reprezentăm diagrama stărilor de utilizare. Aceasta este prezentată în figura de mai jos:

Fig.3.3 Diagrama UML Use Case pentru soft-ul proiectat

În continuare vom proiecta diagrama de stare. Aceasta prezintă toate stările prin care trece sistemul, precum și evenimentele care-i cauzează modificările de stare. Modificarea stării se numește tranziție.

Prezentăm deci diagrama de stare a soft în figura ce urmează:

Fig.3.4 State Diagram (UML)

Odată cu deschiderea formei (aplicației) se încearcă completarea câmpurilor setărilor automat dintr-un fișier. În caz că acest fișier nu există (aplicația este pornită pentru prima dată), acesta se creează automat. Apoi se purcede la inițializarea port-ului serial, în caz că acesta este ocupat sau inexistent, soft-ul nu va permite transmiterea mesajului. Componentele mesajului sunt formate în bază de datele introduse în câmpurile de setări. Mesajul complet este format prin ”unirea” componentelor deja procesate. Acest mesaj este transmis spre port-ul serial. În caz de depășire a timpului de așteptare mesajul nu va fi transmis. După transmiterea mesajului se așteaptă un mesaj de confirmare din partea sistemului. După efectuarea Panoramei sistemul va mai transmite un mesaj de finalizare. Port-ul serial se închide și odată cu închiderea formei se salvează în fișier setările.

Analiza diagramelor de mai sus ne oferă o viziune mult mai clară asupra modului de lucru a soft-ului și ne oferă posibilitate de a scrie codul de program pe componente, ceea ce ne ușurează enorm munca. Mai mult ca atât, având aceste digrama ne dăm seama deja cu ce tipuri de mesaje o să operăm și care va fi structura interfeței de lucru a utilizatorului. Anume aceste momente vor fi analizate în subpunctele următoare.

3.2 Structura mesajului pentru expediere

După cum s-a menționat și mai sus programul nostru v-a trimite spre port-ul serial un mesaj care va conține toate datele necesare pentru ca sistemul să efectueze panorama corect. Analizînd valorile de care o să avem nevoie, care le-am dedus în capitolul 2 și analizând diagramele de mai sus deducem mărimile de care o să avem nevoie.

În primul rând, luând în considerație că sistemul pentru care este proiectat programul va fi condus cu 2 motoare pas cu pas (dirijate de driver), o să avem nevoie de parametrii acestor motoare, și anume: direcția de deplasare fiecărui motor pe ambele axe, ținând cont că driver-ul utilizat permite utilizarea micropasului, o să avem nevoie o variabilă pentru micropasul fiecărui motor. Capacitățile motorului (pași pe secundă, pe rotație) o să fie utilizate doar în cadrul programului pentru calculul celorlalte valori. O să avem nevoie și de intervalul de timp până la următorul pas (la fel pentru ambele motoare), numărul de pași până la următoarea poziție pe ambele axe și numărul de poziții, ceea ce va constitui numărul de imagini pe inel și respectiv numărul de inele a panoramei. În mesaj de asemenea se va conține timpul de așteptare la momentul sosirii în poziția necesare, acesta va fi un timp de stabilizare pentru evitarea vibrațiilor în timpul fotografierii, timpul de așteptare între 2 fotografii consecutive pe aceeași poziție. Și nu în ultimul rând o variabilă pentru numărul de fotografii pe poziție. Trebuie să avem totodată și un mesaj de simbolizare, finalizare și delimitate a acestor parametri. După analiza acestor parametri putem prezenta structura mesajului pentru expediere:

Tabelul 3.1 Structura mesajului pentru expediere

Simbolurile date reprezintă:

$PR360 – inițierea mesajului

, – delimitarea componentelor

DIR_X – Reprezintă direcția motorului pe axa X (lungimea = 1 simbol, 0-inainte, 1-înapoi)

DIR_Y – Reprezintă direcția motorului pe axa Y (lungimea = 1 simbol, 0-înainte, 1-înapoi)

MICRO_X – Reprezintă micropasul motorului pe axa X (lungimea = 2 simboluri, Valorile = 01, 02, 04, 08, 16)

MICRO_Y – Reprezintă micropasul motorului pe axa Y (lungimea = 2 simboluri, Valorile = 01, 02, 04, 08, 16)

STEP_DELAY_X – Intervalul de timp până la următorul pas al motorului pe axa X (lungimea = 5 simboluri, Valorile sunt în microsecunde)

STEP_DELAY_Y – Intervalul de timp până la următorul pas al motorului pe axa Y (lungimea = 5 simboluri, Valorile sunt în microsecunde)

STEP_X – Numărul de pași efectuați pe axa X pentru deplasare la următoarea poziție (lungimea = 4 simboluri, Valorile sunt în număr de pași)

STEP_Y – Numărul de pași efectuați pe axa Y pentru deplasare la următoarea poziție (lungimea = 4 simboluri, Valorile sun în număr de pași)

F_NR_X – Numărul de poziții pe axa X (lungimea = 3 simboluri, Valorile sunt în număr de poziții)

F_NR_Y – Numărul de poziții pe axa Y (lungimea = 3 simboluri, Valorile sunt în număr de poziții)

WAIT – Timpul de așteptare de la momentul sosirii pe poziție până la fotografiere (lungimea = 5 simboluri, Valorile sunt în milisecunde)

PHOTO_WAIT_TIME – Timpul de așteptare intre fotografiile efectuate pe aceeași poziție (lungimea = 5 simboluri, , Valorile sunt în milisecunde )

NR_PHOTO – Numărul de fotografii efectuate pe o poziție (lungimea 2 Simboluri, valorile 1-99)

Pentru a evita unele probleme legate de transmitere cum ar fi neconcordarea mesajului expediat de la PC cu cel primit de microcontroler, acesta din urmă va trimite mesajul primit înapoi la PC. Mesajul expediat și cel primit de PC vor fi comparate simbol cu simbol și doar în urma confirmării veridicității mesajului, PC-ul va trimite un al doilea mesaj sub forma de $START* , și doar atunci sistemul va purcede la executarea panoramei. Acest fapt exclude orice eventuală eroare de sincronizare dintre aceste 2 dispozitive.

Odată cu definirea mesajului pentru expediere putem purcede deja la proiectare interfeței utilizator.

3.3 Proiectare interfeței utilizator

Ideea principală a interfeței utilizator este crearea unui mediu de comunicare eficientă între utilizator și sistemul de calcul.

Etapele de proiectare a unei interfețe grafice sunt următoarele:

Identificarea sarcinii utilizatorului

Identificarea cerințelor contextuale

Crearea scenariilor de lucru

Analiza scenariilor

Crearea grafică, pictograme, texte, specificații, titluri

Realizarea prototipului

Primii 2 pași din aceste etape au fost analizate în subpunctele anterioare. Ce ține de crearea și analiza scenariilor de lucru, aici iarăși ne vin în ajutor diagramele UML proiectate mai sus. Vom folosi diagrama de cazuri de utilizare pentru crearea scenariilor și diagrama de stări pentru analiza lor. Ne rămâne deci de proiectat design-ul interfeței și de realizat prototipul. Dar înainte de aceasta trebuie să ținem cont de niște principii fundamentale de proiectare a interfeței utilizator:

Sistemul trebuie să reacționeze la necesitățile utilizatorului

Constrângerile și limitările impuse la proiectare nu trebuie făcute în scopul simplificării implementării ci în scopul simplificării utilizării

Flexibilitate la alegerea modului de interacțiune

Pentru elaborarea interfeței utilizator ne vom conduce după algoritmul prezentat în figura următoare:

Fig.3.5 Etapele proiectării interfeței utilizator

O să dezvoltăm interfața utilizator, pe baza analizei diagramei de stări. Primul element din diagrama este port-ul serial (COM port). Până la scrierea codului pentru acesta, o să avem nevoie de 2 componente pe forma de bază: COM port-ul propriu-zis și viteza sau Baud rate-ul. Un buton de inițializare și unul de închidere. Opțional am adăugat și o bară de stare. Acestea sunt prezentate mai jos:

Fig.3.6 Componenta port-ului serial din interfața grafică

Analizând mai departe diagrama de stări, observăm că avem nevoie de componente sau câmpuri, care vor fi completate de utilizator pentru formarea mesajului. Știind structura mesajului din subpunctul anterior definim câmpuri pentru toate setările, iar acolo setările sunt limitate, am folosit câmpuri cu bife, cum e reprezentat mai jos.

Fig.3.7 Componenta setărilor

În capitolul precedent am menționat că cel mai important rol în realizarea panoramei îi revine obiectivului aparatului foto. În funcție de parametrii acestuia se calculează numărul de imagini pe inel și numărul de inele. Însă cum nu toți utilizatorii cunosc parametrii obiectivelor, unghiul lor de vedere și respectiv numărul de fotografii necesare, am decis să modelăm o componentă ce ar conține toată această informație despre cele mai uzuale obiective ale aparatului foto. Informația a fost preluată de pe foile de catalog a obiectivelor date. Aici este toată informația ce ține anume de realizarea unei panorame cu ajutorul unui astfel de obiectiv: cîmpul de vedere, numărul minim de fotografii necesar pentru realizarea unei panoramel. Astfel utilizatorul poate alege tipul obiectivului și doar să introducă setările necesare. Această componentă este prezentată în figura următoare:

Fig.3.8 Componenta bazei de date a obiectivelor aparatelor pentru panorama

Toate aceste componente (descrise mai sus) vor fi amplasate pe o singură formă. În cazul nostru nu este nevoie să recurgem la un meniu sau la forme multiple.

Mai jos prezentăm forma finală a interfeței de lucru a primei versiuni a soft-ului proiectat:

Fig.3.9 Interfața grafică a utilizatorului

Componentele de sus trebuie completate cu codul corespunzător, astfel trecem la scrierea codului pentru fiecare componentă.

3.4 Codul sursă al componentelor

Pentru scrierea codului ne vom folosi de aceleași diagrame de stare, de structura mesajului necesar pentru expediere și de interfața grafică proiectată mai sus.

Parcurgem același algoritm ca la proiectarea interfeței. Primul component fiind port-ul serial. Visual Studio 2010 ne oferă o componentă aparte pentru acest component. Pentru găsirea porturilor disponibile folosim următoare funcție:

private: void findPorts(void)

{

// primirea numelor porturilor

array<Object^>^ objectArray = SerialPort::GetPortNames();

// adaugarea acestor nume in ComboBox din interfata

this->comboBox1->Items->AddRange( objectArray ); }

Inițializarea portului se va face în felul următor:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

this->textBox1->Text=String::Empty;

if(this->comboBox1->Text==String::Empty || this->comboBox2->Text==String::Empty)

this->textBox1->Text="Alege mai intii setarile portului";

else {

try{

// ne asiguram ca portul e deschis

if(!this->serialPort1->IsOpen){

this->serialPort1->PortName=this->comboBox1->Text;

this->serialPort1->BaudRate=Int32::Parse(this->comboBox2->Text);

this->textBox2->Text="Introdu mesajul pu expediere";

//deschide portul

this->serialPort1->Open();

this->progressBar1->Value=100; //bara de stare e setata la 100

this->button1->Enabled = false;

}

else

this->textBox2->Text="Portul nu e deschis!!!!";

}

catch(UnauthorizedAccessException^){

this->textBox2->Text="Acces neutorizat";

}

}

}

//sfirsitul functiei butonului de initializare

Aici ne-am asigurat că portul nu este ocupat, în caz că acesta e folosit de lat soft, el nu va putea fi inițializat.

Înscrierea în fișier a setărilor se face cu ajutorul funcției StreamWriter. Acesta preia datele din cîmpurile text și le înscrie linie cu linie în fișier. Codul este prezentat mai jos:

//înscriere în fișier

private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {

String^ fileName = "Setari.txt";

StreamWriter^ setari = gcnew StreamWriter(fileName);

setari->WriteLine(textBox3->Text);

setari->WriteLine(textBox6->Text);

setari->WriteLine(textBox4->Text);

setari->WriteLine(textBox10->Text);

setari->WriteLine(textBox11->Text);

setari->WriteLine(textBox5->Text);

setari->WriteLine(textBox8->Text);

setari->WriteLine(textBox7->Text);

setari->WriteLine(textBox9->Text);

setari->WriteLine(textBox13->Text);

setari->WriteLine(textBox12->Text);

setari->Close();

}

Citirea se face analogic, doar prin funcția StreamReader() și ReadLine().

//citirea din fisier

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

{

StreamReader^ din = File::OpenText("Setari.txt");

textBox3->Text = din->ReadLine();

textBox6->Text = din->ReadLine();

…………

din->Close();

}

}

Ce ține de formarea componentelor mesajului vom prezenta mai jos doar câteva exemple, deoarece algoritmul este aceleași și acestea pot fi vizualizate în anexă.

De exemplu pentru stabilirea pașilor de la o poziție la alta folosim următorul cod:

//stabilim pasii necesari la deplasarea de la o pozitie la alta

int stepx, stepy, PasPoz_x, PasPoz_y, inel, nr_inel;

//inel,nrinel: numarul de fotografii pe inel/nr inele introduse de utilizator, tip intreg, pasii necesari pentru urma pozitie (int)

//stabilim pasii pentru prima axa

Int32::TryParse(textBox3->Text,stepx); // stepx,y: nr de pasi pe rotatie a fiecarui motor

Int32::TryParse(textBox13->Text,inel);

PasPoz_x=stepx*MP1/inel;

Step_x = PasPoz_x.ToString();

//adaugam zerorurile necesare pentru conformitatea mesajului

int j=Step_x->Length;

for (int i=j; i<4; i++) {Step_x=("0"+Step_x);}

//sfirsit adaug zerouri

//sfirsit pasi pentru prima axa

În exemplu de mai sus noi preluăm datele din câmpurile text. Datele sunt preluate în format șir de caractere, adică string, pentru efectuarea operațiilor asupra acestor mărimi, ele trebuie convertite în format întreg, ceea ce ne va permite să aplicăm formulele pentru calculul componentei mesajului de care avem nevoie. Pentru convertirea șirului de caractere în valoare întreagă ne folosim de operatorul Int32::TryParse(). Însă după efectuarea tuturor operațiilor e nevoie de convertit înapoi valoarea întreagă într-un șir pentru a face posibilă transmiterea mesajului după structura prezentată în subpunctele anterioare. Aici ne folosim de metoda .ToString() , ce ne permite procesul invers. Trebuie să ținem cont și de faptul că noi am rezervat diferite simboluri în cadrul structurii mesajului, pentru a menține această lungime, adăugăm zerouri până la valoarea necesară, în felul următor:

int j=Step_x->Length;

for (int i=j; i<4; i++) {Step_x=("0"+Step_x);}

Metoda Length permite de a primi mărimea cuvântului de cod (care deja e de tip string), și cu o funcție ciclică adăugăm dacă e necesar zerourile.

În cazul butoanelor bifate nu e nevoie de convertit datele din șir în întreg și invers, e suficient de le salvat deodată în ambele tipuri. De exemplu, avem situația următoare:

Fig.3.10. Folosirea micropasului

În acest caz codul pentru această componentă a mesajului va avea următoarea formă:

//aflam micropasul pentru ambele axe si le salvam atit ca tip string pentru trimitere cit si tip integer pentru calcul ulterior

if (radioButton5->Checked) {mp1 = "01"; MP1=1;} else if (radioButton6->Checked) {mp1 = "02"; MP1=2;} else if (radioButton7->Checked) {mp1 = "04"; MP1=4;} else if (radioButton8->Checked) {mp1 = "08"; MP1=8;} else if (radioButton13->Checked) {mp1 = "16"; MP1=16;}

if (radioButton14->Checked) {mp2 = "01"; MP2=1;} else if (radioButton12->Checked) {mp2 = "02"; MP2=2;} else if (radioButton11->Checked) {mp2 = "04"; MP2=4;} else

if (radioButton10->Checked) {mp2 = "08"; MP2=8;} else if (radioButton9->Checked) {mp2 = "16"; MP2=16;}

//sfirsit operatie cu micropas

Această operație se putea face și prin metoda switch/case. Adică se analizează care din RadioButton sunt active și în dependență de aceasta se aleg valorile necesare. Totae aceste butoane sunt grupate într-un GroupBox, ceea ce face imposibilă bifarea concomitentă a 2 sau mai multor (în cazul micropasului).

În cazul timpului de stabilizare sau a timpului dintre 2 fotografii consecutive e necesar ca datele să fie introduse în milisecunde, pentru aceasta după transformarea în tip întreg efectuăm operațiile necesare, cum e arătat în codul de mai jos:

//stabilim timpul de stabilizare

int timp_stabil;

Int32::TryParse(textBox8->Text,timp_stabil);

timp_stabil=timp_stabil*1000; //stabilim timpul in milisecunde

t_st = timp_stabil.ToString();

int temp2=t_st->Length;

for (int i=temp2; i<5; i++) {t_st=("0"+t_st);} //adaugam zerorurile daca e necesar

// sfirsit timp de stabilizare

La fel se procedează și cu celelalte valori specifice.

La crearea bazei de date a obiectivelor, am decis ca informația despre ele (foile de catalog) să se găsească în același directoriu cu aplicația, pentru a putea fi ușor apelate, și pentru a evita crearea unui fișier de resurse adițional. Apelul fiecărei imagini se face prin metoda ImageLocation. Și cu ajutorul unui sigur PictureBox putem reprezenta fiecare foaie de catalog în dependență de itemul ales. Codul pentru acest component și reprezentarea grafică este mai jos:

private: System::Void comboBox4_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {

switch (this->comboBox4->SelectedIndex)

{

case 0:

this->pictureBox1->ImageLocation = L"N1.jpg";

break;

case 1:

this->pictureBox1->ImageLocation = L"N2.jpg";

break;

case 2:

this->pictureBox1->ImageLocation = L"N3.jpg";

break;

case 3:

this->pictureBox1->ImageLocation = L"N4.jpg";

break;

case 4:

this->pictureBox1->ImageLocation = L"N5.jpg";

break;

case 5:

this->pictureBox1->ImageLocation = L"N6.jpg";

break;

………..

}

}

Fig.3.11 Prezentarea foilor de catalog în același PictureBox

Pentru formarea mesajului integral pentru transmitere se unesc toate componente parțiale obținute mai sus, în felul următor:

//formam mesajul ce trebuie expediat

String^buf=("$PR360"+","+dir_x+","+dir_y+","+mp1+","+mp2+","+delay_stepx+","+delay_stepy+","+Step_x+","+Step_y+","+Poz_x+","+Poz_y+","+astept+","+t_st+","+N_F+"*"+"\r\n");

this->textBox14->Text=(buf);

Comparăm acest mesaj cu structura mesajului obținută în subcapitolele anterioare:

Fig.3.12 Structura mesajului ce trebuie expediat

Aceste mesaj este expediat în port-ul serial, cu ajutorul metodei WriteLine(), cum e prezentat în codul de mai jos:

// inscrierea in COM

if(this->serialPort1->IsOpen)

{this->serialPort1->Write(buf); }

else this->textBox2->Text="Portul nu a fost deschis";

//sfirsit inscriere

Înscrierea se face doar dacă port-ul este deschis.

Mai sus am menționat că sistemul trebuie să ne retransmită mesajul primit pentru a fi comparat cu cel expediat, spre evitarea erorilor. Pentru aceasta e nevoie să citim din port-ul seria, cu ajutorul metodei ReadLine(), și să comparăm mesajul expediat cu cel primit. Aceasta se realizează cu ajutorul metodei Compare(string,string):

if(this->serialPort1->IsOpen){

// citirea curenta din portul serial

try{

mesaj=this->serialPort1->ReadLine();

String^ buf=textBox14->Text;

this->textBox15->Text=mesaj;

int f=String::Compare(mesaj,buf); //are loc compararea mesajelor

String^ ff=f.ToString();

this->textBox1->Text=(ff);

if (f== (0)) //verificam lipsa erorilor

{

this->serialPort1->Write("$START*"+"\r\n");

}

else MessageBox::Show ("Eroare la sincronizare!!!");}

catch(TimeoutException^){

this->textBox1->Text="TIMEOUT";

}

În caz că nu apar erori, atunci programul transmite mesajul $START*. Dar dacă apar erori, apare un mesaj de avertizare și utilizatorul are posibilitatea să reîncerce procesul de transmitere.

După finisarea captării imaginilor de către sistem, acesta trimite un mesaj spre utilizator, prin care îl informează că procedeul dat a fost finalizat cu succes, la fel cum e arătat în figura ce urmează:

Fig.3.13 Mesaj de confirmare a finalizării Panoramei

Un alt moment important este si limitare simbolurilor ce pot fi introduse de utilizator în fiecare câmp al setărilor. Astfel de fiecare dată utilizatorul este atenționat de caracterele și valorile admisibile pentru fiecare cîmp. Acest lucru este prezentat mai jos:

Fig.3.14 Avertizarea utilizatorului referitor la valorile admisibile

Codul sursă pentru această funcție este destul de simplu și se aplică la fiecare cîmp în parte:

private: System::Void textBox13_TextChanged(System::Object^ sender, System::EventArgs^ e)

{

int a;

Int32::TryParse(textBox13->Text,a);

if ((a>99) || (a<1)) {

MessageBox::Show("Numarul de fotografii trebuie sa fie 1 si 99");

}

}

3.5 Validarea aplicației

Validarea nu presupune altceva decât testarea arhitecturii obținute. De obicei se realizează parcurgând lista de cerințe și eventualele cerințe ulterioare și verificarea că arhitectura proiectată în etapa anterioară permite implementarea cerințelor. După introducerea tuturor datelor și tranmiterea datelor spre port-ul serial, sistemul a executat întocmai condițiile și la final a transmis mesajul de finalizare. Aceasta este prezentat în figura de mai jos:

Fig.3.15 Test reușit cu ajutorul soft-ului proiectat

Concluzii

În aceasta teză a fost proiectat soft-ul pentru calculator al unui dispozitiv de captare a imaginilor pentru realizare Panoramei. Aplicația conduce cu un sistem ce se deplasează pe 2 axe cu ajutorul motoarelor pas cu pas, ce oferă o precizie înaltă de poziționare. Motoarele sunt conduse cu drive-re ce suportă micropas, iar aplicația permite utilizarea acestuia pentru generarea mișcărilor line și cu o precizie de până la 0,14 grade pe ambele axe de deplasare. În funcție de parametrii introduși de utilizator, soft-ul calculează automat parametrii pentru transmiterea mesajului de comandă la sistem. Comunicare se face prin Bluetooth, aplicația trimițând mesajul în port-ul serial. Aplicația permite realizarea unui număr de până la 99 de fotografii pe poziție și până la 99 fotografii pe inel, ceea ce înseamnă că poate fi folosită cu succes și în cazul fotografiilor de tip gigapixel. Totodată utilizatorul definește timpul dorit de stabilizare pentru evitarea vibrațiilor. Pentru a facilitat și mai mult lucru su întreg sistemul, s-a introdus o bază de date a celor mai uzuale obiective ale aparatelor foto, în care se specifică caracteristicele acestora de bază și numărul necesar de fotografii pentru o panoramă.

La proiectarea arhitecturii soft-ului ne-am folosit în mare parte de diagramele UML, care ne-au simplificat în mare măsură proiectarea. După crearea diagramelor de stare și de cazuri utilizate, am creat cu ușurință interfața grafică de interacțiune cu utilizatorul și am definit codul sursă pentru fiecare componentă a interfeței. Pentru evitarea erorilor dintre mesajul transmis de PC și recepționat de sistem, s-a recurs la un mesaj de confirmare, care verifică veridicitatea acestuia. Un lucru extrem de util este posibilitatea salvării ultimelor setări făcute utilizator, ca rezultat acesta nu e obligat de fiecare dată să introducă parametrii standard ai sistemului. Soft-ul este compatibil cu aproape orice sistem de operare din familia Winodws.

În final, putem menționa că s-a crea un soft, extrem de util și simplu de utilizat, care realizează achiziția datelor, prelucrarea lor și transmiterea spre sistemul de poziționare, asigurând o precizie și o flexibilitate înaltă. Soft-ul este adaptabil la oricare al sistem mecanic, ceea ce-l face unic și cu multe plusuri față de prototipurile existente.

Bibliografie

1. Harald Woeste, ”Mastering Digital Panormaic Photography”, 160 pag., noiembrie 2009, Rocky Nook

2. Al Judge ”Understanding DSLR Lenses”, 78 pag, 2013, Subtle Visions Media

3. Пpoxopeнoк H.A. Пpoгpаммиpoваниe на C++ в Visual Studio® 2010 Express. –Sanct Petersburg, 2010. – 550 pag.

4. M.Tитoв. Pабoта c кoммyникациoнными пopтами (COM и LPT) в пpoгpаммаx для Win32. -23pag. În articol se descrie inițializarea portului COM, funcțiile pentru accesarea portului, și funcțiile WINAPI(ReadFile și WriteFile).

5. Бyч Г., Pамбo Д., Якoбcoн И. Язык UML. Pyкoвoдcтвo пoльзoватeля. –Moscova,2006.- DMK Press, 352 pag. Am cercetat diagramele UML

6. Peter Eeles ”The Process of Software Architecting”, 432 pag, 2009. Addison-Wesley Professional Edition

7. Cristina Mîndruță ”Proiectarea și analiza sistemelor software”, 712 pagini

http://inf.ucv.ro/~giurca/courses/CB3105/resources/Introducere%20in%20UML.pdf –introducere în limbajul UML

http://www.vrwave.com/panoramic-lens-database/ – baza de date a obictivelor pentru aparate tip DLSR

http://www.dpreview.com/articles/8924910586/the-gigapan-epic-pro – descrierea succinta a prototipului GigaPan Epic Pro

http://www.vrwave.com/panoramic-heads/ – baza de date a capurilor panormaice

http://www.ptgui.com/examples/ – soft-ul de creare a panoramelor

http://shop.nodalninja.com/nodal-ninja-3/ – analiza capului panormaic Nodal Ninja

http://www.ixbt.com/digimage/canoneos600d.shtml – analiza și testarea aparatelor de filmat.

http://www.t-phones.ru/cms.php?type=page&id=555 – avantajele și dezavantajele folosirii camerilor DSLR.

http://snimifilm.com/statyi/filip-blum-vybor-dslr-kamery-chto-kupit – compararea camerilor de luat vederi. Articolul este tradus în rusa și preluat de la Philip Bloom.

Bibliografie

1. Harald Woeste, ”Mastering Digital Panormaic Photography”, 160 pag., noiembrie 2009, Rocky Nook

2. Al Judge ”Understanding DSLR Lenses”, 78 pag, 2013, Subtle Visions Media

3. Пpoxopeнoк H.A. Пpoгpаммиpoваниe на C++ в Visual Studio® 2010 Express. –Sanct Petersburg, 2010. – 550 pag.

4. M.Tитoв. Pабoта c кoммyникациoнными пopтами (COM и LPT) в пpoгpаммаx для Win32. -23pag. În articol se descrie inițializarea portului COM, funcțiile pentru accesarea portului, și funcțiile WINAPI(ReadFile și WriteFile).

5. Бyч Г., Pамбo Д., Якoбcoн И. Язык UML. Pyкoвoдcтвo пoльзoватeля. –Moscova,2006.- DMK Press, 352 pag. Am cercetat diagramele UML

6. Peter Eeles ”The Process of Software Architecting”, 432 pag, 2009. Addison-Wesley Professional Edition

7. Cristina Mîndruță ”Proiectarea și analiza sistemelor software”, 712 pagini

http://inf.ucv.ro/~giurca/courses/CB3105/resources/Introducere%20in%20UML.pdf –introducere în limbajul UML

http://www.vrwave.com/panoramic-lens-database/ – baza de date a obictivelor pentru aparate tip DLSR

http://www.dpreview.com/articles/8924910586/the-gigapan-epic-pro – descrierea succinta a prototipului GigaPan Epic Pro

http://www.vrwave.com/panoramic-heads/ – baza de date a capurilor panormaice

http://www.ptgui.com/examples/ – soft-ul de creare a panoramelor

http://shop.nodalninja.com/nodal-ninja-3/ – analiza capului panormaic Nodal Ninja

http://www.ixbt.com/digimage/canoneos600d.shtml – analiza și testarea aparatelor de filmat.

http://www.t-phones.ru/cms.php?type=page&id=555 – avantajele și dezavantajele folosirii camerilor DSLR.

http://snimifilm.com/statyi/filip-blum-vybor-dslr-kamery-chto-kupit – compararea camerilor de luat vederi. Articolul este tradus în rusa și preluat de la Philip Bloom.

Similar Posts