|
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
|
Two and a half dim (2½D) image reconstructionThe 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 reconstructionFirst, 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.pngNote 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 $