EIDORS: Electrical Impedance Tomography and Diffuse Optical Tomography Reconstruction Software |
EIDORS
(mirror) Main Documentation Tutorials − Image Reconst − Data Structures − Applications − FEM Modelling − GREIT − Old tutorials − Workshop Download Contrib Data GREIT Browse Docs Browse SVN News Mailing list (archive) FAQ Developer
|
Compare 3D image reconstructionsEIDORS is able to easily compare different image reconstruction algorithms by changing the parameters of the inv_model structure.The first step is to create a simulation model % Compare 3D algorithms % $Id: tutorial130a.m 4051 2013-05-24 09:27:02Z bgrychtol $ imb= mk_common_model('n3r2',[16 2]); bkgnd= 1; % Homogenous Data img= mk_image(imb.fwd_model, bkgnd); vh= fwd_solve( img ); % Inhomogenous Data - Load from file 'datacom' load datacom A B; img.elem_data(A)= bkgnd*1.2; img.elem_data(B)= bkgnd*0.8; clear A B; vi= fwd_solve( img ); % Add 15dB noise vi_n= vi; vi_n.meas = vi.meas + std(vi.meas - vh.meas)/10^(10/20) ... *randn(size(vi.meas)); sig= sqrt(norm(vi.meas - vh.meas)); subplot(121); show_fem(img); axis square; subplot(122); show_fem(img); axis square; crop_model([], inline('y<0','x','y','z')) view(-51,14); print_convert('tutorial130a.png', '-density 100') Figure: Simulation image for sample data (two different views) % Compare 3D algorithms % $Id: tutorial130b.m 4839 2015-03-30 07:44:50Z aadler $ clear imgr imgn % Create Inverse Model inv3d= eidors_obj('inv_model', 'EIT inverse'); inv3d.reconst_type= 'difference'; inv3d.jacobian_bkgnd.value = 1; inv3d.fwd_model= imb.fwd_model; inv3d.hyperparameter.value = 0.03; % Gauss-Newton Solver inv3d.solve= @inv_solve_diff_GN_one_step; % Tikhonov prior inv3d.R_prior= @prior_tikhonov; imgr(1)= inv_solve( inv3d, vh, vi); imgn(1)= inv_solve( inv3d, vh, vi_n); % Laplace prior inv3d.R_prior= @prior_laplace; % inv3d.np_calc_image_prior.parameters= [3 1]; % deg=1, w=1 imgr(2)= inv_solve( inv3d, vh, vi); imgn(2)= inv_solve( inv3d, vh, vi_n); % Andrea Borsic's PDIPM TV solver inv3d.prior_TV.alpha2 = 1e-5; inv3d.parameters.max_iterations= 20; inv3d.parameters.term_tolerance= 1e-3; inv3d.R_prior= @prior_TV; inv3d.solve= @inv_solve_TV_pdipm; imgr(3)= inv_solve( inv3d, vh, vi); imgn(3)= inv_solve( inv3d, vh, vi_n); % Output image posn= [inf,inf,2.5,1,1;inf,inf,1.5,1,2;inf,inf,0.5,1,3]; clf; imgr(1).calc_colours.npoints= 128; show_slices(imgr, posn); print_convert('tutorial130b.png', '-density 100') imgn(1).calc_colours.npoints= 128; show_slices(imgn, posn); print_convert('tutorial130c.png', '-density 100') Figure: Images reconstructed with data without noise. Slices are shown at heights of (top to bottom): 1) 2.5, 2) 1.5, 3) 0.5. From Left to Right: 1) One step Gauss-Newton reconstruction (Tikhonov prior) 2) One step Gauss-Newton reconstruction (Laplace filter prior) 3): Total Variation reconstruction Figure: Images reconstructed with data with 15dB SNR. Slices are shown at heights of (top to bottom): 1) 2.5, 2) 1.5, 3) 0.5. From Left to Right: 1) One step Gauss-Newton reconstruction (Tikhonov prior) 2) One step Gauss-Newton reconstruction (Laplace filter prior) 3): Total Variation reconstruction |
Last Modified: $Date: 2017-03-01 08:44:21 -0500 (Wed, 01 Mar 2017) $