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
|
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 softwareCode for Reconstruction using GREIT is in EIDORS v3.9.1. If you have an older version (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 skip4 = {32,1,[0,5],[0,5],{'no_meas_current_next1'},1}; [fmdl.stimulation,fmdl.meas_select] = mk_stim_patterns(skip4{:}); 3D GREIT reconstruction with 1×32 electrode beltvopt.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 beltfmdl= 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(skip4{:}); % "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 beltvopt.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 imagesUsing data: horse-breathing3D2D.matload 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
Figure: Reconstructed images of two tidal breaths for two different electrode belts Last Modified: $Date: 2018-06-14 10:44:51 -0400 (Thu, 14 Jun 2018) $ by $Author: aadler $ |