Tesi Robotica Algoritmi ed architetture per la risoluzione di... | Page 43

2.2. IMPLEMENTAZIONE DIFFERENTE DEL DOG, SIFT-DERIVED 2.2 43 Implementazione di erente del DoG, SIFTderived Secondo il disegno algoritmo originale di Lowe, molti passi sono stati seguite per valutare nel dettaglio le di coltà computazionali dietro una implementazione DOG per il dispositivi embedded. Diversi aspetti dei codici sorgenti DoG sono SIFT derivati, sono stati studiati e utilizzati come base per un’attuazione compatibile OpenCV. 2.2.1 Parameter and future sets Nelle seguenti valutazioni, è stato considerato un’implementazione separabile del filtraggio gaussiano, in quanto consente di ridurre la complessità asintotica ad O(n+m) anziché O(núm) rispetto ad una convoluzione pixel 2D non separabile. 1 6 11 16 21 // Foreach Octaves / Scales for (j=0; j < maxoctaves; j++) { for(i=0; i < (s+3); i++) { act_k = pow(k,(double)i); radius = act_k*sigma; msk_size = floor(6.0f*radius)+1; if ((msk_size % 2) == 0) msk_size++; qDebug() << "octave = " << j \ << "\tradius = " << radius \ << "\tmsksize = " << msk_size; //G(x,y,ksigma) gauss2 = cv::getGaussianKernel(msk_size,radius,CV_32F); // L(x,y,ksigma) cv::sepFilter2D(image,result2,0,gauss2,gauss2); image.create(result2.size(),result2.type()); //application for the next filter when filtered image result2.copyTo(image); sprintf(filename, "output_o%01d_s%01d.bmp", j, i); if (i > 0){ // DoG - difference of filtered images diff = result2-result; } else result.create(result2.size(), result2.type()); result2.copyTo(result);