PHYSICALLY BASED MATCHING OF MULTIMODAL MEDICAL INFORMATION -LRB- incorporating inhomogeneity -RRB- Vojtech Jankovic Department of Computer Graphics and Image Processing Faculty of Mathematics and Physics Comenius University Bratislava , Slovakia Eduard Groeller Department of Visualization and Animation Institute of Computer Graphics Technical University Vienna , Austria ABSTRACT The paper presents a general non-rigid body representation suitable for physically-based modeling of deformations of inhomogenious objects . The reliability of the obtained results is demonstrated on real medical data sets - CT an MR scans of human brain . 1 . INTRODUCTION Physically-based modeling is a Computer Graphics field strongly attracting research interest in recent few years . A physically-based model includes physical characteristics of thing being modeled and specifies its behavior via mathematical equations . Since mainly computers are used to model objects many problems in computer simulation arise . But the main problem is to define a proper object representation and tools to handle interactivelly its behavior . Since there exist various distinct object representations we mention only those which are of some importance for our work . Barzel -LSB- Barz92 -RSB- develops a structural approach to physically-based modeling . He partitions a physically-based model into three distinct parts : the conceptual model , the mathematical model , and the posed problems , which are called a canonical CMP structure . Various CMP decompositions for flexible body simulation -LRB- see Figure 1 . -RRB- are proposed and discussed their relations and advantages and their suitability for particular object modelings . The author concentrates on flexible bodies whose mathematical models are continuous surfaces . Figure 1 . Three types of CMP Decompositions for Flexible-Body Simulation : A . The conceptual model is a flexible body ; the mathematical model is a continuous surface ; the solution technique requires discretization . B . The mathematical model includes a refinement to discrete equations . C . The conceptual model includes a refinement to a mass-point-spring system . Witkin et al. -LSB- WiFB87 -RSB- present a global general approach to imposing and solving constrains in physically-based modeling of the system consisting of number of particles . It introduces geometry constrains based on so called energy functions . Energy function is not the one simulating `` real '' underlying physics , but is introduced to represent some desired state of one particle -LRB- and the whole system -RRB- . The system is characterized by the global energy which is , in this case , a summation of all particle energies . Any deformation or animation of the system is done via dynamic behavior described by partial differential equations . Since the equations are simple , solution could be easily found by , for example Euler incremental method . They present some examples of geometric constrains and appropriate energy functions . Breen et al. -LSB- BrHG92 -RSB- in their modeling of tablecloth behavior apply Witkin 's et al. -LSB- WiFB87 -RSB- proposal for general geometric constrains in physically-based modeling . They present a clever graph representation of tablecloth material in which macroscopic behavior arises out of the interactions between its microscopic structures . The microscopic mechanical relations among particles are simulated by four simple geometric constrains : thread collision , thread stretching , thread bending and thread trelling . The simulation of the shape of the tablecloth is a two-phase process . The first phase is the simulation of movement and collisions of the free particles and the second phase is compositing the tablecloth under the defined mechanical constrains . Sederberg and Parry -LSB- SePa86 -RSB- presents technique called Free-Form Deformation -LRB- FFD -RRB- which can be used for deforming any solid model . It is based on the division of the model scene or local areas of deformation into a hexahedral mesh . Space -LRB- spatial position of any point -RRB- in each hexahedron is described by a local coordinate system . Any deformation is a spatial change of eight corners of hexagon from which the spatial change of all interhexagonal -LRB- e. g. object to deform -RRB- points is calculated by a trivariate Bernstein polynomial . The method provides good results for deformation of solids represented by surfaces . 2 . FORMULATION OF PROBLEM In particular situation we deal with two or more data sets of the same object which are multimodal e. g. have been obtained by different scanning techniques -LRB- CT , MRI , RTG , photography -RRB- under different circumstances . Therefore they carry different types of information and some of them are usually geometrically distorted . The problem is to find -LRB- mathematically and medically -RRB- suitable transformation to fit data together and merge all reasonable information they include into one data set . We will focus on the distortion correction problem in the paper . Since the structure of real biological samples is very complex interaction by experienced user -LRB- radiologist -RRB- is allways required . The most common method applied in medical treatment is based onto interactive selection of well distinguishable landmarks which are visible in all data sets . Spatial difference between corresponding pair of landmarks in undistorted and distorted data establishes a distortion vector . Thus the distortion of the whole object is described by a sparse set of distortion vectors valid for landmarks . The problem one should solve is to find distortion vectors for arbitrary points and resample the distorted data to the undistorted ones . Inspite there were proposed some morphing -LRB- also called matching -RRB- techniques solving distortion correction problem we can not use them in this case . The main reason is that the real samples are inhomogenious that is when distorted some portions change differently then others and that is what existing methods do not take into account . So the task is to develop an inhomogenoius morphing technique . In the development of the method we had to solve two basic tasks : 1 . Establishment of a well-working theoretical model with a set of proper parameters simulating proper real physical behavior of the model ed object -LRB- section 3 -RRB- . 2 . Proposing a procedural method applying the theoretical model , implementation of a software program and definition of a set of constrains with some parameters presetable interactively by the user allowing an automatic calculation of the representation from input 2D pixel image or 3D voxel cube -LRB- for definitions see -LSB- Jank92 -RSB- -RRB- -LRB- section 4 -RRB- . 3 . DYNAMIC GRID REPRESENTATION Since we consider none of known object representations really suitable for our purposes in modeling medical objects we only borrow some ideas from them and introduce a new model . The main improvement is to incorporate some kind of inhomogeneity into the model to approximate physical features and behavior of objects very close to reality . This is the main reason why we can not use continuous surface representations of objects proposed by many authors . We have chosen the variant C. from Barzel 's CMP decompositions scheme -LRB- Figure 1 . -RRB- , where the conceptual model includes a refinement to a mass-point-spring system . The idea is to represent any 2D -LRB- 3D -RRB- object as a set of small particles with known characteristics which are properly connected by a set of evaluated arcs simulating interparticle physical characteristics of the object material . The dynamics of the model is based on the assumption that known introductory forces act in some locations - important points called landmarks . The forces cause a change of spatial positions of the landmarks and consequently the change of all particles . That spreading of the landmarks change is performed gradually around each landmark following well adjusted material characteristics carried by spring arcs connecting corresponding particles . The representation fulfilling all those requirements is a graph oriented data structure called Dynamic Grid -LRB- DG -RRB- representation . Dynamic Grid is an oriented graph G V E , a f consisting of a set of nodes V and a set of oriented arcs E , where nodes are small particles each of which has an intensity value f and arcs are connections between tuples of nodes evaluated by so called material vectors q , which simulate real physical behavior of the matter inbetween neighbouring nodes . The reason why we intruduce oriented arcs connecting tuples of nodes instead of unoriented edges is that some properties are not symmetric , e.g. depend on the order of nodes . But it is still reasonable to require `` the symmetry '' of the set E : arc VV i j belongs to E iff arc V V j i belongs to E . In general case we can say nothing about the spatial organisation of nodes and number of incoming and outcoming arcs for each node in DG representation . But in the particular case of 2D -LRB- 3D -RRB- rectangular scenes we define DG in such a way that nodes lie inside pixels -LRB- voxels -RRB- and only those nodes are connected whose corresponding pixels -LRB- voxels -RRB- are direct neigbours . So in the initial state the spatial organisation of nodes in DG is regular according to the spatial organisation of pixels -LRB- voxels -RRB- in scene and each internal node has exactly four incoming and four outcoming arcs in 2D case -LRB- six incoming and six outcoming arcs in 3D case -RRB- . Figure 2. : DG representation - node Pij and its four neighbours with corresponding material vectors . To model interparticle physical behavior right according Newtonian physics we propose material vector q q q -LRB- , -RRB- 1 2 to have two items : stiffness coefficient q1 and reaction coefficient q 2 1 . We will assign them according to following force distribution : Any force acting in one node is transmitted along four spring arcs to the node 's four closest neighbours . The percentage of force transmitted along an arc is done by stiffness coefficient q1 . The force reaching second point is decreased by a reaction force it introduces . That reactive force depends on the quality of the material behind the node and is calculated as a portion of a reaching force what is done by the reaction coefficient q 2 . Let 's explain the exact meaning of the coefficients on the particular material vector q q q ij i j ij i j ij i j , , , -LRB- , -RRB- + + + 1 1 1 1 2 between nodes Pij and Pi j +1 -LRB- for the meaning of indicies see section 4.2 -RRB- : - Stiffness coefficient qij i j , +1 1 -LRB- -RRB- , 1 1 1 ? ? + qij i j is a measure of stiffness of the material between two neigbouring nodes Pij and Pi j +1 . If qij i j , +1 1 is near to 1 the material is very stiff -LRB- like metal -RRB- and the most of the force is transmitted , while if qij i j , +1 1 is near to 0 the material is unstiff -LRB- highly compressible -RRB- -LRB- like air -RRB- and only small portion of the force is transmitted . In other www 1If necessity , the model is free to include other reasonable coefficients . words , the stiffness coefficient indicates what amount of an introductory force is transmitted along the arc from Pij to Pi j +1 . The value of the stiffness coefficient along the arc depends on its length , on the average material intensity around the nodes and its relation to the minimal and maximal intensity values in the scene . We consider the minimal intensity belongs to the most unstiff material while the maximum intensity value belongs to the most stiff material -LRB- what is the case of Hounsfield numbers in CT slice -RRB- . So the calculation of the stiffness coefficient qij i j , +1 1 between two nodes Pij and Pi j +1 along arc with length d is done by the linear interpolation q d d P P ij i j ij i j , -LRB- -RRB- -LRB- -LRB- -RRB- -RRB- -LRB- , -RRB- + + + + == + + -- ?? 1 1 1 1 ww ww yy , -LRB- 1 -RRB- where ww ss -LRB- -RRB- d e d == -- -LRB- 2 -RRB- is a distance function fullfilling reasonable constrains w -LRB- -RRB- 0 1 = and lim -LRB- -RRB- x x fi ? = w , with properly selected parameter s justifying its behaviour and y -LRB- , -RRB- -LRB- -RRB- -LRB- -RRB- -LRB- -RRB- -LRB- -RRB- -LRB- -RRB- min max min min max min P P f P f P f f f f P f P f f f ij i j ij i j ij i j + + + = + - - = + - ? ? - 1 1 1 2 2 2 -LRB- 3 -RRB- is a material intensity function , where fmin and fmax are the minimal and maximal intensity values in the scene . Since the calculation depends on the average material intensity the values of stiffness coefficients should be the same in both directions , e. g. q q ij i j i j ij , , + + = 1 1 11 . - Reaction coefficient qij i j , +1 2 -LRB- -RRB- , 1 1 2 ? ? + qij i j is a measure of reaction force introduced by the force acting in the node Pi j +1 in the direction P P ij i j +1 . If qij i j , +1 2 is near to 1 the reaction force is similar to the introductory one -LRB- elastic collision -RRB- , while if qij i j , +1 2 is near 0 the reaction force is very weak -LRB- plastic collision -RRB- . The sense of the reaction coefficient is very similar to that known from physics called coefficient of restitution . The calculation of the reaction coefficient is based on the calculation of corresponding stiffness coefficients and is described in section 4.2 . 4 . DYNAMIC GRID DEFORMATION METHOD Dynamic Grid seems to be a suitable representation for modeling arbitrary real objects allowing calculation of geometric deformations when only a few landmark changes are known . To apply that representation we develop an Dynamic Grid Deformation -LRB- DGD -RRB- method which central idea is to spread and gradually decrease distortion vectors around initial landmarks until their amplitudes come to zero locally considering essential physical characteristics of the object . We divide DGD method into seven steps : 1 . Read input scene ; 2 . Create Dynamic Grid ; 3 . Select landmarks ; 4 . Calculate displacement force for each landmark ; 5 . Calculate displacement forces for all Dynamic Grid nodes ; 6 . Calculate displacement vectors for all points -LRB- resample distorted grid -RRB- ; 7 . Write output scene ; More detailed description of those steps is the topic of the rest of this chapter . Since the approaches are mostly the same in 2D and 3D cases , we will explain their principles in the simpler 2D case . 4 . 1 . Read input scene As mentioned before the method is developed to create DG representation from volume data input . That means in 2D case the input is a 2D discrete image , e. g. a 2D-array of pixels of integer values . In 3D case the input is a 3D discrete scene , e. g. 3D-array of voxels of integer values . We suppose that the knowledge about range of the data and their correspondence to biological structures is a priori done . For example in CT slice the data are Hounsfield numbers in interval < -1000,3000 > which represent a RTG ray absorbtion by particular tissues . 4 . 2 . Create Dynamic Grid In -LSB- Jank94 -RSB- author discusses several transformations between discrete scene and grid represenations . Here we use that one in which grid creation is to put one node point to the middle of each pixel of the input scene and connect those pairs of nodes whose corresponding pairs of pixels share a common edge . The intensity value in each node will remain the same as the intensity value of the corresponding pixel . All connections between pairs of nodes are considered as two oriented arcs each of which is evaluated by one material vector -LRB- see Figure 2 . -RRB- . Since each pixel shares a common edge with four neigbouring pixels , there are four incoming and four outcoming arcs in each node in DG . To avoid redundancy in our data representation we attach to each node only its outcoming arcs . So in each node Pij begin four outcoming arcs which are evaluated by material vectors q q q ij i j ij i j ij i j , , , -LRB- , -RRB- + + + 1 1 1 1 2 , q q q ij i j ij i j ij i j , , , -LRB- , -RRB- - - - 1 1 1 1 2 , q q q ij ij ij ij ij ij , , , -LRB- , -RRB- + + + 1 1 1 1 2 and q q q ij ij ij ij ij ij , , , -LRB- , -RRB- - - - 1 1 1 1 2 . The material vector calculation is performed as a two step process . In the first step all stiffness coefficients and in the second step all reaction coefficients are evaluated . The reason is that reaction coefficients depend on corresponding stiffness coefficients , e. g. reaction of the material depends on its stiffness and compressibility . Step 1 : To evaluate four stiffness coefficients in each node we simply consider its four neigbours and use formula -LRB- 1 -RRB- . Step 2 : The calculation of four reaction coefficients in each node is performed iteratively in all four directions . The iterative process proceeds until the influence of the next node -LRB- its corresponding stiffness coefficients -RRB- is notionless -LRB- less than a small predefined value near to 0 -RRB- which means that no reactive force in material occurs or the influence is so high -LRB- greater than a predefined value close to 1 -RRB- that the reactive force is the same as the introductory one . It is schematically described by the following recursive algorithm CalcReactForce . in which q1 and q2 are stffness and rective coefficients arrays and UpTresh is an up treshold value -LRB- close to 1 - stiffness is very high , e. g. reaction is equal to action -RRB- and DownTresh is a down treshold value -LRB- close to 0 - stiffness is very weak , e. g. no reaction -RRB- . function CalcReactForce : real CalcReactForce -LRB- real reacQ , int indI , int indJ , int moveI , int moveJ -RRB- -LCB- if q1 -LSB- indI -RSB- -LSB- indJ -RSB- -LSB- indI + moveI -RSB- -LSB- indJ + moveJ -RSB- > = UpTresh return reacQ ; else -LCB- reacQ * = q1 -LSB- indI -RSB- -LSB- indJ -RSB- -LSB- indI + moveI -RSB- -LSB- indJ + moveJ -RSB- ; reacQ * = q1 -LSB- indI -RSB- -LSB- indJ -RSB- -LSB- indI + moveI -RSB- -LSB- indJ + moveJ -RSB- ; if reacQ < = DownTresh return 0 ; else return CalcReactForce -LRB- reacQ , indI + moveI , indJ + moveJ , moveI , moveJ -RRB- ; -RCB- -RCB- To calculate four reaction coefficients in node Pij one should perform following fuction callings : q2 -LSB- i -RSB- -LSB- j -RSB- -LSB- i +1 -RSB- -LSB- j -RSB- = CalcReactForce -LRB- 1 , i , j , 1 , 0 -RRB- ; q2 -LSB- i -RSB- -LSB- j -RSB- -LSB- i-1 -RSB- -LSB- j -RSB- = CalcReactForce -LRB- 1 , i , j , -1 , 0 -RRB- ; q2 -LSB- i -RSB- -LSB- j -RSB- -LSB- i -RSB- -LSB- j +1 -RSB- = CalcReactForce -LRB- 1 , i , j , 0 , 1 -RRB- ; q2 -LSB- i -RSB- -LSB- j -RSB- -LSB- i -RSB- -LSB- j-1 -RSB- = CalcReactForce -LRB- 1 , i , j , 0 , -1 -RRB- . P P PP 1 2 3 4 qq 23 32 q21 q34 Figure 3. : Calculation of reaction coefficient for node Pij . 4 . 3 . Select landmarks As stated above selection of landmarks in medical application should be done interactively . If a selected landmark is not a DG node , four surrounding nodes -LRB- in 2D case , eight in 3D case -RRB- are to be identified . Then the position of the landmark is expressed by local barycentric coordinates or by coordinates in a local cartesian coordinate system where change of the point location is calculated by bivariate Bernstein polynomial -LRB- in 2D case , trivariate in 3D case -RRB- -LSB- SePa86 -RSB- . 4 . 4 . Calculate displacement force for each landmark Displacement vectors for selected landmarks are set interactively or calculated from several data sets . According to their lengths , they are obviously divided into shorter segments assigning to each segment equal unit time period to avoid grid arcs crossings . The system is then processed period by period as a time-revolving system . Displacement vector is a basic information for calculation displacement force , e. g. the force which causes the change of the node . Having selected displacement vectors in all landmarks corresponding displacement forces are calculated from the following formulas -LRB- Force law -RRB- F m a m v t fi fi fi = ? = ? -LRB- 4 -RRB- or r F m d P dt ij == 2 2 , -LRB- 5 -RRB- where m is a weigth of a particle , vfi is its velocity and afi is its acceleration and t is a time step . For the simplicity , we will consider all particles have the same weights . After calculating landmark displacement forces the whole process proceeds by spreading them around the initial landmarks to the whole Dynamic Grid . 4 . 5 . Calculate displacement forces for all DG nodes New displacement forces are calculated iteratively around each landmark . That means in the first iteration the landmark is taken as a seed point and forces for four closest neighbours to seed point are calculated . In the next step all previously calculated nodes are taken as seed points and forces for all their previously unconsidered neighbours are calculated . The algorithm proceeds until the amplitiude of resulting force is less then small predefined value . To calculate a displacement force F i j fi +1 in node Pi j +1 from a displacement force F ij fi in node Pij we use following formula F q F q q F q q F i j ij i j ij ij i j ij i j ij ij i j ij i j ij fi + + fi + + fi + + fi = ? - ? ? = - ? ? 1 1 1 1 1 1 2 1 2 1 1 1 , , , , , -LRB- -RRB- . -LRB- 6 -RRB- To calculate displacement vectors from diplacement forces we use formulas -LRB- 4 -RRB- and -LRB- 5 -RRB- , from which follows l F t m = ? 2 . -LRB- 5 -RRB- We present an algorithm SpreadForces which spread forces - calculates dispalcement forces and corresponding displacement vectors for all nodes in DG resulting from one initial landmark displacement vector . Each node in DG has : ?? coordinates -LRB- x , y -RRB- ; ?? four pointers pt1 , pt2 , pt3 , pt4 to neighbouring nodes ; ?? flag -LRB- M , N -RRB- , where M = 0,1,2 indicates how many times node was already visited and N = 0,1,2 indicates whether node was processed -LRB- 0 -RRB- , was processed and is candidate for seed -LRB- 1 -RRB- or was already processed as a seed -LRB- 2 -RRB- ; ?? vector F F F x y fi = -LRB- , -RRB- - displacement force acting in node ; ?? vector L L L x y fi = -LRB- , -RRB- - displacement vector of the node ; Algorithm SpreadForces : S. . . set of actual seed nodes . 1 . For each node set flag to -LRB- 0,0 -RRB- ; 2 . Take initial node ; 3 . For initial node do -LCB- set displacement vector ; calculate displacement force ; set flag to -LRB- 0,1 -RRB- ; put into S ; -RCB- 3 . While there is any node with flag -LRB- . ,1 -RRB- do -LCB- 4 . For each node with flag -LRB- . ,1 -RRB- do -LCB- set flag to -LRB- . ,2 -RRB- ; put into S ; -RCB- 5 . For each seed node s in S do -LCB- 6 . For each of four neighbours of s do -LCB- if neighbour 's flag is -LRB- 0,0 -RRB- calculate force ; if force amplitude is too small set neighbour 's flag to -LRB- 1,2 -RRB- ; otherwise set neighbour 's flag to -LRB- 1,1 -RRB- ; -LRB- 1,1 -RRB- calculate force and make interpolation with existing value ; if force amplitude is too small set neighbour 's flag to -LRB- 2,2 -RRB- ; otherwise set neighbour 's flag to -LRB- 2,1 -RRB- ; -LRB- 1,2 -RRB- do nothing ; -LRB- 2,2 -RRB- do nothing ; / * Remark : other cases causes error - unexpected situation * / -RCB- 7 . remove s from S ; 8 . For each node do -LCB- calculate displacement vector ; -RCB- 8 . End . Since the growth of the algorithm proceedes from one initial landmark outwards with increasing manhattan -LRB- city-block -RRB- distance each node has only two neighbouring nodes with smaller distance from the initial landmark and therefore each node could be processed and visited at most two times -LRB- M = 0,1,2 -RRB- . 4 . 6 . Calculate displacement vectors for all points -LRB- resample distorted grid -RRB- To resample the final distorted grid to the pixel image we use a bilinear interpolation among four known grid nodes and their displacement vectors . 4 . 7 . Output scene Output scene is a 2D pixel image -LRB- 3D voxel scene -RRB- . 5 . SOFTWARE IMPLEMENTATION Graphical interface will be implemented under MSWindows by Visual C++ compiler . Initial and final images will be visualized by AVS . 6 . DISCUSSION Possible anhancements of the preposed model - particles are not the same and have different weights - more coefficients in material vector are possible - in reaction coefficient calculation more neighbour could be included - some test on consistency of the whole system -LRB- arcs crossings -RRB- could be performed . Problems : - mutual influence of initial landmarks , - long initial displacement vector 7 . CONCLUSION 8 . REFERENCES -LSB- Barz92 -RSB- Barzel , R. : Physically-Based Modeling for Computer Graphics : A Structured Approach , Academic Press , Inc. , San Diego , CA , 1992 , 334 p. -LSB- BrHG92 -RSB- Breen , D. E. - House , D. H. - Getto , P. H. : A physically-based particle model of woven cloth , Visual Computer , Vol . 8 , 1992 , pp. 264-277 . -LSB- Jank92 -RSB- Jankovic , V. : Volumetrization - Basic Definitions and Data Structures , Proceedings of the 8th Spring School on Computer Graphics and its Applications , Bratislava , Slovakia , 1992 , pp. 55-65 . -LSB- Jank94 -RSB- Jankovic , V. : Digital Objects , internal research work , Department of Computer Graphics and Image Processing , Faculty of Mathematics and Physics , Comenius University , Bratislava , Slovakia , 1994 . -LSB- SePa86 -RSB- Sederberg , T. W. - Parry , S. R. : Free-Form Deformation of Solid Geometric Models , Computer Graphics , Vol . 20 , No. 4 , 1986 , pp . 151-160 . -LSB- WiFB87 -RSB- Witkin , A. - Fleischer , K. - Barr , A. : Energy Constrains On Parametrized Models , Computer Graphics , Vol . 21 , No. 4 , July 1987 , pp . 225-232 .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

medical imaging
physically-based modeling