![]() |
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 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 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(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 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-05-01 10:54:29 -0400 (Tue, 01 May 2018) $ by $Author: aadler $ |