From b85e4a9478fcedd5d8e811d1acc8600b41436b6b Mon Sep 17 00:00:00 2001
From: Stephan Hilb <stephan@ecshi.net>
Date: Mon, 20 Jun 2022 22:30:16 +0200
Subject: [PATCH] use nodal interpolation for optflow on image mesh

---
 scripts/run.jl             | 24 +++++++++++-------------
 scripts/run_experiments.jl | 14 +++++++++++++-
 2 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/scripts/run.jl b/scripts/run.jl
index a134133..cc850ed 100644
--- a/scripts/run.jl
+++ b/scripts/run.jl
@@ -19,29 +19,27 @@ ctx(experiment_convergence_rate, "fem/convergence/rate")
 # pd est, L1-TV, bad
 
 
-# applications
+# misc experiments
 
-# denoising
-ctx(experiment_denoise, "fem/denoise")
-# inpainting
+# inpainting (OLD)
 ctx(experiment_inpaint, "fem/inpaint")
 # adaptive optical flow
 ctx(experiment_optflow_middlebury_all, "fem/optflow/middlebury")
 
-# additional experiments for paper
-
-# combined inpainting + denoising with mixed noise
-ctx(experiment_inpaint_denoise, "fem/optflow/inpaint_denoise")
-
-# comparison: warping and adaptivity
-ctx(experiment_optflow_middlebury_warping_comparison, "fem/optflow/middlebury_warping_comparison")
-
 function paper1(ctx)
     # newton vs other algs
     ctx(experiment_convergence_rate, "fem/convergence/rate")
     # denoising
     ctx(experiment_denoise, "fem/denoise")
     # combined inpainting + denoising with mixed noise
-    ctx(experiment_inpaint_denoise, "fem/optflow/inpaint_denoise")
+    ctx(experiment_inpaint_denoise, "fem/inpaint_denoise")
+
+    # comparison: warping and adaptivity
+    ctx(experiment_optflow_middlebury_warping_comparison, "fem/opticalflow/middlebury_warping_comparison")
+end
 
+function paper2(ctx)
+    # comparison: warping and adaptivity
+    # TODO: adaptivity parameter?
+    ctx(experiment_optflow_middlebury_warping_comparison, "fem/opticalflow/middlebury_warping_comparison")
 end
diff --git a/scripts/run_experiments.jl b/scripts/run_experiments.jl
index 2117e46..979cf0d 100644
--- a/scripts/run_experiments.jl
+++ b/scripts/run_experiments.jl
@@ -1501,7 +1501,12 @@ function optflow(ctx)
     size(ctx.params.imgf0) == size(ctx.params.imgf1) ||
 	throw(ArgumentError("non-matching image sizes"))
 
-    project_image! = project_l2_lagrange!
+    #project_image! = project_l2_lagrange!
+    project_image!(f, img) =
+        ctx.params.n_refine == 0 ?
+            interpolate!(f, x -> evaluate_bilinear(img, x)) : # fine mesh
+            project_l2_lagrange! # coarse adaptive mesh
+
     eps_newton = 1e-3 # cauchy criterion for inner newton loop
     eps_warp = 0.05
 
@@ -1678,6 +1683,13 @@ function experiment_optflow_middlebury_warping_comparison(ctx)
         warp = false, refine = false, n_refine = 0)
     ctx(experiment_optflow_middlebury_all_benchmarks, "warping";
         warp = true, refine = false, n_refine = 0)
+end
+
+function experiment_optflow_middlebury_warping_comparison_adaptive(ctx)
+    ctx(experiment_optflow_middlebury_all_benchmarks, "vanilla";
+        warp = false, refine = false, n_refine = 0)
+    ctx(experiment_optflow_middlebury_all_benchmarks, "warping";
+        warp = true, refine = false, n_refine = 0)
     ctx(experiment_optflow_middlebury_all_benchmarks, "adaptive-warping";
         warp = true, refine = true, n_refine = 6)
 end
-- 
GitLab