Eidors-logo    

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
Install
Contrib Data
GREIT
Browse Docs
Browse SVN

News
Mailing list
(archive)
FAQ
Developer
                       

 

Hosted by
SourceForge.net Logo

 

Two and a half dim (2½D) image reconstruction

The term "2½D" originates from geophysics. Measurements are made around a medium (or in a borehole) in 3D. However, in order to simplify image reconstruction, the medium properties are assumed to be constant in the z direction.

Thus, the z direction is part of the forward model, but not the inverse. It is thus "half" a dimension.

This tutorial shows how to do this as a application of coarse/fine mapping, where the a fine (high density) forward model is used with a coarse (low density) inverse model.

% Build 2D and 3D model $Id: two_and_half_d01.m 3850 2013-04-16 18:13:39Z aadler $

demo_img = mk_common_model('n3r2',[16,2]);

% Create 2D FEM of all NODES with z=0
f_mdl = demo_img.fwd_model;
n2d = f_mdl.nodes( (f_mdl.nodes(:,3) == 0), 1:2);
e2d = delaunayn(n2d);
c_mdl = eidors_obj('fwd_model','2d','elems',e2d,'nodes',n2d);

subplot(121);
show_fem(f_mdl); title('fine (3d) model');

subplot(122);
show_fem(c_mdl); title('coarse (2d) model');
axis square

print_convert two_and_half_d01a.png '-density 75'

% Simulate data - inhomogeneous
img = mk_image(demo_img,1);
vi= fwd_solve(img);

% Simulate data - homogeneous
load( 'datacom.mat' ,'A','B')
img.elem_data(A)= 1.15;
img.elem_data(B)= 0.80;
vh= fwd_solve(img);


Figure: Left fine (3d) model, Right coarse (2d) model

Image reconstruction

First, show the simulated target and the reconstruction on the fine (inverse crime) mesh.
% Solve 2D and 3D model $Id: two_and_half_d02.m 4839 2015-03-30 07:44:50Z aadler $

% Original target
subplot(141)
show_fem(img); view(-62,28)

% Create inverse Model: Classic
imdl= select_imdl(f_mdl, {'Basic GN dif'});
imdl.hyperparameter.value = .1;

% Classic (inverse crime) solver
img1= inv_solve(imdl, vh, vi);
subplot(142)
show_fem(img1); view(-62,28)

Next, create geometries for the fine and coarse mesh. Images are reconstructed by calling the coase_fine_solver function rather than the original. (Note this function still needs some work, it doesn't account for all cases)
% Solve 2D and 3D model $Id: two_and_half_d03.m 3208 2012-06-29 19:45:45Z aadler $

c2f= mk_coarse_fine_mapping( f_mdl, c_mdl );

imdl.fwd_model.coarse2fine = c2f;
img2= inv_solve(imdl, vh, vi);
img2.elem_data= c2f*img2.elem_data;
subplot(143)
show_fem(img2); view(-62,28)

% 2.5D reconstruct onto coarse model
subplot(144)
img3= inv_solve(imdl, vh, vi);
img3.fwd_model= c_mdl;
show_fem(img3);
zlim([0,3]); xlim([-1,1]); ylim([-1,1]);
 axis equal; view(-62,28)

print_convert two_and_half_d03a.png

Note the reconstructed image on the coarse mesh is extruded into 2D, as the assumptions require.

Figure: Left original (3d) model Centre left fine (3d) reconstruction Centre right 2½ reconstruction onto fine model Right 2½ reconstruction onto coarse model

Last Modified: $Date: 2017-02-28 13:12:08 -0500 (Tue, 28 Feb 2017) $ by $Author: aadler $