10.05.2015 Views

converter of bitmap image series into ansys en- vironment

converter of bitmap image series into ansys en- vironment

converter of bitmap image series into ansys en- vironment

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CONVERTER OF BITMAP IMAGE SERIES INTO ANSYS EN-<br />

VIRONMENT<br />

Petr Koňas<br />

Ing. Petr KOŇAS, Ph.D., MENDEL UNIVERSITY OF AGRICULTURE AND FORESTRY,<br />

Zemědělská 3, 613 00 Brno, Czech Republic, konas@m<strong>en</strong>delu.cz<br />

Anotace<br />

Práce shrnuje vytvoř<strong>en</strong>ý algoritmus tvorby konečně prvkové sítě (KP) odvoz<strong>en</strong>é z <strong>bitmap</strong>ové<br />

předlohy. Je detailně popsán proces registrace, segm<strong>en</strong>tace a síťování. Pro zpracování obrázků<br />

byly použity C++ knihovny STL projektů Insight Toolkit (ITK) a Visualization Toolkit (VTK).<br />

Za tímto účelem byla sestav<strong>en</strong>a multiplatformní aplikace WOOD3D uvolněná pod lic<strong>en</strong>cí GNU<br />

GPL. Je obsaž<strong>en</strong>o několik metod pro segm<strong>en</strong>taci a především různé způsoby konturování. Byly<br />

naprogramovány čtyřstěnné a šestistěnné typy sítí. Jsou zmíněny některé jednoduché způsoby<br />

zlepš<strong>en</strong>í kvality sítě. Byla proved<strong>en</strong>a verifikace a testování aplikace na vytvoř<strong>en</strong>ých anatomických<br />

preparátech smrku a ořechu. Jsou uved<strong>en</strong>y metody přípravy anatomických preparátů. Zformovaná<br />

síť byla použita v jednoduché mechanické analýze.<br />

Annotation<br />

The work summarizes created algorithms for formation <strong>of</strong> finite elem<strong>en</strong>t (FE) mesh which is derived<br />

from <strong>bitmap</strong> pattern. Process <strong>of</strong> registration, segm<strong>en</strong>tation and meshing is described in detail.<br />

C++ library <strong>of</strong> STL from Insight Toolkit (ITK) Project together with Visualization Toolkit<br />

(VTK) is used for base processing <strong>of</strong> <strong>image</strong>s. Several methods for appropriate mesh output are<br />

discussed. Multiplatform application WOOD3D for the task under GNU GPL lic<strong>en</strong>se was assembled.<br />

Several methods <strong>of</strong> segm<strong>en</strong>tation and mainly differ<strong>en</strong>t ways <strong>of</strong> contouring were included.<br />

Tetrahedral and rectilinear types <strong>of</strong> mesh were programmed. Improving <strong>of</strong> mesh quality in some<br />

simple ways is m<strong>en</strong>tioned. Testing and verification <strong>of</strong> final program on wood anatomy samples<br />

<strong>of</strong> spruce and walnut was realized. Methods <strong>of</strong> microscopic anatomy samples preparation are<br />

depicted. Final utilization <strong>of</strong> formed mesh in the simple structural analysis was performed.<br />

Introduction<br />

Main goal <strong>of</strong> the project, automatic mesh g<strong>en</strong>eration from <strong>bitmap</strong> source is under focus <strong>of</strong> many<br />

research teams. Unfortunately, a lot <strong>of</strong> them develop useful code just for commercial use. Similar<br />

task to our project is conversion <strong>of</strong> CT <strong>image</strong>s from medical analysis <strong>into</strong> the finite elem<strong>en</strong>t<br />

meshes which was investigated in many papers. Many pat<strong>en</strong>ts were released in this area. We<br />

should m<strong>en</strong>tion mainly works Finnigan et al. (1994) focused on converting <strong>of</strong> tomography <strong>image</strong>s<br />

<strong>into</strong> finite elem<strong>en</strong>t models, Johnson (1999) aimed on anisotropic repres<strong>en</strong>tation <strong>of</strong> scanned<br />

object and Usami et al. (2008) who extrapolates the inner volume <strong>of</strong> shell based geometry.<br />

The work pres<strong>en</strong>ts implem<strong>en</strong>tation <strong>of</strong> several methods <strong>of</strong> <strong>image</strong> registration, filtration and segm<strong>en</strong>tation<br />

together with Delaunay method (Delaunay B. 1934), dividing cubes method (Grosland<br />

et al. 2002) and modified octree method (Yerry 1984, Schneiders 1996). The article discuss main<br />

problems in <strong>image</strong> analysis due to incompatible colour spaces, samples preparation, thresholding<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 1 -


and final conversion <strong>into</strong> finite elem<strong>en</strong>t mesh. Assembling <strong>of</strong> m<strong>en</strong>tioned tasks together and evaluated<br />

application are main original results <strong>of</strong> the work.<br />

Materials and methods<br />

Registration<br />

Input <strong>image</strong>s obtained by hand way are usually bad shaped and not precisely positioned. Common<br />

way to solve this problem is utilization <strong>of</strong> registration algorithms. In spite <strong>of</strong> it, the task <strong>of</strong><br />

registration is very complex problem. Registration process should comp<strong>en</strong>sate translation, rotation<br />

and rescaling <strong>of</strong> <strong>image</strong>s. Wh<strong>en</strong> the sequ<strong>en</strong>ce <strong>of</strong> <strong>image</strong>s just overlay without registering the<br />

final composed <strong>image</strong> proves discontinuity <strong>of</strong> anatomy elem<strong>en</strong>ts. For thin closely positioned<br />

samples the change can be very small (Fig. 1 a), but more distant samples can consist <strong>of</strong> very<br />

differ<strong>en</strong>t structure with minimal linkage with other <strong>image</strong>s in sequ<strong>en</strong>ce (Fig. 1 b).<br />

a) b)<br />

Figure 1: sequ<strong>en</strong>ce <strong>of</strong> a) 3 <strong>image</strong>s with 10.3% <strong>of</strong> continuity defined by amount <strong>of</strong> white colour,<br />

b) 5 <strong>image</strong>s with 3.3% <strong>of</strong> continuity both overlaid without registration. Each slice is coloured by<br />

differ<strong>en</strong>t colour.<br />

Registration process comp<strong>en</strong>sates the error in position and small deformation <strong>of</strong> samples. It also<br />

admits small discontinuities betwe<strong>en</strong> two succeeding <strong>image</strong>s. Of course too much discontinuities<br />

can led <strong>into</strong> more significant error during registration than small deviation <strong>of</strong> simple overlaid<br />

<strong>image</strong>s. Wh<strong>en</strong> the registration process (by affine transform) is applied the final transformed <strong>image</strong>s<br />

