int main(int argc, char** argv){ GraphDiscription modelJets, bunchGraph, graphTemplate; ImageList *modelImages, *novelImages; JetMasks masks; Arguments args; srand(time(NULL)); processCommand(argc, argv, &args); /* build masks */ masks = readMasksFile(args.masksFile); modelImages = getImageNames(args.modelFile, NULL); novelImages = getImageNames(args.novelFile, NULL); graphTemplate = readGraphDiscription(makePath(args.graphDir,modelImages->filename)); /* extract model jets */ modelJets = extractModelJets(modelImages, args.imageDir, args.graphDir, masks); /* build jet bunch */ /* bunchGraph = buildBunchGraph(modelJets, args.distance, args.bunchSize); */ bunchGraph = modelJets; /* locate features in novel image */ locateNovelFeatures(novelImages, graphTemplate, bunchGraph, masks, args.imageDir, args.outputDir, args.dispEst); return 0; }
int main(int argc, char** argv){ Arguments args; ImageList *imagenames, *subject, *replicate; JetMasks masks; GraphDiscription gd; Image face; FaceGraph graph; int i; int imagenum = 0, numImage; processCommand(argc,argv, &args); masks = readMasksFile(args.masksFile); imagenames = getImageNames(args.imageFile, &numImage); for(subject = imagenames; subject != NULL; subject = subject->next_subject){ for(replicate = subject; replicate != NULL; replicate = replicate->next_replicate){ imagenum++; printf("Processing: %s (%5d of %5d) %5.2f%% \n" , replicate->filename, imagenum, numImage, imagenum*100.0/numImage); fflush(stdout); gd = readGraphDiscription(makePath(args.graphDir,replicate->filename)); face = readRawImage(makePath(args.imageDir,replicate->filename)); graph = makeFaceGraph(gd->numVert, gd->numVert+gd->numEdge); graph->params =masks->params; for( i = 0; i < gd->numVert; i++){ graph->jets[i] = extractJet(gd->verts[i].x,gd->verts[i].y,face,masks); } for( i = 0; i < gd->numEdge; i++){ double x = 0.5*(gd->verts[gd->edges[i].vert1].x + gd->verts[gd->edges[i].vert1].x); double y = 0.5*(gd->verts[gd->edges[i].vert1].y + gd->verts[gd->edges[i].vert1].y); graph->jets[ gd->numVert + i ] = extractJet(x,y,face,masks); } saveFaceGraph(makePath(args.outputDir,replicate->filename),graph); freeImage(face); freeGraphDiscription(gd); freeFaceGraph(graph); } } printf("\n"); return 0; }
void outputMasks(Arguments* args){ JetMasks masks; int y; MESSAGE("Creating gabor masks."); masks = readMasksFile(args->maskFile); MESSAGE("Saving Masks to files"); for(y = 0; y < masks->size; y++){ char outname[MAX_FILENAME_LENGTH]; sprintf(outname, "%s/mask%03d.pgm", args->outputDir,y); writePGMImage(masks->masks[y],outname,0); } }
void convertImages(Arguments* args){ FILE* list; JetMasks masks; int x, y,i,j; char imagename[MAX_FILENAME_LENGTH]; char filename[MAX_FILENAME_LENGTH]; MESSAGE("Creating gabor masks."); masks = readMasksFile(args->maskFile); if(args->saveMasks){ for(y = 0; y < masks->size; y++){ char outname[MAX_FILENAME_LENGTH]; sprintf(outname, "mask%03d.pgm",y); writePGMImage(masks->masks[y],outname,0); } } list = fopen(args->imageList,"r"); if(!list){ printf("Error opening file: %s\n", args->imageList); exit(1); } while(fscanf(list, "%s", imagename) == 1){ Image im; Image grid; sprintf(filename, "%s/%s", args->inputDir, imagename); im = readRawImage(filename); MESSAGE1ARG("Processing file: %s",filename); /* Find the number of points in the grid */ i = 0; for( x = args->gridStartX; x < im->width; x += args->gridSpaceX){ for( y = args->gridStartY; y < im->height; y+= args->gridSpaceY){ i++; } } grid = makeImage(i,masks->size,1); /* Compute convolutions */ i = 0; for( x = args->gridStartX; x < im->width; x += args->gridSpaceX){ for( y = args->gridStartY; y < im->height; y+= args->gridSpaceY){ for(j = 0; j < masks->size; j++){ if( i < grid->width ) IE(grid,i,j,0) = convolvePoint(x, y, 0, im, masks->masks[j]); } i++; } } sprintf(filename, "%s/%s", args->sfiDir, imagename); writeRawImage(grid,filename); freeImage(grid); freeImage(im); } fclose(list); }