Contributed EIT Data:

Authors: Bartłomiej Grychtol
Date: 2024
Brief Description: High density smooth triangulated organ surfaces of the human torso derived from the BodyParts3D database by The Database Center for Life Science.

This is a copy of a dataset published on Zenodo , packaged as EIDORS-compatible meshes.

Data were published as

and described in
License: Creative Commons Attribution-ShareAlike 2.1 Japan
Attribution Requirement: Use or presentation of these data must acknowledge
    "Torso Organ Meshes" (https://doi.org/10.5281/zenodo.11047831) by Bartłomiej Grychtol / A derivative of "BodyParts3D" (https://dbarchive.biosciencedbc.jp/en/bodyparts3d) by The Database Center for Life Science
and cite this publication:
Format: Data are stored in Matlab v7 file format. See Zenodo for more details.
Data:

The data is used by the functions mk_thorax_model_bp3d and mk_thorax_model.

torso = mk_thorax_model_bp3d('2x16_odd-even','fine');

%%
fmdl = torso.fwd_model;
clf
h = show_fem(fmdl);
ch = get(gca, 'Children');
for i = 1:numel(ch)
   set(ch(i),'EdgeColor','none');
end
set(h,'FaceColor',[.5 .5 .5]);
set(h,'FaceLighting','phong','AmbientStrength',0.7)
light('Position',[1 -.5 0.2],'Style','infinite');
set(h,'FaceAlpha',.3)

hold on

idx   = [   2,    3,    4];
alpha = [   .3,   .3,    1];
color = [  .3     0     0;
           .3     0     0;
           .75    0     0;];

for i = 1:numel(idx)
   obj = rmfield(fmdl,'boundary');
   obj.elems = obj.elems(fmdl.mat_idx{idx(i)},:);
   obj = fix_boundary(obj);
   oh(i) = show_fem(obj);
   set(oh(i),'EdgeColor','none')
   set(oh(i),'FaceColor',color(i,:),'FaceLighting','phong')
   set(oh(i),'FaceAlpha',alpha(i))
end

%oxygenated blood
idx = [5 9:12];
for i = 1:numel(idx)
   obj = rmfield(fmdl,'boundary');
   obj.elems = obj.elems(fmdl.mat_idx{idx(i)},:);
   obj = fix_boundary(obj);
   oh(i) = show_fem(obj);
   set(oh(i),'EdgeColor','none')
   set(oh(i),'FaceColor',[1 0 0],'FaceLighting','phong')
   
end

%de-oxygenated blood
idx = [6:8];
for i = 1:numel(idx)
   obj = rmfield(fmdl,'boundary');
   obj.elems = obj.elems(fmdl.mat_idx{idx(i)},:);
   obj = fix_boundary(obj);
   oh(i) = show_fem(obj);
   set(oh(i),'EdgeColor','none')
   set(oh(i),'FaceColor',[0 0 1],'FaceLighting','phong')
end
axis off
hold off
%%
view(3)
print_convert('torso_colors_01.jpg','-r600')
%%
view(0,0)
print_convert('torso_colors_02.jpg','-r600')

clf
torso.calc_colours.ref_level = 1;
torso.calc_colours.transparency_thresh = .01;
%show_3d_slices(torso, [1242],[],[]);
for i = [13 15 19:22]
   torso.elem_data(torso.fwd_model.mat_idx{i}) = 3;
end

[slc, p] = mdl_slice_mesher(torso, [inf inf 1242]);
slc.calc_colours.ref_level = 1;
slc.calc_colours.transparency_thresh = .01;
h = show_fem(slc);
set(h,'LineWidth',1)
ch = get(gca,'Children');
% need a custom colormap
idx = unique(get(ch(18), 'FaceVertexCData'));
color = [  .3     0     0; % lung
            1    .7    .7; % vessel
           .75    0     0; % heart wall
           0      0     1; % deox HB
           1      0     0; % oxHB 
            ];
c = ones(254,3);
for i = 1:numel(idx)
   c(idx(i),:) = color(i,:);
end
colormap(c);
view(2)
set(gca,'ydir','reverse')
p.FaceVertexCData(:) = 0;
h2 = patch(p);
set(h2,'FaceAlpha',0)
set(h2,'LineWidth',0.1)
set(h2,'EdgeAlpha',.8)
axis off
print_convert('torso_slice_01.jpg','-r600');

For other examples of the use, see eidors-svn/pubs/conferences/EIT2024/torso-mesh-bp3d/mk_figures.m

Illustrations of an FEM with multiple electrode planes generated with mk_thorax_model_bp3d. A) Full model with coloured organ regions, B) zoomed image into the full model in the heard region, C) FEM mesh in a slice through the ventricles.
Figure from Grychtol and Adler, 2024.

Last Modified: $Date: 2024-12-30 07:58:07 -0500 (Mon, 30 Dec 2024) $ by $Author: aadler $