test/denoise.jl

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

mercurial