|
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
|
Model of a 2½D cross-section of a pipe2½D models of a cylidrical cross section areUsing netgen, we simulate a cylindrical pipe with one row of 12 electrodes.
% Create pipe model $Id: pipe01.m 2195 2010-06-19 08:49:47Z aadler $
n_elec = 12;
stim= mk_stim_patterns( n_elec, 1, [0,3],[0,1],{},1);
fmdl= ng_mk_cyl_models(4,[n_elec,2],[0.2,0.5,0.04]);
fmdl.stimulation = stim;
clf; subplot(121);
show_fem(fmdl)
print_convert('pipe01a.png','-density 100')
show_fem(fmdl); view([0,0]);
print_convert('pipe01b.png','-density 90')
Figure: Netgen model of a pipe with a row of electrodes around the centre from two view points. Simulate an elliptical fluid moves in the pipeWe simulate a small elliptic object in the pipe, just below the electrode plane.
% Create pipe model $Id: pipe02.m 3266 2012-06-30 16:01:06Z aadler $
el= 'ellipsoid(0.3,0.2,1.5; 0,0,0.25; 0.1,0,0; 0,0.1,0)';
extra={'obj',['solid obj = ',el,';']};
fmdl= ng_mk_cyl_models(4,[n_elec,2],[0.2,0.5,0.04], extra);
fmdl.stimulation = stim;
img= mk_image(fmdl, 1);
vh = fwd_solve( img );
img.elem_data(fmdl.mat_idx{2}) = 2;
vi = fwd_solve( img );
clf; subplot(121);
show_fem(img); view([0,0]);
print_convert('pipe02a.png','-density 100')
clf; plot( [vh.meas, 100*(vi.meas - vh.meas)] )
print_convert('pipe02b.png','-density 75')
Figure: Left: elliptic conductive object in pipe Right: homogeneous and difference voltages due to object Create reconstruction modelIn order to reconstruct the image, we use a dual model where the 2D coarse model is mapped to only a layer of elements in the fine model.First, we create a coarse model which represents the entire depth in z (ie. like the 2½D model).
% Create coarse model
imdl= mk_common_model('b2c2',16);
cmdl= imdl.fwd_model;
scl = 1;
cmdl.mk_coarse_fine_mapping.f2c_offset = [0,0,1];
cmdl.mk_coarse_fine_mapping.f2c_project = (1/scl)*speye(3);
cmdl.mk_coarse_fine_mapping.z_depth = inf;
c2f= mk_coarse_fine_mapping( fmdl, cmdl);
% Create reconstruction model
imdl.rec_model= cmdl;
imdl.fwd_model= fmdl;
imdl.fwd_model.coarse2fine = c2f;
imdl.RtR_prior = @prior_gaussian_HPF;
imdl.solve = @inv_solve_diff_GN_one_step;
imdl.hyperparameter.value= .01;
imgc= inv_solve(imdl, vh, vi);
show_fem(imgc);
print_convert pipe03a.png '-density 75';
Figure: cmdl.mk_coarse_fine_mapping.z_depth = 0.1; c2f= mk_coarse_fine_mapping( fmdl, cmdl); % modify imdl.fwd_model.coarse2fine = c2f; imdl.hyperparameter.value = .01; imgc= inv_solve(imdl, vh, vi); imgc.calc_colours.ref_level= 0; show_fem(imgc); print_convert pipe04a.png '-density 75';
Figure: |
Last Modified: $Date: 2017-02-28 13:12:08 -0500 (Tue, 28 Feb 2017) $ by $Author: aadler $