can prove relatively small increasing <strong>of</strong> anatomical elem<strong>en</strong>ts succession (defined e.g. by<br />

integral op<strong>en</strong>ing <strong>of</strong> <strong>image</strong> measured by one specified colour). In pres<strong>en</strong>ted example only 0.6%<br />

differ<strong>en</strong>ce in comparison <strong>of</strong> overlaid <strong>image</strong>s with registration and without registration process<br />

will occur for sequ<strong>en</strong>ce <strong>of</strong> 3 <strong>image</strong>s and 1.2% differ<strong>en</strong>ce will occur for 5 <strong>image</strong>s in the whole<br />

tested region (Fig. 1, 2). Therefore, the registration process rapidly increases chance to successful<br />

realization <strong>of</strong> the following steps, especially the process <strong>of</strong> segm<strong>en</strong>tation and forming <strong>of</strong> the finite<br />

elem<strong>en</strong>t mesh.<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 2 -


a) b)<br />

Figure 2: sequ<strong>en</strong>ce <strong>of</strong> a) 3 <strong>image</strong>s with 10.9% <strong>of</strong> continuity, b) 5 <strong>image</strong>s overlaid <strong>image</strong>s formed<br />

by implem<strong>en</strong>ted registration with 4.5% <strong>of</strong> continuity.<br />

In pres<strong>en</strong>ted application the affine transform with registration based on mom<strong>en</strong>ts is implem<strong>en</strong>ted<br />

by itk::AffineTransform class. This class repres<strong>en</strong>ts an affine transform by rotation, scaling,<br />

shearing and translation <strong>of</strong> two sequ<strong>en</strong>tial input 2D <strong>image</strong>s by comparing <strong>of</strong> them and transforming<br />

the second <strong>image</strong>. Transformation <strong>of</strong> pixel position is driv<strong>en</strong> by eq. 1 (Yoo 2004).<br />

⎛x' ⎞ ⎡M11 M12 M13 ⎤ ⎛x− Cx ⎞ ⎛Tx + Cx<br />

⎞<br />

⎜ ⎟<br />

y'<br />

⎢<br />

M12 M22 M<br />

⎥ ⎜ ⎟ ⎜ ⎟<br />

=<br />

⎢<br />

23<br />

⎥<br />

⋅ y− Cy + Ty + Cy<br />

(1)<br />

⎜z' ⎟ ⎢M31 M32 M ⎥ ⎜<br />

33<br />

z− C ⎟ ⎜<br />

z<br />

Tz + C ⎟<br />

⎝ ⎠ ⎣ ⎦ ⎝ ⎠ ⎝ z ⎠<br />

x,y,z is original position, C x ,C y ,C z is c<strong>en</strong>ter <strong>of</strong> rotation, T x ,T y ,T z is vector <strong>of</strong> translation, M ij are affine transform coeffici<strong>en</strong>ts.<br />

Mapping <strong>of</strong> pixels int<strong>en</strong>sity values from space <strong>of</strong> fixed <strong>image</strong> <strong>into</strong> the moving <strong>image</strong> is made by<br />

class <strong>of</strong> linear interpolator itk::LinearInterpolateImageFunction, which evaluates int<strong>en</strong>sity values<br />

on non-grid values <strong>of</strong> moving <strong>image</strong>, which is g<strong>en</strong>erally deformed according to the fixed <strong>image</strong>.<br />

Filtering <strong>of</strong> <strong>image</strong><br />

Filtering plays very useful role in <strong>image</strong> processing. In programmed application it is used mainly<br />

for emphasizing <strong>of</strong> anatomy structures and suppressing <strong>of</strong> <strong>image</strong> noise. Filters in program are<br />

formed by thresholding code for separation <strong>of</strong> background and foreground parts <strong>of</strong> <strong>image</strong> or they<br />

are formed by convolution techniques. Thresholdig separates pixels by simple rule <strong>of</strong> Eq. 2 for<br />

Otsu Filter and Eq. 3 describes thresholding for binary filter.<br />

⎧W 1<br />

for w<br />

x,y,(z)<br />

< Th<br />

w<br />

x,y,(z)<br />

= ⎨<br />

(2)<br />

⎩W 2<br />

for w<br />

x,y,(z)<br />

> Th<br />

W 1 ,W 2 are colour int<strong>en</strong>sity values; w x,y,(z) is output pixel value on position x,y,(z); Th is threshold value<br />

⎧W 1<br />

for Th1 < w<br />

x,y,(z)<br />

< Th<br />

2<br />

w<br />

x,y,(z)<br />

= ⎨ (3)<br />

⎩ W otherwise<br />

2<br />

Th 1 and Th 2 are threshold limits within the <strong>image</strong> int<strong>en</strong>sities <strong>of</strong> structure can occur.<br />

Convolution is defined by Eq. 4, 5 (Terry 2004, Žára 2004).<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 3 -


m<br />

x,y x,y x−i,y−j i,j<br />

i=− m j=−m<br />

m<br />

P ⊗ Q = ∑∑ P ⋅Q<br />

(4)<br />

P is 2D <strong>image</strong>, Q is kernel<br />

m m m<br />

Px,y,z ⊗ Qx,y,z = ∑∑∑ Px −i,y−j ⋅Qi,j<br />

(5)<br />

i=− m j=− m k=−m<br />

P is 3D <strong>image</strong>, Q is kernel<br />

In pres<strong>en</strong>ted program two thresholding filters were used. By utilization <strong>of</strong> ITK two following<br />

filters were included. Otsu filter based on itkOtsuThresholdImageFilter class and binary filter<br />

based onf itkBinaryThresholdImageFilter were used. Both <strong>of</strong> them thresholds <strong>image</strong> according to<br />

appropriate threshold. Whereas Otsu filter (Otsu 1979) automatically computes value <strong>of</strong> threshold<br />

by maximizing <strong>of</strong> variance in (Eq. 6), binary filter allows defining the user value for s<strong>en</strong>sitive<br />

separation <strong>of</strong> structure from <strong>image</strong> background.<br />

2<br />

σ Th = p Th p Th μ Th − μ Th<br />

(6)<br />

( ) ( ) ( )( ( ) ( )) 2<br />

b 1 2 1 2<br />

p 1 (Th) is probability <strong>of</strong> first interval below threshold Th, p 2 (Th) is probability <strong>of</strong> second interval above the threshold<br />

Th, μ 1 resp. μ 2 is mean <strong>of</strong> the first resp. second interval<br />

Thresholds <strong>of</strong> binary filter can be manually defined by user or good approximation is automatically<br />

computed from mean value <strong>of</strong> <strong>image</strong> (Eq. 7) and <strong>image</strong> covariance (Eq. 8). Mean value <strong>of</strong><br />

pixels within the selected region is computed by itk::MeanCalculator and<br />

itk::CovarianceCalculator classes.<br />

X max ,Y max ,(Z max )<br />

1<br />

μ =<br />

∑ wi,j,(k)<br />

(7)<br />

Xmax ⋅Y max<br />

⋅(Z max<br />

) i,j,(k) = 1<br />

X max , Y max , Z max are pixel sizes in x, y, z direction<br />

Xmax, Y max ,(Z max )<br />

( wi,j,(k)<br />

μ )<br />

∑<br />

2<br />

(8)<br />

i,j,(k) = 1<br />

2<br />

σ = −<br />

Thresholding<br />

Thresholding can be defined in two phases <strong>of</strong> <strong>image</strong> processing. First phase is just before assembling<br />

<strong>of</strong> 3D <strong>image</strong> from <strong>image</strong> <strong>series</strong>, where user can choose thresholding filters for elimination<br />

<strong>of</strong> differ<strong>en</strong>t light measurem<strong>en</strong>t conditions which lead to incompatibility <strong>of</strong> colour spaces betwe<strong>en</strong><br />

<strong>image</strong>s within the <strong>series</strong> and thus problematic or impossible phases <strong>of</strong> registration, segm<strong>en</strong>tation<br />

and mesh forming. Next phase separates the structure from all colour spaces <strong>of</strong> <strong>image</strong> <strong>series</strong>.<br />

Contouring is made by another class (itkSimpleContourExtractorImageFilter). Objects <strong>of</strong> this<br />

class mask pixels <strong>of</strong> <strong>image</strong> on interface <strong>of</strong> structure and <strong>image</strong> background. Precisely, it selects<br />

pixels which are within the set <strong>of</strong> the structure (the last boundary). Although the class <strong>of</strong>fers definition<br />

<strong>of</strong> radius <strong>of</strong> interest (and this way the size <strong>of</strong> kernel for convolution), only one pixel<br />

neighbourhood is tak<strong>en</strong> <strong>into</strong> account, because <strong>of</strong> short<strong>en</strong>ing <strong>of</strong> computing time.<br />

Meshing <strong>of</strong> segm<strong>en</strong>ted <strong>image</strong> by tetrahedral elem<strong>en</strong>ts forms anisotropic mesh. For FE <strong>en</strong>vironm<strong>en</strong>ts<br />

good approximation <strong>of</strong> structure on its boundary is important. Narrow b<strong>en</strong>d around edges<br />

<strong>of</strong> structure is obtained by application <strong>of</strong> mean filter (itk::MeanImageFilter). It is simple convolution<br />

with the kernel:<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 4 -


⎡1 1 1⎤<br />

1<br />

Q =<br />

⎢ 1 1 1<br />

⎥<br />

9 ⎢ ⎥<br />

(9)<br />

⎢⎣<br />

1 1 1 ⎥⎦<br />

Meshing/tetrahedralization/cubes dividing<br />

Meshing is realized by vtkDelaunay3D class (Gelas 2008, Shewchuk J.R. 1998), which triangulates<br />

the significant points <strong>of</strong> the <strong>image</strong> and forms unstructured grid <strong>of</strong> tetrahedral elem<strong>en</strong>ts.<br />

Similar approach, but not purely in ITK has be<strong>en</strong> realized in project <strong>of</strong> tetrahedral mesh g<strong>en</strong>eration<br />

for medical imaging (Fedorov 2005). This work is probable one <strong>of</strong> the most important works<br />

in Op<strong>en</strong>Source field for quality tetrahedral mesh g<strong>en</strong>eration from <strong>image</strong> <strong>series</strong>. Unfortunately<br />

project consists <strong>of</strong> large amount <strong>of</strong> source code from various authors which leads to incompatibility<br />

with modern form <strong>of</strong> ITK and VTK. Code is also focused on MR <strong>image</strong>s and not for <strong>series</strong> <strong>of</strong><br />

separate 2D <strong>image</strong>s. Big portion <strong>of</strong> code use the project PETSc which is not CMake based and lot<br />

<strong>of</strong> difficulties with platform dep<strong>en</strong>d<strong>en</strong>t code makes almost impossible to g<strong>en</strong>eralize the code <strong>into</strong><br />

the pure ITK platform indep<strong>en</strong>d<strong>en</strong>t program.<br />

Mesh with good quality provides implem<strong>en</strong>ted code <strong>of</strong> huge project MIMx. This code forms<br />

regular unstructured hexahedral rectilinear mesh with prescribed size <strong>of</strong> elem<strong>en</strong>ts (Fig. 17, 18).<br />

Also modulus <strong>of</strong> elasticity can be computed on base <strong>of</strong> <strong>image</strong> int<strong>en</strong>sity and input estimation <strong>of</strong><br />

Young modulus <strong>of</strong> the structure. This part <strong>of</strong> code was developed in MIMx project and described<br />

in Carter 1977.<br />

Results and discussion<br />

In the project spruce wood (Picea abies (L.) Karst.) and walnut wood (Juglans Regia L.) as input<br />

anatomy samples were used. Spruce wood is more appropriate for initial <strong>image</strong> analysis due to<br />

simple structure. Walnut wood was used for validation <strong>of</strong> code robustness because <strong>of</strong> complex<br />

structure <strong>of</strong> wood. Application is in this phase without GUI and user has to specify parameters in<br />

command line for specific control. Numerous parameters allow detail control <strong>of</strong> program in all<br />

phases and almost in all available variables <strong>of</strong> individual object methods.<br />

-first N<br />

Number <strong>of</strong> the first <strong>image</strong> <strong>of</strong> <strong>series</strong> (it is assumed in format<br />

img00x.png). Usually it is 1<br />

-last N<br />

Number <strong>of</strong> the last <strong>image</strong> <strong>of</strong> <strong>series</strong>.<br />

-file fil<strong>en</strong>ame<br />

Fil<strong>en</strong>ame <strong>of</strong> output VTK file<br />

-size Sx Sy Sz<br />

Size <strong>of</strong> region subtracted from <strong>image</strong>. Size is defined as vector by<br />

three numbers in pixels. Default is full size <strong>of</strong> <strong>image</strong>.<br />

-origin Ox Oy Oz<br />

Origin for subtracted region. Origin is defined as vector by three<br />

numbers in pixels. Default is 0 0 0<br />

-filter_lower LowerInt<strong>en</strong>sity Lower int<strong>en</strong>sity value for binary thresholding filter. Default is 0.<br />

-filter_upper UpperInt<strong>en</strong>sity Upper int<strong>en</strong>sity value for binary thresholding filter. If no value is<br />

