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
|
Two and a half dim (2½D) image reconstructionThe term "2½D" or 2.5D 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. Fourier ApproximationThe 2½D is typically built by constructing a 2D forward model and approximating the effect of the additional z direction through a summation of Fourier transform coefficients. Depending on the formulation, the Fourier summation may represent a finite region on either (for example, a cylinder) or an infinitely large region (for example, a half-space). Course/fine mapping can be applied on top of this to give a fine 2D forward model and a coarse 2D inverse model. The electrodes must all be at the z=0 plane.
For an explanation of the formulation, see the presentation for
Generally, the formulation used in geophysics uses Point Electrodes Models (PEM). Here we use the Complete Electrode Model (CEM) in the x and y directions, and the PEM in the z direction. % Models fmdl = mk_common_model('d2C',16); % fine model cmdl = mk_common_model('c2C',16); % coarse model c2f = mk_coarse_fine_mapping(fmdl.fwd_model, cmdl.fwd_model); imdl = fmdl; imdl.rec_model = cmdl.fwd_model; imdl.fwd_model.coarse2fine = c2f; clf; % figure 1 subplot(121);show_fem(imdl.fwd_model); title('fine (2d) model'); axis square; axis off; subplot(122); show_fem(imdl.rec_model); title('coarse (2d) model'); axis square; axis off; print_convert two_and_half_d01a.png '-density 75' Figure: Left fine (2d) model, Right coarse (2d) model % test c2f rimg = mk_image(cmdl,1); rimg.fwd_model = imdl.fwd_model; rimg.rec_model = imdl.rec_model; rimg.elem_data = 1 + ... elem_select( rimg.rec_model, '(x-0.3).^2+(y+0.1).^2<0.15^2' ) - ... elem_select( rimg.rec_model, '(x+0.4).^2+(y-0.2).^2<0.2^2' )*0.5; fimg = mk_image(fmdl,1); fimg.elem_data = 1 + ... elem_select( rimg.fwd_model, '(x-0.3).^2+(y+0.1).^2<0.15^2' ) - ... elem_select( rimg.fwd_model, '(x+0.4).^2+(y-0.2).^2<0.2^2' )*0.5; clf; % figure 1 subplot(131); show_fem(mk_image(imdl.rec_model,rimg.elem_data)); axis square; axis off; title('coarse'); subplot(132); show_fem(mk_image(imdl.fwd_model,c2f*rimg.elem_data)); axis square; axis off; title('coarse-to-fine'); subplot(133); show_fem(fimg); axis square; axis off; title('fwd fine'); print_convert two_and_half_d02a.png '-density 75'; % Simulate data - homogeneous himg = mk_image(fmdl,1); vh = fwd_solve_2p5d_1st_order(himg); % Simulate data - inhomogeneous vi = fwd_solve_2p5d_1st_order(fimg); Figure: Left coarse model Centre coarse data mapped to fine model Right fine model % Solve 2.5D % Create inverse Model: Classic imdl.hyperparameter.value = .1; imdl.reconst_type = 'difference'; imdl.type = 'inv_model'; % Classic and 2.5D (inverse crime) solver vh.type = 'data'; vi.type = 'data'; img2 = inv_solve(imdl, vh, vi); imdl.fwd_model.jacobian = @jacobian_adjoint_2p5d_1st_order; img25 = inv_solve(imdl, vh, vi); clf; subplot(131); show_fem(fimg); title('model'); axis off; axis square; subplot(132); show_fem(img2); title('2D'); axis off; axis square; subplot(133); show_fem(img25);title('2.5D'); axis off; axis square; print_convert two_and_half_d03a.png Figure: Left original model Centre 2d reconstruction Right 2½ reconstruction onto coarse model 2D + 3D = 2.5DThe 2½D can also be built as an application of coarse/fine mapping, where the fine (high density) 3D forward model is used with a coarse (low density) 2D inverse model. The 2D model is projected through the 3D model giving constant conductivity along the axis of the projection. % Build 2D and 3D model $Id: two_and_half_d04.m 5392 2017-04-12 05:22:03Z alistair_boyle $ 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_d04a.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 % Solve 2D and 3D model $Id: two_and_half_d05.m 5392 2017-04-12 05:22:03Z alistair_boyle $ % 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_d06.m 5392 2017-04-12 05:22:03Z alistair_boyle $ 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_d06a.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: 2017-04-12 01:30:57 -0400 (Wed, 12 Apr 2017) $ by $Author: alistair_boyle $