From: <bl...@us...> - 2009-06-25 15:12:11
|
Revision: 3965 http://hugin.svn.sourceforge.net/hugin/?rev=3965&view=rev Author: blimbo Date: 2009-06-25 15:11:55 +0000 (Thu, 25 Jun 2009) Log Message: ----------- Added annDeallocPts() so now seems to work ok without resizing image. Corner detection uses edge detect output Modified Paths: -------------- hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Globals.cpp hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Main.cpp hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/ProcessImage.cpp Modified: hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Globals.cpp =================================================================== --- hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Globals.cpp 2009-06-24 21:00:46 UTC (rev 3964) +++ hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Globals.cpp 2009-06-25 15:11:55 UTC (rev 3965) @@ -33,7 +33,7 @@ double length_threshold = 0.2; double min_line_length_squared; double scale = 2; -double tscale = 1; +double tscale = 1.45; unsigned int gap_limit = 3; unsigned int vertical_slices = 12; unsigned int horizontal_slices = 8; Modified: hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Main.cpp =================================================================== --- hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Main.cpp 2009-06-24 21:00:46 UTC (rev 3964) +++ hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/Main.cpp 2009-06-25 15:11:55 UTC (rev 3965) @@ -303,7 +303,7 @@ cout << " -o <path> Output path. Default output/" << endl; cout << " -s <float> Edge detector scale. Default 2" << endl; cout << " -t <float> Edge detector threshold. Default 8" << endl; - cout << " -b <float> Boundary tensor scale. Default 2" << endl; + cout << " -b <float> Boundary tensor scale. Default 1.45" << endl; cout << " -g <int> Gap in pixels permitted within a line. Default 3" << endl; cout << " -l <float> Minimum line length as a fraction of longest dimension. Default 0.2" << endl; cout << " -m <float> Sigma parameter for hourglass filter. Default 1.4" << endl; Modified: hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/ProcessImage.cpp =================================================================== --- hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/ProcessImage.cpp 2009-06-24 21:00:46 UTC (rev 3964) +++ hugin/branches/gsoc2009_lenscalibration/src/lens_calibrate/ProcessImage.cpp 2009-06-25 15:11:55 UTC (rev 3965) @@ -229,6 +229,7 @@ } } + //kdTree = new ANNkd_tree(dataPts,nPts,2); kdTree = new ANNkd_tree(dataPts,nPts,dim); kdTree->annkSearch(queryPt,k,nnIdx,dists,eps); @@ -254,8 +255,13 @@ previous_length = 0; rev = 1; }else{ - if(verbose) cout << "End of line reached." << endl; - cont = 0; + + // Erase it from coords so we don't see it again + coords.erase(coords.begin()+coords_index[nnIdx[0]]); + + + //if(verbose) cout << "End of line reached." << endl; + //cont = 0; } }else{ if(verbose) cout << "(" << queryPt[0] << "," << queryPt[1] << "," << queryPt[2] << ")\t(" << close_neighbors[nnIdx[0]]->x << "," << close_neighbors[nnIdx[0]]->y << ")" << "\t" << nnIdx[0] << "\t" << dists[0] << endl; @@ -305,11 +311,11 @@ if(verbose) cout << "No more pixels in this region." << endl; cont = 0; } - } - - annClose(); - } - + } + annDeallocPts(dataPts); + } + //annDeallocPt(queryPt); + annClose(); double length = line_length_squared(first_line_end_x, first_line_end_y,inliers[inliers.size()-1]->x,inliers[inliers.size()-1]->y); @@ -526,28 +532,16 @@ } } } + + + /* // Smooth with hourglass filter - //cout << "Applying hourglass filter..." << endl; - FVector2Image gradient(image.width(),image.height()); FVector3Image tensor(image.width(),image.height()), smoothedTensor(image.width(),image.height()); - gaussianGradient(srcImageRange(image), destImage(gradient), 1.0); - - /* - if (generate_images){ - - string output = path; - output.append("gaussiangradient.tif"); - exportImage(srcImageRange(gradient), ImageExportInfo(output.c_str()).setPixelType("UINT16")); - - } - */ - vectorToTensor(srcImageRange(gradient), destImage(tensor)); hourGlassFilter(srcImageRange(tensor), destImage(smoothedTensor), sigma, rho); - if (generate_images){ string output = path; @@ -561,9 +555,9 @@ output.append(ds.str()); output.append(format); cout << "Writing " << output << endl; - exportImage(srcImageRange(smoothedTensor), ImageExportInfo(output.c_str()).setPixelType("UINT8")); - + exportImage(srcImageRange(smoothedTensor), ImageExportInfo(output.c_str()).setPixelType("UINT8")); } + */ if (generate_images){ @@ -631,10 +625,30 @@ exportImage(srcImageRange(out), output.c_str()); } - // Slice image - //sub_image(out); + + // Get cornerness from edge detection output + // Create image of appropriate size for boundary tensor + FVector3Image boundarytensor(image.width(), image.height()); + + // Calculate the boundary tensor + cout << "Calculating boundary tensor..." << endl; + boundaryTensor(srcImageRange(out), destImage(boundarytensor), tscale); + + FImage boundarystrength(image.width(), image.height()), cornerness(image.width(), image.height()); + FVector2Image edgeness(image.width(), image.height()); + + tensorTrace(srcImageRange(boundarytensor), destImage(boundarystrength)); + tensorToEdgeCorner(srcImageRange(boundarytensor), destImage(edgeness), destImage(cornerness)); + + + + + + + + //nuke_corners(out, corners, file); - nuke_corners(out, corners, file); + nuke_corners(out, cornerness, file); extract_coords(out, edgeness, 1); } @@ -720,7 +734,7 @@ FVector3Image boundarytensor(nw, nh); // Calculate the boundary tensor - cout << "Calculating boundary tensor..." << endl; + //cout << "Calculating boundary tensor using original image..." << endl; boundaryTensor(srcImageRange(grey), destImage(boundarytensor), tscale); FImage boundarystrength(nw, nh), cornerness(nw, nh); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |