×

Bi-level iso-surface compression

  • US 7,847,799 B2
  • Filed: 03/27/2007
  • Issued: 12/07/2010
  • Est. Priority Date: 07/31/2002
  • Status: Active Grant
First Claim
Patent Images

1. A method comprising an out-of-core isosurface decoder process producing a set of oriented points as a surface representation, the process comprising:

  • receiving as input;

    compressed isosurface data generated by an isosurface encoder process;

    a three-dimensional grid used to define function values of a scalar function of an approximate isosurface, said three-dimensional grid comprising a plurality of grid vertices and grid edges, wherein each intersecting grid edge comprises two edge ends, the edge ends being grid nodes, the grid nodes being neighbors in the three-dimensional grid, with occupancy bits of an occupancy image corresponding to the grid nodes;

    wherein the occupancy bit values are a function of the three-dimensional grid, the scalar function and an isolevel, with one quantized scalar value per intersecting grid edge; and

    intersection points and intersection point surface normals;

    decoding the occupancy image, the intersection points, and the intersection point surface normals by scanning the volume data-in scan order;

    wherein for each grid vertex there are exactly three other grid vertices, which are neighbors of the grid vertex and precede the grid vertex in the scan order;

    reconstructing a geometry of the surface representation from a location of the intersection points and the intersection point normals;

    using an out-of-core isosurface decoder process for producing the set of oriented points as a surface representation, and the decoder process generates at least one oriented point;

    constructing a current context word by combining occupancy bits corresponding to grid vertices previously visited;

    decoding a current occupancy bit from an occupancy image record of the compressed isosurface data with respect to the current context;

    comparing the current occupancy bit with the occupancy bit corresponding to the previously visited neighbor grid vertex to determine if an intersection point exists along the edge connecting the current grid vertex and the previously visited grid vertex;

    determining the location of the intersection point along the edge if the occupancy bit values are different;

    deriving a normalized intersection point parameter;

    determining a normal vector corresponding to the intersection point parameter;

    deriving an intersection point normal vector;

    performing an additional geometry smoothing step to improve a quality of the reconstructed surface representation;

    generating one oriented point after decoding and reconstructing each intersection point and corresponding normal vector; and

    reconstructing an isosurface polygon mesh from an occupancy image, comprising steps of;

    taking compressed surface data as input and producing surface data as output, said mesh having mesh connectivity and a substantial first proportion of geometric information encoded to a fraction of a bit per Marching Cubes vertex with a context based arithmetic coder, andhaving any remaining second proportion of geometric information in the form of one quantized scalar value per intersecting grid edge, and specifying the location of the corresponding Marching Cubes vertex more precisely in scan-order.

View all claims
  • 3 Assignments
Timeline View
Assignment View
    ×
    ×