Tests/src/Tests.jl

changeset 50
ef9d33ea4460
parent 43
492a57594b88
child 51
370931a692a1
equal deleted inserted replaced
49:dd6f2e26897a 50:ef9d33ea4460
1 ##################
2 # Denoise testing
3 ##################
4
5 module Tests
6
7 # Our exports
8 export test_denoise, default_params
9
10 # Dependencies
11 using Printf
12 using FileIO
13 using ColorTypes: Gray
14 # ColorVectorSpace is only needed to ensure that conversions
15 # between different ColorTypes are defined.
16 import ColorVectorSpace
17 import TestImages
18
19 using AlgTools.Util
20 using AlgTools.LinkedLists
21 using ImageTools.Denoise
22 using ImageTools.Visualise
23
24 # Parameters
25 const default_save_prefix="denoise_result_"
26
27 const default_params = (
28 α = 1,
29 # PDPS
30 # τ₀ = 5,
31 # σ₀ = 0.99/5,
32 # FISTA
33 τ₀ = 0.9,
34 ρ = 0,
35 accel = true,
36 noise_level = 0.5,
37 verbose_iter = 10,
38 maxiter = 1000,
39 save_results = false,
40 image_name = "lighthouse",
41 save_iterations = false
42 )
43
44 #######################
45 # Main testing routine
46 #######################
47
48 function test_denoise(;
49 visualise=true,
50 save_prefix=default_save_prefix,
51 kwargs...)
52
53
54 # Parameters for this experiment
55 params = default_params ⬿ kwargs
56 params = params ⬿ (save_prefix = save_prefix * params.image_name,)
57
58 # Load image and add noise
59 b = Float64.(Gray{Float64}.(TestImages.testimage(params.image_name)))
60 b_noisy = b .+ params.noise_level.*randn(size(b)...)
61
62 # Launch (background) visualiser
63 st, iterate = initialise_visualisation(visualise)
64
65 # Run algorithm
66 x, y, st = denoise_fista(b_noisy; iterate=iterate, params=params)
67
68 if params.save_results
69 perffile = params.save_prefix * ".txt"
70 println("Saving " * perffile)
71 write_log(perffile, st.log, "# params = $(params)\n")
72 fn = (t, ext) -> "$(params.save_prefix)_$(t).$(ext)"
73 save(File(format"PNG", fn("true", "png")), grayimg(b))
74 save(File(format"PNG", fn("data", "png")), grayimg(b_noisy))
75 save(File(format"PNG", fn("reco", "png")), grayimg(x))
76 end
77
78 # Exit background visualiser
79 finalise_visualisation(st)
80 end
81
82 end

mercurial