defined, th<strong>en</strong> optimal value is automatically computed.<br />

-filter_file fil<strong>en</strong>ame Fil<strong>en</strong>ame for output VTK file <strong>of</strong> thresholded <strong>image</strong>.<br />

-filter N<br />

0=Otsu thresholding filter, 1=Binary thresholding filter<br />

-mesh_size Size<br />

Size <strong>of</strong> output elem<strong>en</strong>ts (in pixels)<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 5 -


-scale Cx Cy Cz<br />

Scaling coeffici<strong>en</strong>ts. Scaling is defined as vector by three numbers.<br />

Default is 1 1 1<br />

-tetra 0|1<br />

0=no tetrahedrons will be created<br />

1=tetrahedrons are created<br />

-tetra_type 0|1<br />

0=no tetras will be created from hexahedral mesh<br />

1=tetras will be created from hexahedral mesh<br />

-reduced 0|1<br />

0=reduction <strong>of</strong> pixels for tetrahedralization is performed<br />

1=reduction is performed<br />

-prefiltered 0|1<br />

0=no prefiltering <strong>of</strong> individual input <strong>image</strong>s is performed<br />

1=prefiltering will be realized<br />

-smoothed 0|1<br />

0=smoothing with mean filter is performed<br />

1=smoothing is performed<br />

-registered 0|1<br />

0=individual <strong>image</strong>s are not registestered<br />

1=<strong>image</strong>s are registered at the beginning<br />

-alpha N<br />

Size <strong>of</strong> elem<strong>en</strong>t which is filtered out <strong>of</strong> mesh (in pixels)<br />

I: Command line parameters <strong>of</strong> application WOOD3D<br />

Program code is relatively huge (more than 1500 code lines). Partial description in the text is<br />

done by simplification and idealization <strong>of</strong> program code. Most <strong>of</strong> m<strong>en</strong>tioned methods keeps C++<br />

notation and style and should be also readable for users non skilled in programming. The following<br />

diagram repres<strong>en</strong>ts the schematic flow <strong>of</strong> application for <strong>image</strong> analysis and final output <strong>of</strong><br />

ANSYS APDL script (Fig. 3). Created program starts by reading <strong>of</strong> individual <strong>image</strong>s (Fig. 4),<br />

which form automatically 3D VTK <strong>image</strong> with full colour space <strong>of</strong> each <strong>image</strong> (Fig. 5).<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 6 -


itkImageReader<br />

reads individual <strong>image</strong><br />

Thresholding <strong>of</strong> 2D <strong>image</strong> according to the computed threshold<br />

itkOtsuThresholdImageFilter × itkBinaryThresholdImageFilter<br />

itkAffineTransform<br />

registration <strong>of</strong> <strong>image</strong>s<br />

itkImageSeriesReader<br />

reads serie <strong>of</strong> 2D <strong>image</strong>s<br />

itkImageWriter<br />

writes prefiltered <strong>image</strong>d<br />

itkRegionOfInterestImageFilter<br />

reads defined region <strong>of</strong> interest<br />

itkChangeInformationImageFilter<br />

spacing <strong>of</strong> <strong>image</strong><br />

itkImageSeriesWriter<br />

writing <strong>of</strong> 3D <strong>image</strong> <strong>into</strong> the file<br />

Computing <strong>of</strong> the simple statistics<br />

itkStatistics::ScalarImageToListAdaptor<br />

itkStatistics::MeanCalculator mean <strong>of</strong> <strong>image</strong> int<strong>en</strong>sity<br />

itkStatistics::CovarianceCalculator covariance <strong>of</strong> <strong>image</strong> int<strong>en</strong>sity<br />

Computing <strong>of</strong> the threshold for binary thresholding filters Th1 = 0,Th<br />

2<br />

= μ+<br />

σ<br />

Thresholding <strong>of</strong> 3D <strong>image</strong> according to the computed threshold<br />

itkOtsuThresholdImageFilter × itkBinaryThresholdImageFilter<br />

itkImageFileWriter<br />

writes thresholded<br />

<strong>image</strong> <strong>into</strong> the file<br />

Forming <strong>of</strong> contoured <strong>image</strong> object from thresholded <strong>image</strong><br />

itkSimpleContourExtractorImageFilter(Radius) contourfilter<br />

Forming <strong>of</strong> object contourplane(Radius) from contour<strong>image</strong> object by contourfilter<br />

from each plane <strong>of</strong> contour<strong>image</strong><br />

Smoothing the contoured 3D <strong>image</strong> by<br />

itkMeanImageFilter(Radius)<br />

Reducing the number <strong>of</strong> positive pixels for<br />

mesh tetrahedralization<br />

Meshing<br />

- rectilinear mesh<br />

itkMimxImageToVTKUnstructuredGridFilter<br />

- tetrahedralized rectilinear mesh<br />

vtkDelaunay3D<br />

- tetrahedralized mesh derived directly<br />

from previous step<br />

- unstructured grid<br />

Forming a mesh nodes from reduced <strong>image</strong><br />

and adding mesh nodes for user defined<br />

mesh level (and lower) from rectilinear mesh<br />

Removing <strong>of</strong> bad shaped tetrahedrons<br />

Removing <strong>of</strong> ghost cells<br />

Writing the mesh <strong>into</strong> the APDL script<br />

(ANSYS FEM sw)<br />

Fig. 3 Diagram <strong>of</strong> application flow<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 7 -


.<br />

Fig. 4 Input <strong>image</strong> <strong>series</strong> is formed from individual pictures. The differ<strong>en</strong>ce in colour spaces is<br />

appar<strong>en</strong>t. Contrast and int<strong>en</strong>sity is not constant. Spruce wood on the left and walnut wood on the<br />

right.<br />

Fig. 5 3D VTK <strong>image</strong> formed from <strong>image</strong> <strong>series</strong> with detail. Spruce wood on the left and walnut<br />

wood on the right.<br />

User can process native <strong>image</strong>s by thresholding without any modification. For such purpose the<br />

3D VTK <strong>image</strong> is used. Thresholding is realized by Otsu filter (Fig. 6) or binary filter (Fig. 7).<br />

Pictures demonstrates significant differ<strong>en</strong>ces betwe<strong>en</strong> utilization <strong>of</strong> each filter. In both cases automatic<br />

derivation <strong>of</strong> threshold was used. Thresholds for binary filter are defined by mean value<br />

and covariance <strong>of</strong> the selected region <strong>of</strong> <strong>image</strong> (Eq. 10) or can be defined manually by user.<br />

Th<br />

1<br />

= 0 or user defined<br />

N N N<br />

1 ⎛ 1 ⎞<br />

Th<br />

2<br />

= ∑w i<br />

