diff --git a/.gitignore b/.gitignore index ece9ca4..f906023 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ .vscode/ /data/saved_models/ - +/data/real_test/real1_31_bak/ /data/stripes/ /data/results/ /data/squares/ diff --git a/data/real_test/real1_31/26.XSM/00000001.jpg b/data/real_test/real1_31/26.XSM/00000001.jpg index 0bf9faa..0a42ecc 100644 Binary files a/data/real_test/real1_31/26.XSM/00000001.jpg and b/data/real_test/real1_31/26.XSM/00000001.jpg differ diff --git a/include/stripes_solver.h b/include/stripes_solver.h index b159e24..ffdd7a6 100644 --- a/include/stripes_solver.h +++ b/include/stripes_solver.h @@ -39,6 +39,7 @@ class StripesSolver { GCOM, GREEDY_GCOM, GT, + USER, }; const string puzzle_folder; diff --git a/src/solver/stripes_solver.cpp b/src/solver/stripes_solver.cpp index 5662a7f..7a329f5 100644 --- a/src/solver/stripes_solver.cpp +++ b/src/solver/stripes_solver.cpp @@ -97,8 +97,10 @@ bool StripesSolver::reassemble( Metric _metric_mode, m_metric(); vector< vector > fragments; + vector sol_x; switch (composition_mode) { + // 0 case Composition::GREEDY: cout << "[INFO] Composition: Greedy." << endl; @@ -116,18 +118,20 @@ bool StripesSolver::reassemble( Metric _metric_mode, save_result(case_name, benchmark_flag); break; - + + // 1 case Composition::GCOM: cout << "[INFO] Composition: GCOM." << endl; reassemble_GCOM(); - - composition_img = compose_img(composition_order); - composition_img_seams = add_seams(composition_img, composition_order); + + composition_img = compose_img(composition_order, real_flag, &sol_x); + composition_img_seams = add_seams(composition_img, composition_order, true, &sol_x); save_result(case_name, benchmark_flag); break; + // 2 case Composition::GREEDY_GCOM: // Greedy part @@ -154,16 +158,27 @@ bool StripesSolver::reassemble( Metric _metric_mode, composition_mode = Composition::GCOM; reassemble_GCOM(); - composition_img = compose_img(composition_order); - composition_img_seams = add_seams(composition_img, composition_order); + composition_img = compose_img(composition_order, real_flag, &sol_x); + composition_img_seams = add_seams(composition_img, composition_order, true, &sol_x); save_result(case_name, benchmark_flag); break; + // 3 case Composition::GT: - composition_img = compose_img(gt_order); - composition_img_seams = add_seams(composition_img, gt_order); + composition_img = compose_img(gt_order, real_flag, &sol_x); + composition_img_seams = add_seams(composition_img, gt_order, false, &sol_x); + save_result(case_name, false); + break; + + // 4 + case Composition::USER: + // composition_order = vector({19,21,24,26,11,14,2,6,8,1,22,23,15,12,4,17,10,13,16,9,0,7,25,18,3,5}); + composition_order = vector({8,0,5,7,9,10,26,6,17,11,14,15,16,12,18,13,3,19,20,1,23,22,21,24,4,2,25}); + + composition_img = compose_img(composition_order, true, &sol_x); + composition_img_seams = add_seams(composition_img, composition_order, false, &sol_x); save_result(case_name, false); break; @@ -182,6 +197,7 @@ cv::Mat StripesSolver::compose_img( const vector & composition_order, cv::Mat composition_img; int x0, x1; for (int i = 0; i < composition_order.size(); i++) { + cout << composition_order[i] << endl; composition_img = merge_imgs(composition_img, stripes[composition_order[i]], shift_flag, &x0, &x1); if (shift_flag) sol_x->push_back(x0); } diff --git a/src/utils.cpp b/src/utils.cpp index b59415d..bddde96 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -81,8 +81,8 @@ cv::Mat merge_imgs( const cv::Mat & in_img0, if (shift_flag) { int shift_x0 = 0; int shift_x1 = 0; - int block_h = in_img1.cols; - int detected_w = in_img1.cols * 0.6; + int block_h = in_img1.cols * 3; + int detected_w = in_img1.cols * 0.8; int block_cnt = 0; int out_width = 0;