Home > src > main > matlab > s2let_curvelet_transform_test_px2cur_cur2px.m

s2let_curvelet_transform_test_px2cur_cur2px

PURPOSE ^

s2let_curvelet_transform_test_px2cur_cur2px

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 s2let_curvelet_transform_test_px2cur_cur2px

 Run curvelet analysis (pixel to curvelet space) and 
 synthesis (curvelet to pixel space)
 of randomly generated signals f and check exactness 

 Options consist of parameter type and value pairs.
 Valid options include:
  'B'               = { Dilation factor; B > 1 (default = 2) }
  'L'               = { Harmonic band-limit; L > 0 (default = Lguessed) }
  'J_min'           = { the minimal wavelet scale,(default = 0)}
  'Spin'            = { Spin number; Spin >= 0 (default = 0) }
  'Reality'         = { false   [do not assume corresponding signal f real (default)],
                        true    [assume f real (improves performance)] }
  'Upsample'        = { false   [multiresolution algorithm (default)],
                        true    [full resolution wavelets] },
 -----------------------------------------------------------
 S2LET package to perform Wavelet Transform on the Sphere.
 Copyright (C) 2012-2016  Boris Leistedt, Jennifer Chan & Jason McEwen
 See LICENSE.txt for license details
 -----------------------------------------------------------

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % s2let_curvelet_transform_test_px2cur_cur2px
0002 %
0003 % Run curvelet analysis (pixel to curvelet space) and
0004 % synthesis (curvelet to pixel space)
0005 % of randomly generated signals f and check exactness
0006 %
0007 % Options consist of parameter type and value pairs.
0008 % Valid options include:
0009 %  'B'               = { Dilation factor; B > 1 (default = 2) }
0010 %  'L'               = { Harmonic band-limit; L > 0 (default = Lguessed) }
0011 %  'J_min'           = { the minimal wavelet scale,(default = 0)}
0012 %  'Spin'            = { Spin number; Spin >= 0 (default = 0) }
0013 %  'Reality'         = { false   [do not assume corresponding signal f real (default)],
0014 %                        true    [assume f real (improves performance)] }
0015 %  'Upsample'        = { false   [multiresolution algorithm (default)],
0016 %                        true    [full resolution wavelets] },
0017 % -----------------------------------------------------------
0018 % S2LET package to perform Wavelet Transform on the Sphere.
0019 % Copyright (C) 2012-2016  Boris Leistedt, Jennifer Chan & Jason McEwen
0020 % See LICENSE.txt for license details
0021 % -----------------------------------------------------------
0022 
0023 clear all;
0024 close all;
0025 
0026 % Curvelet parameters
0027 Spin = 2;             % Spin value of curvelet
0028 L = 16;               % Angular band-limit
0029 B = 2;                % B = 2 for dyadic sampling
0030 J_min = 1;            % Minimum scale probed by curvelets
0031 J =s2let_jmax(L, B);  % Maximum scale probed by curvelets =ceil(log L/ log B);
0032 
0033 disp('Generates random band-limited function')
0034 flm_gen = zeros(L^2,1);
0035 flm_gen = rand(size(flm_gen)) + sqrt(-1)*rand(size(flm_gen));
0036 flm_gen = 2.*(flm_gen - (1+sqrt(-1))./2);
0037 disp('Construct the corresponding signal on the sphere')
0038 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0039 % f_spin_gen = ssht_inverse(flm_gen, L, 'Spin', Spin, 'Method', 'MW');
0040 flm_spin_gen= ssht_forward(f_gen, L, 'Spin', Spin, 'Method', 'MW');
0041 f_spin_gen = ssht_inverse(flm_spin_gen, L, 'Spin', Spin, 'Method', 'MW');
0042 disp('----------- '); 
0043 
0044 disp(' ');
0045 disp('Curvelet transform: full resolution (Upsample: true): ');
0046 % -----------------
0047 % Signal analysis: (pixel to curvelet space)
0048 % -----------------
0049 disp('Spin signal, Full resolution: analysis_px2cur ');
0050 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_spin_gen,...
0051                                                            'B', B, 'L', L, ...
0052                                                            'J_min', J_min,...
0053                                                            'Spin', Spin, ...
0054                                                            'Upsample', true);
0055 disp('Spin signal, Full resolution: synthesis_cur2px...')
0056 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0057                                                   'B', B, 'L', L, ...
0058                                                   'J_min', J_min,...
0059                                                   'Spin', Spin, ...
0060                                                   'Upsample', true);
0061 
0062 disp('- Test exact transform:');
0063 disp('Check the difference between f_gen and f_rec: ');
0064 maxerr = max(abs(f_spin_gen(:) - f_rec(:)))
0065 disp('----------- ');     
0066 
0067 % ================== MULTI-RESOLUTION ===================%
0068 disp('Curvelet transform: multi-resolution (Upsample: false): ');
0069 disp('Spin signal, Multi-resolution: analysis_px2cur...')
0070 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen,...
0071                                                     'B', B, 'L', L, ...
0072                                                     'J_min', J_min, ...
0073                                                     'Spin', Spin, ...
0074                                                     'Upsample', false);
0075                                                 
0076                                                 
0077 disp('Spin signal, Multi-resolution: synthesis_px2cur...')
0078 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0079                                                   'B', B, 'L', L, ...
0080                                                   'J_min', J_min,...
0081                                                   'Spin', Spin, ...
0082                                                   'Upsample', false);
0083 
0084 disp('- Test exact transform:');
0085 disp('Check the difference between f_gen and f_rec: ');
0086 maxerr = max(abs(f_spin_gen(:) - f_rec(:)))
0087 disp('----------- ');
0088 
0089 
0090 disp(' ')
0091 disp('=============================')
0092 disp('REAL Signals TEST')
0093 disp('=============================')
0094 % -------------------------
0095 disp('Constraint on flms to generate real signal')
0096 % -------------------------
0097 for el = 0:L-1
0098     ind = el*el + el + 1;
0099     flm_gen(ind,1) = real(flm_gen(ind,1));
0100     for m = 1:el
0101        ind_pm = el*el + el + m + 1;
0102        ind_nm = el*el + el - m + 1;
0103        flm_gen(ind_nm,1) = (-1)^m * conj(flm_gen(ind_pm,1));
0104     end
0105 end
0106 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0107 
0108 disp(' ');
0109 disp('Curvelet transform: full resolution (Upsample: true): ');
0110 % -----------------
0111 % Signal analysis: (pixel to curvelet space)
0112 % -----------------
0113 reality = true; 
0114 disp('Real signal, Full resolution: analysis_px2cur ');
0115 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen,...
0116                                                            'B', B, 'L', L, ...
0117                                                            'J_min', J_min,...
0118                                                            'Reality', reality, ... 
0119                                                            'Upsample', true);
0120 disp('Real signal, Full resolution: synthesis_cur2px...')
0121 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0122                                                   'B', B, 'L', L, ...
0123                                                   'J_min', J_min,...
0124                                                   'Reality', reality, ...
0125                                                   'Upsample', true);
0126 
0127 disp('- Test exact transform:');
0128 disp('Check the difference between f_gen and f_rec: ');
0129 maxerr = max(abs(f_gen(:) - f_rec(:)))
0130 disp('----------- ');     
0131 
0132 % ================== MULTI-RESOLUTION ===================%
0133 disp('Curvelet transform: multi-resolution (Upsample: false): ');
0134 disp('Real signal, Multi-resolution: analysis_px2cur...')
0135 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen,...
0136                                                     'B', B, 'L', L, ...
0137                                                     'J_min', J_min, ...
0138                                                     'Reality', reality, ...
0139                                                     'Upsample', false);
0140                                                 
0141                                                 
0142 disp('Real signal, Multi-resolution: synthesis_px2cur...')
0143 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0144                                                   'B', B, 'L', L, ...
0145                                                   'J_min', J_min,...
0146                                                   'Reality', reality, ...
0147                                                   'Upsample', false);
0148 
0149 disp('- Test exact transform:');
0150 disp('Check the difference between f_gen and f_rec: ');
0151 maxerr = max(abs(f_gen(:) - f_rec(:)))
0152

Generated on Fri 11-Nov-2016 11:50:36 by m2html © 2005