+ ∑ wi wi<br />

or user defined<br />

N<br />

⎜ − ∑<br />

i= 1 i= 1 N<br />

⎟<br />

⎝<br />

i=<br />

1 ⎠<br />

2<br />

(10)<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 8 -


Fig. 6 3D VTK <strong>image</strong> thresholded by<br />

Otsu filter with detail<br />

Fig. 7 3D VTK <strong>image</strong> thresholded by binary<br />

filter with detail<br />

In many cases the thresholding <strong>of</strong> 3D VTK <strong>image</strong> formed from native <strong>image</strong>s can produce discontinuous<br />

<strong>image</strong>. This effect is caused by colour spaces <strong>of</strong> individual <strong>image</strong>s which are too far<br />

each another. As was m<strong>en</strong>tioned, application <strong>of</strong>fers prefiltering <strong>of</strong> input <strong>image</strong>s for such case on<br />

user request. Prefiltering means thresholding <strong>of</strong> each <strong>image</strong> before the 3D VTK <strong>image</strong> is assembled<br />

together. Thresholding is done by Otsu filter (Fig. 8) or binary filter again (Fig. 9). User defines<br />

the filter just once for all thresholding operations made in application. Prefiltering unifies<br />

colour spaces in input <strong>image</strong>s which results <strong>into</strong> emphasized contours <strong>of</strong> structure and improving<br />

<strong>of</strong> the structure continuity in third dim<strong>en</strong>sion (compare Fig. 6-9).<br />

Fig. 8 3D VTK <strong>image</strong> prefiltered<br />

and thresholded by Otsu filter<br />

with detail<br />

Fig. 9 3D VTK <strong>image</strong> prefiltered and<br />

thresholded by binary filter with detail<br />

Prefiltered <strong>image</strong>s can be registered by sequ<strong>en</strong>ce <strong>of</strong> successive filters and transformed for comp<strong>en</strong>sation<br />

<strong>of</strong> small errors in position and deformation. First, registration computes parameters for<br />

translation and rotation <strong>of</strong> successive <strong>image</strong> for optimal positioning. In second phase the optimal<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 9 -


scale is computed. Optimization runs in 300 steps (number assure robustness for many tested<br />

cases). Registered <strong>image</strong>s are writt<strong>en</strong> <strong>into</strong> transformed files with prefix tmp (Fig. 10). Output<br />

parameters <strong>of</strong> registration are printed in standard console. In figure with spruce anatomy samples<br />

the change is relatively small (up to 100 px <strong>of</strong> translation, up to 3 degrees <strong>of</strong> rotation).<br />

Fig. 10 3D VTK <strong>image</strong> prefiltered and thresholded<br />

by Otsu filter with registration<br />

Fig. 11 3D VTK <strong>image</strong> prefiltered with<br />

affine registration; gre<strong>en</strong> colour repres<strong>en</strong>ts<br />

change (rotation, translation) after<br />

registration<br />

Prefiltered and registered <strong>image</strong> are thresholded again. In the case, prefiltering is more formal,<br />

just for ev<strong>en</strong>ts <strong>of</strong> residues after prefiltering and registration. Resulted 3D <strong>image</strong> shows bigger<br />

structure continuity (Fig. 11). Registration mainly comp<strong>en</strong>sates errors in <strong>image</strong> acquisition due to<br />

deformation <strong>of</strong> anatomy samples (swelling/shrinkage, relaxation), non-uniform cuts, small failures,<br />

… etc.).<br />

Next itk::ImageSeriesReader is initiated for reading <strong>of</strong><br />

the whole native/prefiltered and/or registered <strong>image</strong><br />

<strong>series</strong>. User defines the requested region <strong>of</strong> interest in<br />

command line. This region is extracted from filtered<br />

<strong>image</strong>s and appropriate spacing is set. Spacing defines<br />

the real distance <strong>of</strong> voxels in the space. Thus, final<br />

mesh will be in metric space with real scale.<br />

After spacing the contouring process starts. Contouring<br />

plays key role for the following process <strong>of</strong> structure<br />

segm<strong>en</strong>tation. Contouring selects boundaries <strong>of</strong> cell’s<br />

lum<strong>en</strong> (Fig. 12). In application the contour is saved<br />

with all points on the boundary (lum<strong>en</strong>). All other<br />

points are approximated and reduced for reasonable<br />

count <strong>of</strong> finite elem<strong>en</strong>ts derived just on pixels from<br />

contour filter. Full covering <strong>of</strong> cells lum<strong>en</strong> boundary is<br />

realized for accurate meshing on curved edges. Thus, a<br />

lot <strong>of</strong> elem<strong>en</strong>ts is created in these regions allowing FE<br />

Fig. 12 3D VTK contour <strong>image</strong><br />

prefiltered and thresholded by<br />

Otsu filter with detail<br />

approximation <strong>of</strong> regions appropriate for multi(physical) tasks. Contouring processes the whole<br />

<strong>image</strong>. Nevertheless, individual plane regions are tak<strong>en</strong> <strong>into</strong> account in this process and pixels<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 10 -


forming the lum<strong>en</strong>s boundary are marked for each plane separately. Contours are detected in vicinity<br />

<strong>of</strong> each pixels in radius <strong>of</strong> one pixel (Code 2). Processed <strong>image</strong> is writt<strong>en</strong> <strong>into</strong> the file.<br />

Registration is based on itk::ImageRegistrationMethod. It allows compute translation, rotation<br />

and scaling parameters for optimal <strong>image</strong>s alignm<strong>en</strong>t (Code 1).<br />

registration->SetMetric( metric );<br />

registration->SetOptimizer( optimizer );<br />

registration->SetInterpolator( interpolator );<br />

TransformType::Pointer transform = TransformType::New();<br />

registration->SetTransform( transform );<br />

fixedImageReader->SetFileName( fixedfil<strong>en</strong>ame );<br />

movingImageReader->SetFileName( movingfil<strong>en</strong>ame );<br />

registration->SetFixedImage( fixedImageReader->GetOutput() );<br />

registration->SetMovingImage( movingImageReader->GetOutput() );<br />

fixedImageReader->Update();<br />

typedef itk::C<strong>en</strong>teredTransformInitializer< TransformType, FixedImageType,<br />

MovingImageType > TransformInitializerType;<br />

TransformInitializerType::Pointer initializer =<br />

TransformInitializerType::New();<br />

initializer->SetTransform( transform );<br />

initializer->SetFixedImage( fixedImageReader->GetOutput() );<br />

initializer->SetMovingImage( movingImageReader->GetOutput() );<br />

initializer->Mom<strong>en</strong>tsOn();<br />

initializer->InitializeTransform();<br />

registration->SetInitialTransformParameters( transform->GetParameters() );<br />

