Eidors-logo    

EIDORS: Electrical Impedance Tomography and Diffuse Optical Tomography Reconstruction Software

EIDORS (mirror)
Main
Documentation
Examples
Tutorials
− Image Reconst
− Data Structures
− Application Examples
− FEM Modelling
Download
Contrib Data
GREIT
Browse SVN

News
FAQ
Developer
                       

 

Hosted by SourceForge.net Logo

 

Electrode movement reconstruction for simulated 2D data

Here we create a simple 2D model and change the boundary shape between two measurments.

% Generate simulation data without noise and standard reconstruction
% Create circular FEM - creates a eidors_mdl type inv_model.
mdlc = mk_common_model('c2c');

% Instantiate a homogeneous forward model.
% ref_level is 1 since we use ones( ).
sigma = ones( size(mdlc.fwd_model.elems,1) ,1);
% Create the eidors_obj of type image.
f_img = eidors_obj('image', 'homogeneous image', ...
    'elem_data', sigma, ...
    'fwd_model', mdlc.fwd_model,...
    'ref_level', 1);
% Solve homogeneous forward problem
vh = fwd_solve( f_img );

% Hard coded values here represent local inhomogeneities
sigma([75,93,94,113,114,136]) = 1.2;
sigma([105,125,126,149,150,174]) = 0.8;
f_img.elem_data = sigma;

% Simulate node movements - shrink x, stretch y by 1% of model diameter
% node0 before, node1 after movement
movement = [1-0.01 0; 0 1+0.01];
node0 = f_img.fwd_model.nodes;
node1 = node0*movement;
f_img.fwd_model.nodes = node1;
% Set eidors background colour
f_img.calc_colours.backgnd= [.9,.9,.9];

% Solve inhomogeneous forward problem with movements and normal noise
% 1% of standard deviation of signal
vi = fwd_solve( f_img );
noise = 0*std( vh.meas - vi.meas )*randn( size(vi.meas) );
vi.meas = vi.meas + noise;
move = node1 - node0;

% Plot FEM with conductivities and movement vectors.
show_fem_move( f_img, move, 20 );
print -r75 -dpng move_2d01.png


Figure: Forward solution of a 2D model where the boundary was changed between measurements. The arrows show how the electrodes were displaced (scaled 20x).
Next we solve the inverse problem in two ways: first, without correcting for electrode movements, and second, with movement correction.
% Generate eidors planar finite element model
mdl2dim = mk_common_model('b2c');
% Set eidors_obj hyperparameter member.
mdl2dim.hyperparameter.value= 0.01;

clim= .088;

% Solve inverse problem for mdl2dim eidors_obj model.
img2dim = inv_solve(mdl2dim, vh, vi);
img2dim.calc_colours.clim= clim;
img2dim.calc_colours.backgnd= [.9,.9,.9];

% Plot results for each algorithm
subplot(1,2,1);
show_fem_move(img2dim);
calc_colours(img2dim,[],1); % do colourbar

% Set eidors_obj hyperparameter member.
mdlM = mdl2dim;
% Place traditional jacobian in temporary member.
mdlM.fwd_model.conductivity_jacobian = mdlM.fwd_model.jacobian;
% Redefine jacobian member for movement & conductivity.
mdlM.fwd_model.jacobian = 'aa_e_move_jacobian';
mdlM.RtR_prior =     'aa_e_move_image_prior';
mdlM.aa_e_move_image_prior.parameters = sqrt(1e2/1); 

% Solve inverse problem for mdlM eidors_obj model.
imgM = inv_solve(mdlM, vh, vi);
imgM.calc_colours.clim= clim;
imgM.calc_colours.backgnd= [.9,.9,.9];

% Plot results for each algorithm
subplot(1,2,2);
show_fem_move(imgM);

calc_colours(imgM,[],1); % do colourbar

set(gcf,'paperposition',[.25 2.5 8 4]);
print -r125 -dpng move_2d02.png


Figure: Inverse solutions of the problem above. Left image shows image reconstruction without movement correction, and right image shows reconstruction with estimated movement corrections shown by green arrows (scaled 20x).

Last Modified: $Date: 2008-07-26 11:36:27 -0400 (Sat, 26 Jul 2008) $ by $Author: aadler $