2D Outlines to 3D Surface or Solid

*To*: mathgroup at smc.vnet.net*Subject*: [mg27309] 2D Outlines to 3D Surface or Solid*From*: "John C. Erb, Ph.D." <John_C_Erb at prodigy.net>*Date*: Tue, 20 Feb 2001 03:05:18 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

Monday, Feb 19, 2001 Using a series of CT images, I have made outlines of an area (volume) of interest as imaged on each slice. I would like to use these 2D outlines to make a 3D surface (or solid), so I can view the volume of interest in 3D space. In my simplified example below, the outline is given by the x-y coordinates, while the z coordinate is the CT slice coordinate. I have tried several plotting routines from the ExtendGraphics by Tom Wickham-Jones, but I have not gotten satisfactory results. Any help or hints would be appreciated. Here is an Mathematica notebook example of my 2D outlines. Thanks, John C. Erb email: John_C_Erb at prodigy.net ================================================================= (* 2D OUTLINES TO 3D SURFACE NOTEBOOK *) (* The outlines from 4 CT slices; z = 0.5 for the first slice, z = 1.0 for the 2nd, z = 1.5 for the 3rd, and z = 2.0 for the 4th *) (* NOTE : the outlines do not have the same number of points, and are not regularly - spaced; this is as one would get when digitizing the outlines on each CT slice *) outline05 = {{1.02259, -.00956469, .5}, {1.09041, .419046, .5}, {.822027, .687822, .5}, {.367525, .619458, .5}, {.132308, .831539, .5}, {-.191121, 1.1554, .5}, {-.446603, .725824, .5}, {-.647789, .576269, .5}, {-1.09434, .365993, .5}, {-.973041, -.017658, .5}, {-.945262, -.350991, .5}, {-.964632, -.807709, .5}, {-.59685, -1.05634, .5}, {-.169448, -.905903, .5}, {.16231, -1.0699, .5}, {.410886, -.688971, .5}, {.64615, -.564, .5}, {1.16262, -.403277, .5}}; outline10 = {{1.74412, -.0604528, 1}, {1.34186, .662489, 1}, {1.08653, 1.22486, 1}, {.536761, 1.83872, 1}, {-.353659, 1.79741, 1}, {-1.03225,1.56513, 1}, {-1.61105, .919901, 1}, {-1.80524, .170477,1}, {-1.58627, -.535454, 1}, {-1.41569, -1.33271, 1}, {-.654148, -1.73365, 1}, {.183023, -1.91315,1}, {.844769, -1.37113, 1}, {1.52438, -1.02213, 1}}; outline15 = {{2.246, .0740504, 1.5}, {1.8566, .790883, 1.5}, {1.56557, 1.57265, 1.5}, {.965046, 2.09787, 1.5}, {.0319292, 2.39405,1.5}, {-.744443, 1.95951, 1.5}, {-1.33884, 1.4973,1.5}, {-1.69596, .796889, 1.5}, {-1.80942, .0758934,1.5}, {-2.10507, -.751449, 1.5}, {-1.60214, -1.4175,1.5}, {-1.06342, -2.01603, 1.5}, {-.200747, -1.91514, 1.5}, {.445451, -1.75928, 1.5}, {1.11485, -1.49995, 1.5}, {1.6223, -.898397, 1.5}}; outline20 = {{1.28354, -.017042, 2}, {.958306, .319781, 2}, {1.17057, .946501, 2}, {.632935, 1.104, 2}, {.185354, 1.20054, 2}, {-.223106, 1.53972,2}, {-.626283, 1.16136, 2}, {-.938092, .755577, 2}, {-.994709, .397014, 2}, {-1.2296, -.0169814, 2}, {-1.35325, -.48035, 2}, {-.871178, -.777721, 2}, {-.536557, -.868083, 2}, {-.263207, -1.33135, 2}, {.198485, -1.38556, 2}, {.700171, -1.15322, 2}, {1.03564, -.925754, 2}, {1.30896, -.478603, 2}}; (* Merge the outlines into one list *) newnewkontours = {outline05, outline10, outline15, outline20} (* Load the Graphics3D package *) Needs["Graphics`Graphics3D`"]; (* Do a 3D Scatter Plot of the first outline only *) ScatterPlot3D[newnewkontours[[1]], PlotJoined -> True]; (* Do a 3D Scatter Plot of all 4 outlines *) g = Table[0, {i, Length[newnewkontours]}]; Do[ g[[i]] = ScatterPlot3D[newnewkontours[[i]], PlotJoined -> True, DisplayFunction -> Identity];, {i, Length[g]}]; Show[g, DisplayFunction -> $DisplayFunction]; (* Display of 2D Outlines in 3D Space using polygons *) Show[Graphics3D[Map[Polygon[#] &, newnewkontours]]]; (* Now make a 3D surface, or solid, of the outlines *) ========================================================================