typedef OptimizerType::ScalesType OptimizerScalesType;<br />

OptimizerScalesType optimizerScales( transform->GetNumberOfParameters() );<br />

optimizerScales = translationScale;<br />

optimizer->SetScales( optimizerScales );<br />

optimizer->SetMaximumStepL<strong>en</strong>gth( stepl<strong>en</strong>gth );<br />

optimizer->SetNumberOfIterations( maxNumberOfIterations );<br />

optimizer->MinimizeOn();<br />

registration->StartRegistration();<br />

Code 1: Registration <strong>of</strong> <strong>image</strong> <strong>series</strong>. Moving <strong>image</strong> is consequ<strong>en</strong>t <strong>image</strong> which is registered<br />

according to previous (fixed) <strong>image</strong>.<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 11 -


for (int i=0; iSetInput( contour<strong>image</strong>);<br />

plane->SetRegionOfInterest( Region );<br />

contour->SetInput(plane->GetOutput());<br />

contour->SetRadius(1);<br />

contour->Update();<br />

itk::ImageRegionIterator it(contour->GetOutput(), Region);<br />

for ( ; !it.IsAtEnd(); ++it)<br />

{<br />

pindex = it.GetIndex();<br />

pvalue=contour->GetOutput()->GetPixel(pindex);<br />

contour->GetOutput()->TransformIndexToPhysicalPoint(pindex,cpoint);<br />

cpoint[2]=i;<br />

isvalid=contour<strong>image</strong>->TransformPhysicalPointToIndex(cpoint,ppindex);<br />

ppindex[2]=i;<br />

if (!isvalid) std::cout InsertNextPoint(vtk_point);<br />

mesh_grid_size = max_grid_size/2^i;<br />

}<br />

Code 3: Adding grid points <strong>into</strong> points <strong>of</strong> mesh<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 12 -


for ( i = 1; i < mesh_levels = (log(max_grid_size)/log(2)); i++ )<br />

if ( pixel_value == is_positive_in_tresholded_<strong>image</strong> &&<br />

pixel_value == is_nonzero_in_meanfilter &&<br />

pixel_position % mesh_grid_size == 0)<br />

{<br />

mesh_<strong>image</strong> -> SetPixel(pixel,1);<br />

vtk_point = pixel_position;<br />

points -> InsertNextPoint(vtk_point);<br />

mesh_grid_size = max_grid_size/2^i;<br />

}<br />

Code 4: Adding grid points near the edge <strong>of</strong> structure <strong>into</strong> points <strong>of</strong> mesh<br />

Fig. 14 3D VTK contour <strong>image</strong> prefiltered<br />

and thresholded by Otsu filter with<br />

detail. Mesh points added.<br />

Fig. 14 Tetrahedralized mesh (48k elem<strong>en</strong>ts)<br />

without tesssellation with prefiltering<br />

and registering<br />

Points formed by the way m<strong>en</strong>tioned above are triangulated by Delaunay algorithm with object <strong>of</strong><br />

class vtkDelaunay3D (Fig. 14). The appropriate parameter alpha has to be defined for removing<br />

<strong>of</strong> elem<strong>en</strong>ts with size bigger than alpha.<br />

vtkDelaunay3D* tets=vtkDelaunay3D::New();<br />

tets->AddInput(points);<br />

if ( user_defined_alpha == 0)<br />

alpha=max_grid_size;<br />

tets->SetAlpha( alpha);<br />

tets->SetTolerance(1.0);<br />

tets->Update();<br />

Code 5: Tetrahedralization <strong>of</strong> selected points<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 13 -


Above objects g<strong>en</strong>erates a lot <strong>of</strong> bad shaped elem<strong>en</strong>ts which are not appropriate for FE analysis.<br />

Therefore the mesh is tessellated by objects <strong>of</strong> vtkTessellatorFilter class. This class works directly<br />

on vtkUnstructuredGrid class and g<strong>en</strong>erates the same class on the output. It allowed simple<br />

implem<strong>en</strong>tation <strong>of</strong> filter for grid tessellation. Disadvantage <strong>of</strong> this old and temporary class (according<br />

to VTK Docum<strong>en</strong>tation project statem<strong>en</strong>t) is slow triangulation based on Delaunay<br />

method. As a possibility appears in vtkG<strong>en</strong>ericCellTessellator and vtkOrderedTriangulator<br />

(Shroeder 2004) classes which <strong>of</strong>fer very quick and parallelized/threaded algorithm for triangulation<br />

<strong>of</strong> reduced voxels together with definition <strong>of</strong> error metrics for finite elem<strong>en</strong>ts which have to<br />

be tessellated.<br />

Fig. 16 Deformation field on tetrahedralized<br />

mesh. Source <strong>image</strong> was registered<br />

and prefiltered.<br />

Fig. 15 Deformation field on hexahedral<br />

mesh. Source <strong>image</strong> was registered and<br />

prefiltered.<br />

As an alternative to Delaunay tetrahedralization the MIMx code for hexahedral mesh g<strong>en</strong>eration<br />

was also included. Formed mesh has good quality in comparison with Delaunay triangulation<br />

mainly due to regular cells which approximate the <strong>image</strong>. Cells are very small and are able to<br />

describe very thin geometries (thin cell walls, small sized lum<strong>en</strong>s). It is appar<strong>en</strong>t mainly for<br />

rough grids <strong>of</strong> tetrahedralized mesh and big spaced <strong>image</strong> slices where lum<strong>en</strong>s can collapse together<br />

(compare Fig. 14 and Fig. 18. On the contrary hexahedral mesh forms discontinuous<br />

boundaries on cell walls. Sharp rectangular boundaries <strong>of</strong> hexahedral mesh can make difficult the<br />

following FE analysis. Edges and points on these boundaries acts as singular points and negatively<br />

influ<strong>en</strong>ce accuracy <strong>of</strong> solution (compare Fig. 15 where several singular areas occur with<br />

tetrahedralized Fig. 16). Advantage <strong>of</strong> MIMx code is also support <strong>of</strong> threads which accelerates<br />

run <strong>of</strong> application on multicored CPUs (Code 6).<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 14 -


<strong>image</strong>ToHexMeshFilter->SetInput( meanfilter->GetOutput() );<br />

<strong>image</strong>ToHexMeshFilter->SetMaskImage(filtered_<strong>image</strong>);<br />

<strong>image</strong>ToHexMeshFilter->SetMeshIndexOffset( 1 );<br />

<strong>image</strong>ToHexMeshFilter->SetComputeMeshPropertiesOn( );<br />

<strong>image</strong>ToHexMeshFilter->SetComputeMeshNodeNumberingOn( );<br />

<strong>image</strong>ToHexMeshFilter->SetMeshResampleSize( mesh_size);<br />

<strong>image</strong>ToHexMeshFilter->SetNumberOfThreads(n_core*n_cpu);<br />

<strong>image</strong>ToHexMeshFilter->SetImageThreshold( threshold );<br />

Code 6: MIMx code for hexahedral mesh from <strong>image</strong><br />

Third implem<strong>en</strong>ted code for meshing <strong>of</strong> <strong>image</strong> voxels forms unstructured grid with anisotropic<br />

irregular mesh similar to tetra mesh, but it is formed by divided cubes as in previous code. The<br />

mesh is created by declared and modified octree algorithm. Unfortunately the grid can not be<br />

used simply in the FE <strong>en</strong>vironm<strong>en</strong>ts such as ANSYS which demand the structured and well connected<br />

mesh. This output can be used for geometry <strong>en</strong>tities just in the mom<strong>en</strong>t. Several other<br />

tools (e.g. ICEM CFD) are able to form the FE mesh from geometry created by this way. This<br />

requires ext<strong>en</strong>sive amount <strong>of</strong> time and computing resources nowadays and is not yet in appropriate<br />

form for common utilization.<br />

Fig. 17 Unstructured hexahedral mesh g<strong>en</strong>erated<br />

by implem<strong>en</strong>ted MIMx code (detail).<br />

Source <strong>image</strong> was not registered and prefiltered.<br />

Fig. 18 Unstructured hexahedral mesh (25k<br />

elem<strong>en</strong>ts). Source <strong>image</strong> was registered and<br />

prefiltered.<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 15 -


for (long i=0; (i


Fig. 19 Stress field on FE model formed by MIMx hexahedral mesh and loaded by compression<br />

in transverse direction. Source <strong>image</strong> was not registered and prefiltered.<br />

Code <strong>en</strong>vironm<strong>en</strong>t, compiling and testing<br />

Code was writt<strong>en</strong> in KDevelop and Micros<strong>of</strong>t Visual C++ IDE GUI <strong>en</strong>vironm<strong>en</strong>t. Both Linux<br />

and MS Windows platform were used for compiling and testing <strong>of</strong> code. Multiplatform code is<br />

based on project CMake (Martin 2005). Classes <strong>of</strong> Insight toolkit (ITK) (Yoo et al. 2002) and<br />

Visual toolkit (VTK) projects were used for assembling the code. Very useful source for our<br />

work was book Ibáñez 2005 which provided a lot <strong>of</strong> basic and advantage code for <strong>image</strong> processing<br />

and Prata 2004 which was useful for implem<strong>en</strong>tation <strong>into</strong> C++ code. Final binary file is small<br />

and standalone without any linked libraries. Processing <strong>of</strong> <strong>image</strong>s for tetrahedral meshes with<br />

prefiltration and registration takes app. 1.5 hour. Whereas the most time consuming part is registration<br />

<strong>of</strong> full <strong>image</strong>s (1 hour) and tetrahedralization (30 minutes).<br />

CONCLUSION<br />

The paper pres<strong>en</strong>ts new original complex tool for <strong>image</strong> processing which process individual<br />

<strong>image</strong>s from anatomy samples and forms 3D structure appropriate for quantitative and qualitative<br />

analysis. Important supplem<strong>en</strong>t <strong>of</strong> application are several implem<strong>en</strong>ted codes for derivation <strong>of</strong><br />

finite elem<strong>en</strong>t mesh from <strong>image</strong> voxels. Code is robust for anatomy samples prepared in high<br />

quality. As was proved the application g<strong>en</strong>erates mesh with suffici<strong>en</strong>t quality for FE solver,<br />

namely ANSYS <strong>en</strong>vironm<strong>en</strong>t. Due to op<strong>en</strong>ed GPL lic<strong>en</strong>se the code <strong>of</strong>fers to other programmers<br />

possibility to create own code for its specific FE <strong>en</strong>vironm<strong>en</strong>t (ABAQUS, COMSOL,<br />

NASTRAN, etc.). Application is still under int<strong>en</strong>sive developm<strong>en</strong>t. Introduced features are first<br />

and most important results <strong>of</strong> this huge and complicated project.<br />

Created application <strong>of</strong>fers a lot <strong>of</strong> opportunities for further research in many differ<strong>en</strong>t scopes.<br />

Enumeration <strong>of</strong> geometry <strong>of</strong> wood structure allows e.g. revealing <strong>of</strong> microstructure fractal characteristics<br />

such as Hausdorff dim<strong>en</strong>sion for crack analysis on such low scale. It is significant<br />

chall<strong>en</strong>ge to ext<strong>en</strong>d analysis in Koňas P. et al. 2008 which tested correlation betwe<strong>en</strong> fractal dim<strong>en</strong>sion<br />

<strong>of</strong> wood anatomy structure and impact <strong>en</strong>ergy on 2D space and continue in analysis <strong>into</strong><br />

3D space. Analysis <strong>of</strong> fractal characteristics in full 3D space can finally found causes <strong>of</strong> failure<br />

initiation in wood and it also can reveal the estimators <strong>of</strong> physical and mechanical properties<br />

from these specific geometrical properties.<br />

Acknowledgem<strong>en</strong>ts<br />

The Research project GP106/06/P363 Homog<strong>en</strong>ization <strong>of</strong> material properties <strong>of</strong> wood for tasks<br />

from mechanics and thermodynamics (Czech Sci<strong>en</strong>ce Foundation) and Institutional research plan<br />

MSM6215648902 – Forest and Wood: the support <strong>of</strong> functionally integrated forest managem<strong>en</strong>t<br />

and use <strong>of</strong> wood as a r<strong>en</strong>ewable raw material (2005-2010, Ministry <strong>of</strong> Education, Youth and<br />

Sport, Czech Republic) supported this work. This work b<strong>en</strong>efited from the use <strong>of</strong> the Insight Segm<strong>en</strong>tation<br />

and Registration Toolkit (ITK), op<strong>en</strong> source s<strong>of</strong>tware developed as an initiative <strong>of</strong> the<br />

U.S. National Library <strong>of</strong> Medicine.<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 17 -


REFERENCES<br />

[1] L. Ibáñez, W. Schroeder, L. Ng, J. Cates, The ITK S<strong>of</strong>tware Guide – Second Edition Updated<br />

for ITK version 2.4, Kitware, Inc. ISBN 1-930934-15-7, pages 804, 2005<br />

[2] D. R. Carter, W. C. Hayes, The compressive behavior <strong>of</strong> bone as a two-phase porous structure,<br />

J <strong>of</strong> Bone Joint Surgery, 59A: 954-62, 1977<br />

[3] H. E. Cline, W. E. Lor<strong>en</strong>s<strong>en</strong>, S. Ludke, C. R. Crawford, and B. C. Teeter, Two Algorithms for<br />

the Three-Dim<strong>en</strong>sional Reconstruction <strong>of</strong> Tomograms. Medical Physics, 15(3):320-327, 1986<br />

[4] CMake: Cross Platform Make, www.cmake.org<br />

[5] B. Delaunay, Sur la sphère vide. A la memoire de Georges Voronoi. Izv. Akad. Nauk SSSR,<br />

Otdel<strong>en</strong>ie Matematicheskih i Estestv<strong>en</strong>nyh Nauk, 7 :793-800, 1934<br />

[6] A. Fedorov, N. Chrisochoides, R. Kikinis, S. Warfield, Tetrahedral mesh g<strong>en</strong>eration for<br />

medical imaging, http://hdl.handle.net/1926/35, 2005<br />

[7] P. M. Finnigan et al., United States Pat<strong>en</strong>t 5345490, Method and apparatus for converting<br />

computed tomography (CT) data <strong>into</strong> finite elem<strong>en</strong>t models, 10/1994<br />

[8] A. Gelas, A. Gouaillard, S. Megason, Triangular Meshes Dalunay Conforming Filter,<br />

http://hdl.handle.net/1926/1489, 2008<br />

[9] N. M. Grosland, T. D. Brown, A voxel-based formulation for contact finite elem<strong>en</strong>t analysis.<br />

Comput Methods Biomech Biomed Engin. Feb;5(1):21-32, 2002<br />

[10] E. Ives, A Guide to Wood Microtomy: Making quality microslides <strong>of</strong> wood sections. Suffolk,<br />

UK: Publishing Office Ernie Ives, pages 114, 2001.<br />

[11] J. B. Johnson, United States Pat<strong>en</strong>t 5883629, Recursive and anisotropic method and article<br />

<strong>of</strong> manufacture for g<strong>en</strong>erating a balanced computer repres<strong>en</strong>tation <strong>of</strong> an object, 3/1999<br />

[12] P. Koňas et al., Study <strong>of</strong> correlation betwe<strong>en</strong> the fractal dim<strong>en</strong>sion <strong>of</strong> wood anatomy structure<br />

and impact <strong>en</strong>ergy, European Journal <strong>of</strong> Mechanics A/Solids (2008),<br />

doi:10.1016/j.euromechsol.2008.07.005<br />

[13] K. Martin, B. H<strong>of</strong>fman, Mastering CMake – A Cross-Platform Build System, Kitware, Inc.,<br />

USA, pages 250, 2005<br />

[14] Musculoskeletal Imaging, Modelling and Experim<strong>en</strong>tation (MIMX), C<strong>en</strong>ter for Computer<br />

Aided Design, www.ccad.uiowa.edu/mimx/, 2007<br />

[15] N. Molino, R. Bridson, J. Teran, R. Fedkiw, A crystalline, red gre<strong>en</strong> strategy for meshing<br />

highly deformable objects with tetrahedra. In: Proceedings <strong>of</strong> the 12 th International Meshing<br />

Roundtable. 103-114, 2003<br />

[16] PETSc (2005): Portable, ext<strong>en</strong>sible toolkit for sci<strong>en</strong>tific computation. http://wwwunix.mcs.anl.gov/petsc/petsc-2/<br />

[17] N. Otsu, A threshold selection method from grey-level histograms, IEEE Trans. Sys., Man.,<br />

Cyber. 9, pp. 62-66, 1979<br />

[18] S. Prata, Mistroství v C++, Computer Press, Brno, pages 1006, 2004<br />

[19] R. Schneiders, R. Schindler and F. Weiler, Octree-based G<strong>en</strong>eration <strong>of</strong> Hexahedral Elem<strong>en</strong>t<br />

Meshes, Sandia National Laboratories, pp.2005-216, 1996<br />

[20] J. R. Shewchuk, Tetrahedral mesh g<strong>en</strong>eration by delaunay refinem<strong>en</strong>t. In Proceedings <strong>of</strong> the<br />

4 th Annual Symposium on Computational Geometry, Association for Computational Machinery,<br />

pages 86-95, 1998<br />

[21] W. J. Schroeder, B. Geveci, M. Malaterre. Compatible Triangulations <strong>of</strong> Spatial Decompositions.<br />

In Proceedings <strong>of</strong> Visualization 2004, IEEE Press October 2004<br />

[22] The Insight Segm<strong>en</strong>tation and Registration Toolkit (ITK), www.itk.org<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 18 -


[23] S. S. Usami et al., United States Pat<strong>en</strong>t 7372460 B2, Method and program for g<strong>en</strong>erating<br />

volume data from boundary repres<strong>en</strong>tation data, 5/2008<br />

[24] Vavrčík, H. – Gryc, V. Metodika výroby mikroskopických preparátů ze vzorků dřeva. Acta<br />

Universitatis Agriculturae et Silviculturae M<strong>en</strong>delianae Brun<strong>en</strong>sis. 2004. č. 4, pp. 169-175.<br />

[25] VTK Docum<strong>en</strong>tation Project (VTK 5.1.0 Docum<strong>en</strong>tation), www.vtk.org<br />

[26] M. A. Yerry, M. S. Shephard, Automatic Three-Dim<strong>en</strong>sional Mesh G<strong>en</strong>eration By The<br />

Modified Octree Technique, International Journal For Numerical Methods in Engineering, John<br />

Wiley, Num 20, pp. 1965-1990, 1984<br />

[27] T. S. Yoo, M. J. Ackerman, W. E. Lor<strong>en</strong>s<strong>en</strong>, W. Schroeder, V. Chalana, S. Aylward,<br />

D. Metaxes, R. Whitaker, Engineering and Algorithm Design for an Image Processing API: A<br />

Technical Report on ITK – The Insight Toolkit. In Proc. Of Medicine Meets Virtual Reality, J.<br />

Westwood, ed., IOS Press Amsterdam, pp. 586-592, 2002<br />

[28] T. S. Yoo, Insight <strong>into</strong> Images – Principles and Practice for Segm<strong>en</strong>tation, Registration, and<br />

Image Analysis, A K Peters, Ltd. Wellesey, pages 393, 2004<br />

[29] J. Žára, B. B<strong>en</strong>eš, J. Sochor a P. Felkel, Moderní počítačová grafika, Computer Press, Brno,<br />

pages 609, 2004<br />

ANSYS konfer<strong>en</strong>ce 2008<br />

16. ANSYS FEM Users’ Meeting & 14. ANSYS CFD Users’ Meeting<br />

Luhačovice 5, - 7, listopadu 2008<br />

- 19 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!