/******************************** Author: Sravanthi Kota Venkata ********************************/ #include #include #include "sift.h" #include #include "extra.h" #define SIFT_MEM 1<<29 void normalizeImage(F2D* image) { int i; int rows; int cols; int tempMin = 10000, tempMax = -1; rows = image->height; cols = image->width; for(i=0; i<(rows*cols); i++) if(tempMin > asubsref(image,i)) tempMin = asubsref(image,i); for(i=0; i<(rows*cols); i++) asubsref(image,i) = asubsref(image,i) - tempMin; for(i=0; i<(rows*cols); i++) if(tempMax < asubsref(image,i)) tempMax = asubsref(image,i); for(i=0; i<(rows*cols); i++) asubsref(image,i) = ( asubsref(image,i) / (tempMax+0.0) ); } int main(int argc, char* argv[]) { SET_UP mallopt(M_TOP_PAD, SIFT_MEM); mallopt(M_MMAP_MAX, 0); I2D* im; F2D *image; int rows, cols, i, j; F2D* frames; unsigned int* startTime, *endTime, *elapsed; char imSrc[100]; printf("Input image: "); scanf("%s", imSrc); im = readImage(imSrc); image = fiDeepCopy(im); rows = image->height; cols = image->width; printf("start\n"); for_each_job{ image = fiDeepCopy(im); normalizeImage(image); /** Extract sift features for the normalized image **/ frames = sift(image); } printf("end..\n"); #ifdef CHECK { int ret=0; float tol = 0.2; #ifdef GENERATE_OUTPUT fWriteMatrix(frames, argv[1]); #endif ret = fSelfCheck(frames, "expected_C.txt", tol); if (ret == -1) printf("Error in SIFT\n"); } #endif iFreeHandle(im); fFreeHandle(frames); WRITE_TO_FILE return 0; }