Tests/src/Tests.jl

changeset 51
370931a692a1
parent 50
ef9d33ea4460
child 57
d3688b3c7c4e
equal deleted inserted replaced
50:ef9d33ea4460 51:370931a692a1
3 ################## 3 ##################
4 4
5 module Tests 5 module Tests
6 6
7 # Our exports 7 # Our exports
8 export test_denoise, default_params 8 export test_denoise,
9 test_deblur
9 10
10 # Dependencies 11 # Dependencies
11 using Printf 12 using Printf
12 using FileIO 13 using FileIO
13 using ColorTypes: Gray 14 using ColorTypes: Gray
18 19
19 using AlgTools.Util 20 using AlgTools.Util
20 using AlgTools.LinkedLists 21 using AlgTools.LinkedLists
21 using ImageTools.Denoise 22 using ImageTools.Denoise
22 using ImageTools.Visualise 23 using ImageTools.Visualise
24 using ImageTools.TVRecon
25 using ImageTools.ImFilter
23 26
24 # Parameters 27 # Parameters
25 const default_save_prefix="denoise_result_" 28 const default_save_prefix="result_"
26 29
27 const default_params = ( 30 const default_params = (
28 α = 1,
29 # PDPS
30 # τ₀ = 5,
31 # σ₀ = 0.99/5,
32 # FISTA
33 τ₀ = 0.9,
34 ρ = 0, 31 ρ = 0,
35 accel = true,
36 noise_level = 0.5, 32 noise_level = 0.5,
37 verbose_iter = 10, 33 verbose_iter = 10,
38 maxiter = 1000, 34 maxiter = 1000,
39 save_results = false, 35 save_results = false,
40 image_name = "lighthouse", 36 image_name = "lighthouse",
41 save_iterations = false 37 save_iterations = false
42 ) 38 )
43 39
44 ####################### 40 const denoise_params = (
45 # Main testing routine 41 α = 2,
46 ####################### 42 # FISTA
43 τ₀ = 0.9,
44 accel = true,
45 )
46
47 const deblur_params = (
48 α = 0.5,
49 # PDPS
50 τ₀ = 5,
51 σ₀ = 0.99/5,
52 accel = false,
53 )
54
55 function save_results(params, b, b_data, x)
56 if params.save_results
57 perffile = params.save_prefix * ".txt"
58 println("Saving " * perffile)
59 write_log(perffile, st.log, "# params = $(params)\n")
60 fn = (t, ext) -> "$(params.save_prefix)_$(t).$(ext)"
61 save(File(format"PNG", fn("true", "png")), grayimg(b))
62 save(File(format"PNG", fn("data", "png")), grayimg(b_data))
63 save(File(format"PNG", fn("reco", "png")), grayimg(x))
64 end
65 end
66
67 ###############
68 # Denoise test
69 ###############
47 70
48 function test_denoise(; 71 function test_denoise(;
49 visualise=true, 72 visualise=true,
50 save_prefix=default_save_prefix, 73 save_prefix=default_save_prefix,
51 kwargs...) 74 kwargs...)
52 75
53
54 # Parameters for this experiment 76 # Parameters for this experiment
55 params = default_params ⬿ kwargs 77 params = default_params ⬿ denoise_params ⬿ kwargs
56 params = params ⬿ (save_prefix = save_prefix * params.image_name,) 78 params = params ⬿ (save_prefix = save_prefix * "denoise_" * params.image_name,)
57 79
58 # Load image and add noise 80 # Load image and add noise
59 b = Float64.(Gray{Float64}.(TestImages.testimage(params.image_name))) 81 b = Float64.(Gray{Float64}.(TestImages.testimage(params.image_name)))
60 b_noisy = b .+ params.noise_level.*randn(size(b)...) 82 b_noisy = b .+ params.noise_level.*randn(size(b)...)
61 83
63 st, iterate = initialise_visualisation(visualise) 85 st, iterate = initialise_visualisation(visualise)
64 86
65 # Run algorithm 87 # Run algorithm
66 x, y, st = denoise_fista(b_noisy; iterate=iterate, params=params) 88 x, y, st = denoise_fista(b_noisy; iterate=iterate, params=params)
67 89
68 if params.save_results 90 save_results(params, b, b_noisy, x)
69 perffile = params.save_prefix * ".txt" 91
70 println("Saving " * perffile) 92 # Exit background visualiser
71 write_log(perffile, st.log, "# params = $(params)\n") 93 finalise_visualisation(st)
72 fn = (t, ext) -> "$(params.save_prefix)_$(t).$(ext)" 94 end
73 save(File(format"PNG", fn("true", "png")), grayimg(b)) 95
74 save(File(format"PNG", fn("data", "png")), grayimg(b_noisy)) 96 ##############
75 save(File(format"PNG", fn("reco", "png")), grayimg(x)) 97 # Deblur test
76 end 98 ##############
99
100 function test_deblur(;
101 visualise=true,
102 save_prefix=default_save_prefix,
103 kwargs...)
104
105 # Parameters for this experiment
106 params = default_params ⬿ deblur_params ⬿ kwargs
107 params = params ⬿ (save_prefix = save_prefix * "deblur_" * params.image_name,)
108
109 # Load image and add noise
110 b = Float64.(Gray{Float64}.(TestImages.testimage(params.image_name)))
111 op = FilterKernel(gaussian(2, [7,7]))
112 b_data = op(b .+ params.noise_level.*randn(size(b)...))
113
114 # Launch (background) visualiser
115 st, iterate = initialise_visualisation(visualise)
116
117 # Run algorithm
118 x, y, st = recon_pdps(b_data, op; xinit=zeros(size(b)...), iterate=iterate, params=params)
119
120 save_results(params, b, b_data, x)
77 121
78 # Exit background visualiser 122 # Exit background visualiser
79 finalise_visualisation(st) 123 finalise_visualisation(st)
80 end 124 end
81 125

mercurial