Enhancing Panorama Creation: Algorithms and Parallelization Techniques
180 likes | 325 Vues
This paper explores the theoretical foundations and practical applications of panoramic image creation, focusing on algorithms and the optimization of memory allocation techniques using parallelization. It discusses methods for capturing panoramic images, the utilization of mathematical formulas for geometric corrections, and presents comparative results between different parallel processing approaches, specifically POSIX threads and OpenMP. Our findings indicate that POSIX provides superior performance due to efficient load balancing. The study contributes to enhanced methodologies for image processing in panoramic photography.
Enhancing Panorama Creation: Algorithms and Parallelization Techniques
E N D
Presentation Transcript
Realizarea Panoramelor George Pasatoiu Zafiu Andrei 343C1
Cuprins • Informatii generale panorame • Notiuni teoretice • Algoritmi folositi • Exemple • Concluzii • Intrebari
Informatii generale panorame • Panorama: • Imagine de dimensiuni mari , de obicei o priveliste din natura cu orizont larg , vazuta de departe • Termen format din 2 cuvinte grecesti (πᾶν "all" + ὅραμα "sight" ) • Notiunea a fost folosita prima oara de pictorul Robert Barker, pentru a-si descrie describe picturile panoramice aleEdinburghului.
Notiuni teoretice 1 • Imaginile panoramice se pot obtine : • folosind lentile de distanta focala foarte mica,eventual in conjunctie cu oglinzi • alta abordare - realizarea unui set de poze si alipirea lor ulterioara in vederea realizarii unei imagini mari
Notiuni teoretice 2 • Pasi de urmat : • Inlaturarea eventualelor aberatii geometrice • Identificarea modului in care fotografiile se potrivesc cel mai bine • Alipirea propriu-zisa a imaginilor
Complexitate 2 CalculCoefLatice AlocareMemLatice “FOR” principal Pas 1 Pas 2 ……………. Pas N_LOOPS Calcule Calcule ……………. Calcule
Paralelizare OPENMP1 • Rezultate Obtinute: • Abordare: • S-au paralelizatsectunile de alocarememorie date initiale • S-au folositoperatiipebiti in structurile de decizie
Paralelizare OPENMP2 #pragma omp parallel for shared (adjLoops,N_LOOPS,alr) private(i,j) for(i=0;i<N_LOOPS;i++) { alr = (int*)calloc(4, sizeof(int)); for(j=0;j<4;j++) alr[j] = 0; adjLoops[i] = alr; } #pragma omp parallel for shared(adjLoops,N_LOOPS) private(i) for(i=0;i<N_LOOPS;i++) { adjLoops[I][0] = 1; }
Paralelizare PTHREADS1 • Rezultate Obtinute: • Abordare: • S-a ales o variantasimpla de paralelizare (nu a fostnevoie de sincronizari) • S-au creatthreadurisi s-a alocatfiecaruia un numaregal de iteratii din totalul de N_LOOPS
Paralelizare PTHREADS2 void* algoritm(void *params) //functie executata de fiecare thread { struct parametri* p = (struct parametri*) params; for(i=p->start;i<=p->stop;i++) … calcule intensive… } for (i = 0; i < nrThreads; i++) //creare threaduri { param[i].start=i*N_LOOPS/nrThreads; if (i!=nrThreads-1) param[i].stop=(i+1)*N_LOOPS/nrThreads-1; else param[i].stop=N_LOOPS-1; pthread_create(&t[i], NULL, &algoritm, ¶m[i]); }
Performante1 • S-au obtinut rezultate mai bune fata de codul initial (solutia MPI nu s-a dovedit viabila) • Din cele 2 tabele se observa faptul ca threadurile POSIX obtin rezultate semnificativ mai bune decat threadurile OPENMP • Prin metoda de paralelizare cu POSIX s-a obtinut o imbunatatire de aproximativ 10% fata de varianta paralela cu OPENMP
Performante2 • Grafic Latice 5x5
Performante3 • Grafic Latice 6x5
Observatii • Rezultatele indica faptul ca timpul obtinut depinde si de compilatorul folosit (gcc e mai eficient decat SunCC) • Tentativele de a elimina/inlocui structurile de decizie din cadrul “for-ului” intensiv s-au dovedit a fi neviabile (inlocuirea cu o formula matematica consuma mai multe resurse) • Formula matematica substitut: p1m=p1m+(m-p1m)*(1/abs2(2*p1n+1))*(int)(1.5*p1n*p1n/(p1n*p1n+0.1)); p2n=p2n+(n-p2n)*(int)(abs2(p1n+1)/(abs2(p1n+1)-0.001)); p2m=p2m+(m-p2m)*(int)(abs2(p1n+1)/(abs2(p1n+1)-0.001)); p1n=p1n+(n-p1n)*(1/abs2(2*p1n+1))*(int)(1.5*p1n*p1n/(p1n*p1n+0.1));
Concluzii • Metoda POSIX s-a dovedit a fi cea mai eficienta deoarece exista o repartizare egala pentru fiecare thread (load balancing eficient) • Se mai pot incerca diverse variante de paralelizare cu OPENMP prin folosirea unor directive alternative (#pragma omp section, #pragma omp atomic)
BIBLIOGRAFIE • http://ku1k.sourceforge.net/index.html • http://people.unt.edu/ov0006/ • http://numod.ins.uni-bonn.de/people/vantzos/index.html • Investigation of the Evolution and Breakup of Electrically Charged Drops (S. I. Betel , M. A. Fontelos , U. Kindelán and O. Vantzos)
Multumim • Dimitris Skipis Orestis Vantzos