/// parses command line arguments void parse_args(int argc, char** argv) { try { TCLAP::CmdLine cmd("view", ' ', "0.0"); TCLAP::ValueArg<int> resolutionArg("r","resolution","Image resolution",false,512,"resolution",cmd); TCLAP::ValueArg<int> samplesArg("s","samples","Image samples",false,4,"samples",cmd); TCLAP::SwitchArg hudArg("j","hud","HUD",cmd); TCLAP::SwitchArg screenshotAndExitArg("i","screenshotAndExit","Screenshot and exit",cmd); TCLAP::ValueArg<float> timeArg("t","time","Time advance (delays screenshot and exit)",false,0,"seconds",cmd); TCLAP::UnlabeledValueArg<string> filenameScene("scene","Scene filename",true,"","scene",cmd); TCLAP::UnlabeledValueArg<string> filenameImage("image","Image filename",false,"","image",cmd); cmd.parse( argc, argv ); if(resolutionArg.isSet()) draw_opts.res = resolutionArg.getValue(); if(samplesArg.isSet()) draw_opts.samples = samplesArg.getValue(); if(hudArg.isSet()) hud = not hudArg.getValue(); if(screenshotAndExitArg.isSet()) screenshotAndExit = screenshotAndExitArg.getValue(); if(timeArg.isSet()) time_init_advance = timeArg.getValue(); filename_scene = filenameScene.getValue(); if(filenameImage.isSet()) filename_image = filenameImage.getValue(); else { filename_image = filename_scene.substr(0,filename_scene.length()-4)+"png"; } } catch (TCLAP::ArgException &e) { std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl; } }
/// parse command line arguments void parse_args(int argc, char** argv) { try { TCLAP::CmdLine cmd("trace", ' ', "0.0"); TCLAP::ValueArg<int> resolutionArg("r","resolution","Image resolution",false,0,"int",cmd); TCLAP::ValueArg<int> samplesArg("s","samples","Pixel samples",false,0,"int",cmd); TCLAP::SwitchArg progressiveArg("P","progressive","Progressive Rendering",cmd); TCLAP::SwitchArg distributionArg("d","distribution_raytrace","Distribution Raytracing",cmd); TCLAP::SwitchArg pathtraceArg("p","pathtrace","Pathtracing",cmd); TCLAP::UnlabeledValueArg<string> filenameScene("scene","Scene filename",true,"","filename",cmd); TCLAP::UnlabeledValueArg<string> filenameImage("image","Image filename",false,"","filename",cmd); cmd.parse( argc, argv ); if(pathtraceArg.isSet()) pathtrace = pathtraceArg.getValue(); if(distributionArg.isSet()) distribution = distributionArg.getValue(); if(resolutionArg.isSet()) resolution = resolutionArg.getValue(); if(samplesArg.isSet()) samples = samplesArg.getValue(); if(progressiveArg.isSet()) progressive = progressiveArg.getValue(); filename_scene = filenameScene.getValue(); if(filenameImage.isSet()) filename_image = filenameImage.getValue(); else { filename_image = filename_scene.substr(0,filename_scene.length()-4)+"png"; } } catch (TCLAP::ArgException &e) { std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl; } }
int main(int argc, char *argv[]) { std::string filenameImage("small.png"); double errorThreshold = 10.; int channel = 0; double gamma = 1.0; std::string histogramsTraining("training/training.dat"); std::string outputPath(""); // initialize LPIP detector LPIPDetector detector(filenameImage, channel, errorThreshold, 3, gamma); std::cout << "Detecting LISOs in the image..." << std::endl; detector.detect(outputPath); std::vector<LISO> lisoSet = detector.getLisoSet(); // save LISO map cv::Mat1f lisoMap = detector.getLisoMap(); std::stringstream path1; path1 << outputPath << "liso_map.png"; std::cout << "Save LISO map to " << path1.str() << std::endl; imwrite(path1.str(), lisoMap*255); // compute features and save histograms as images Trainer trainer; trainer.computeFeatures(lisoSet, lisoMap); std::cout << "Computing RQ Histogram..." << std::endl; Classifier classifier(histogramsTraining); classifier.createHistRQ(100, 50, lisoSet, false, "RQ_histogram"); classifier.createHistRQ(100, 50, lisoSet, true, "RQ_histogram_weighted"); return 0; }