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

News
Mailing list
(archive)
FAQ
Developer
                       

 

Hosted by
SourceForge.net Logo

 

GREIT Reconstruction in 3D −

This tutorial shows how to reproduce the 2×16 electrode and 1×32 electrode belt images from the following paper:
Grychtol et al, Focusing EIT reconstructions using two electrode planes p. 17 Conf. EIT 2017, Dartmouth, NH, USA, June 21−24, 2017.
Data for this tutorial are available here: horse-breathing3D2D.mat

Figure: Standing horse with an electrode belt allowing 2×16 electrode and 1×32 electrode belt EIT data recording

GREIT 3D software

Code for Reconstruction using GREIT in 3D was recently added. If you have EIDORS v3.9, you will need the following two files: This code is also very slow to calculate. The actual reconstruction is fast. There are numerous improvements possible, and they're being worked on.

3D FEM for 1×32 electrode belt

% Model of 32x1 electrode belt
fmdl= ng_mk_ellip_models([4,0.8,1.1,.5],[32,2.0],[0.05]);
% Swisstom BBVet stimulation pattern
skip5 = {32,1,[0,5],[0,5],{'no_meas_current_next1'},1};
[fmdl.stimulation,fmdl.meas_select] = mk_stim_patterns(skip5{:});

3D GREIT reconstruction with 1×32 electrode belt

vopt.imgsz = [32 32];
vopt.square_pixels = true;
vopt.zvec = linspace(-1,1,10)*1.125 + 2;
vopt.save_memory = 1;
opt.noise_figure = 1.0;

% GREIT 3D with a 1x32 electrode layout
[imdl,opt.distr] = GREIT3D_distribution(fmdl, vopt);
imdl2a= mk_GREIT_model(imdl, 0.20, [], opt);

2D GREIT reconstruction with 1×32 electrode belt

% 2D GREIT model
clear opt;
opt.imgsz = [32 32];
opt.square_pixels = true;
opt.noise_figure = 0.5;
img = mk_image(fmdl,1);
imdl2b= mk_GREIT_model(img, 0.25, [], opt);

3D FEM for 2×16 electrode belt

fmdl= ng_mk_ellip_models([4,0.8,1.1,.5],[16,1.7,2.3],[0.05]);
[fmdl.stimulation,fmdl.meas_select] = mk_stim_patterns(skip5{:});

% "Square" electrode layout
idx = reshape(1:32,2,[])';
idx(2:2:end,:) = fliplr(idx(2:2:end,:));
extraflip= [4:12]; % This belt was made slightly differently
idx(extraflip,:) = fliplr(idx(extraflip,:));
fmdl.electrode(idx) = fmdl.electrode(:);

3D GREIT reconstruction with 2×16 electrode belt

vopt.imgsz = [32 32];
vopt.square_pixels = true;
vopt.zvec = linspace(-1,1,10)*1.125+2;
vopt.save_memory = 1;
opt.noise_figure = 1.0;

% GREIT 3D with 2x16 electrode belt
[imdl,opt.distr] = GREIT3D_distribution(fmdl, vopt);
imdl3= mk_GREIT_model(imdl, 0.20, [], opt);

Load data and reconstruct images

Using data: horse-breathing3D2D.mat
load horse-breathing3D2D.mat

for i=1:3; switch i;
   case 1; imdl = imdl3;  vv= horse3d; % 2 planes, 3D GREIT
   case 2; imdl = imdl2a; vv= horse2d; % 1 plane, 3D GREIT
   case 3; imdl = imdl2b; vv= horse2d; % 1 plane, 2D GREIT
   end
  
   img = inv_solve(imdl,vv(:,1),vv(:,2:end));
   img.calc_colours.ref_level = 0;
   subplot(121);
   show_slices(img,[inf,inf,2]);

   subplot(122);
   img.elem_data = img.elem_data(:,6);
   if i<3; show_3d_slices(img,[1.6,2.0,2.4],[],[0.4]);
   else;   show_slices(img);
   end;    view(-20,20);

   print_convert(sprintf('GREIT3D_horse06%c.jpg',64+i));
end


Belt3DImage
2×16
1×32
1×32

Figure: Reconstructed images of two tidal breaths for two different electrode belts

Last Modified: $Date: 2018-05-01 10:54:29 -0400 (Tue, 01 May 2018) $ by $Author: aadler $