3D images

JRAMON at mvax.fmed.uam.es JRAMON at mvax.fmed.uam.es
Tue May 18 07:27:00 EST 1993

	Some years ago I was involved in a similar project using espcialized
Image Analysis hardware. The solution was heavily dependent on having
appropriate H/W to be effiecient, but was very elegant.

	However, our experience gave us some important clues that were later
useful in a geographical visualization system.

        In this later case, we had the level lines and wanted a visualiza-
tion good enough to see it as a reproduction of the 'real' topography.
After some trying, what we finally decided was to use a variation of a
shading algorithm.

        What this does is not a 3D reconstruction, but just an attempt to
get a visually pleasurable image:

        1) To do a 3D reconstruction you need another set of level curves
connecting the first set. Then you get a ploygonalization of the space which
describes the object, and now the visualization is easy with almost any
3D package. The need for a second set of lines is because without it, you
could try to connect the curves using a grid, but then many special instances
arise -at least in geographic planes- which can't be handled:

 ----------*   *------
 ----------*    *-----   This area would be plane
 ---------*  **  *----
 --------*  *  *  *---   This, having different level lines would be 3D
 -------*   *   * *---

        This is a trivial example. You could better it by using more complex
grids (hexagonal grids could be better), but you can find always exception
that are difficult to handle.

        Having two sets of orthogonal curves, you can establish the actual
connections (by locating the intersections) and build the 3D model: in the
example above you would see the North of level line 1 connected to the
North of level line 2 and the first area wouldn't be plane. And once poly-
gonalized the object, the problem would be kept to a minumum.

        However, depending on the aspect of your data sets, it may be easier
to build a good 3D representation by using a grid than to obtain a second
set of cuts.

        In our case we had coordinates of points in the level lines that
had been input by hand, and had therefore additional information.In your
case you can try running an octogonal grid through the curves of the planes
selecting the smallest path to a point in the next level line (doing it
in bitmaps is FAST).
        You don't need to draw connection for all points, but only for
selected ones (say one in every ten) since you are pursuing polygons that
later will be shadowed.

        2) Shadowing. If you have a 3D polygonal reconstruction you can use
3D viewing packages to see it in the desired way (e.g. PHIGS-3D/PHIGS+ -which
I must say I find better than GKS3D- or any other).

        3) If you only want to see the level curves as if they were in 3D,
you can modify any shadowing algorithm to do that. This is the solution that
we finally choose for the geographical project. A backtracking quadtree would
allow you to assign pixel colors in an acceptable way, but this can be reduced
to polygonalization using an octogonal grid for all the points in the line.

        We wanted resolution. You may not need so strong constraints and
perhaps could use a wide grid.

        Oops! in this later case, you can better the reconstruction at the
cost of additional CPU time by requiring that any new connection joins two
points at different heights (be they in different level curves or in a
preexisting join).              Just an afterthought!           :-)

        With respect to our code, I beg for not being able to make it
available, since it was developed for a commercial company. but you should
have now various starting points.

	Hope this helps.

			J. R. Valverde
		Biomedical Research Institute
			Madrid - SPAIN

More information about the Bio-soft mailing list