MCPcopy Create free account
hub / github.com/SSARCandy/Coherent-Line-Drawing / main

Function main

src/cmd.cpp:28–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26}
27
28int main(int argc, char *argv[])
29{
30 std::string src_path, output_path;
31 int ETF_iter, CLD_iter, ETF_kernel;
32 float sigma_c, sigma_m, rho, tau;
33 bool generate_post_processed_images{false};
34
35 // clang-format off
36 boost::program_options::options_description description("Coherent-Line-Drawing Options");
37 description.add_options()
38 ("help,h", "Help message")
39 ("src,s", boost::program_options::value<std::string>(&src_path)->required(), "Source image path")
40 ("output,o", boost::program_options::value<std::string>(&output_path)->required(), "Output image path")
41 ("ETF_kernel", boost::program_options::value<int>(&ETF_kernel)->default_value(5), "ETF kernel size")
42 ("ETF_iter", boost::program_options::value<int>(&ETF_iter)->default_value(1), "Refining n times ETF")
43 ("CLD_iter", boost::program_options::value<int>(&CLD_iter)->default_value(1), "Iterate n times FDoG")
44 ("sigma_c", boost::program_options::value<float>(&sigma_c)->default_value(1.0), "Line width")
45 ("sigma_m", boost::program_options::value<float>(&sigma_m)->default_value(3.0), "Degree of coherence")
46 ("rho", boost::program_options::value<float>(&rho)->default_value(0.997), "Noise")
47 ("tau", boost::program_options::value<float>(&tau)->default_value(0.8), "Thresholding")
48 ("debug_img", boost::program_options::bool_switch(&generate_post_processed_images), "Generate post processed images (anti-alias, flowfield visualize)");
49 // clang-format on
50
51 try {
52 boost::program_options::variables_map vm;
53 boost::program_options::store(boost::program_options::parse_command_line(argc, argv, description), vm);
54
55 if (vm.count("help")) {
56 std::cout << description << std::endl;
57 return 0;
58 }
59 boost::program_options::notify(vm);
60 print_parameters(vm);
61 } catch (std::exception &e) {
62 std::cerr << e.what() << std::endl;
63 return 1;
64 }
65
66 CLD cld;
67 cld.sigma_c = sigma_c;
68 cld.sigma_m = sigma_m;
69 cld.tau = tau;
70 cld.rho = rho;
71 cld.readSrc(src_path);
72
73 // Performing ETF refinement
74 for (int i = 0; i < ETF_iter; ++i) {
75 cld.etf.refine_ETF(ETF_kernel);
76 }
77
78 // Generate coherent line drawing
79 cld.genCLD();
80
81 // Refining line drawing by iterative FDoG
82 for (int i = 0; i < CLD_iter; ++i) {
83 cld.combineImage();
84 cld.genCLD();
85 }

Callers

nothing calls this directly

Calls 8

print_parametersFunction · 0.85
visualizeETFFunction · 0.85
visualizeFlowfieldFunction · 0.85
antiAliasFunction · 0.85
readSrcMethod · 0.80
refine_ETFMethod · 0.80
genCLDMethod · 0.80
combineImageMethod · 0.80

Tested by

no test coverage detected