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
Download
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 2750 2011-07-14 13:35:29Z aadler $

if ~exist('demo_img');
   [inhomg_img, demo_img] = demo_real;
   close all;
end

% 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
vi= fwd_solve(inhomg_img);

% Simulate data - homogeneous
homg_img= inhomg_img; homg_img.elem_data(:) = 1;
vh= fwd_solve(homg_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 1535 2008-07-26 15:36:27Z aadler $

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

% Create inverse Model: Classic
imdl= eidors_obj('inv_model','NPs GN inverse');
imdl.solve=       @np_inv_solve;
imdl.hyperparameter.value = 1e-3;
imdl.R_prior= @np_calc_image_prior;
imdl.np_calc_image_prior.parameters= [3 1]; % see iso_f_smooth: deg=1, w=1
imdl.jacobian_bkgnd.value= 1;
imdl.reconst_type= 'difference';
imdl.fwd_model= f_mdl; % fine model

% 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 2750 2011-07-14 13:35:29Z 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);
set(gca,'ZLim',[0,3]); 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: 2011-07-15 06:48:46 -0400 (Fri, 15 Jul 2011) $ by $Author: aadler $