18480565
Volumes of expression: artistic modelling and rendering of volume datasets
This paper presents the design and implementation of artistic effects in modelling and rendering of volume datasets. Following different stages of a volume-based graphics pipeline, we examine various properties of volume data, and illustrate how expressive and non-photorealistic effects can be implemented. We demonstrate that the true 3D nature of volume data makes it particularly applicable for this use, allowing the addition of complex effects at the modelling stage as well as during rendering.
22331464
Vector-City Vector Distance Transform
This paper will examine the current chamfer and vector distance transforms for encoding objects as distance fields. A new vector distance transform is introduced which uses the city-block chamfer distance transform as a basis. Detailed error analysis using real CT data is presented, demonstrating the improved accuracy of the new approach over existing methods. The production of a subvoxel accurate distance field is also demonstrated by employing an improved classification. Distance fields are shown for skull and chess piece datasets.
13294915
Voxelisation: Modelling for Volume Graphics
Voxelisation is the term given to the process of converting data from one source type into a three dimensional volume of data values. The techniques known collectively as volume visualisation can then be applied to the data in order to produce a graphical representation of the object. This paper gives a new practical approach to the voxelisation of data which fills the entire volume. Its use is demonstrated on various datasets such as triangular mesh objects, CT data, and objects defined by trivariate functions.
9085764
Distance Field Compression
This paper compares various techniques for compressing floating point distance fields. Both lossless and lossy techniques are compared against a new lossless technique. The new Vector Transform technique creates a predictor based upon a Vector Distance Transform and its suitability for distance field data sets is reported. The new technique produces a lossless encoding at a third of the file size of entropy encoders, and equivalent to lossy wavelet transforms, where around 75% of the coefficients have been set to zero. The algorithm predicts each voxel value linearly based upon two previous voxels chosen from one of 13 directions which have been previously computed. Those that cannot be predicted are explicitly stored.
153985
Facial Reconstruction Using Volumetric Data
In this paper we demonstrate computer aided techniques in the area of the reconstruction of facial features from skeletal remains. We outline the desired features of a system for skull identification, and demonstrate our progress in the area which builds upon our previous work on distance fields for volumetric data. In addition to the application we demonstrate an accurate 3D closing operator in practise on large data sets, cross correlation for automatic feature detection, and the current output from the technique which uses a 2D warp of the 3D distance field.
10888216
Hypertexturing complex volume objects
This paper will examine hypertexture rendering techniques and will demonstrate how volume data sets may be adapted in order for hypertexture to be applied. Details are given of a process for the conversion of complex objects, such as CT scans, into accurate distance fields. Hypertexture is applied to these objects and example renderings include the UNC CThead, a chess piece, a dodecahedron and a tank. Additional information is given about soft objects, density modulation functions, ray marching and controlling hypertexture application.
12891588
Implementing type classes
We describe the implementation of a type checker for the functional programming language Haskell that supports the use of type classes. This extends the type system of ML to support overloading (ad-hoc polymorphism) and can be used to implement features such as equality types and numeric overloading in a simple and general way.
The theory of type classes is well understood, but the practical issues involved in the implementation of such systems have not received a great deal of attention. In addition to the basic type checking algorithm, an implmenentation of type classes also requires some form of program transformation. In all current Haskell compilers this takes the form of dictionary conversion, using functions as hidden parameters to overloaded values. We present efficient techniques for type checking and dictionary conversion. A number of optimizations and extensions to the basic type class sytems are also described.
12155836
Using parameterized signatures to express modular structure
Module systems are a powerful, practical tool for managing the complexity of large software systems. Previous attempts to formulate a type-theoretic foundation for modular programming have been based on existential, dependent, or manifest types. These approaches can be distinguished by their use of different quantifiers to package the operations that a module exports together with appropriate implementation types. In each case, the underlying type theory is simple and elegant, but significant and sometimes complex extensions are needed to account for features that are important in practical systems, such as separate compilation and propagation of type information between modules.This paper presents a simple type-theoretic framework for modular programming using parameterized signatures. The use of quantifiers is treated as a necessary, but independent concern. Using familiar concepts of polymorphism, the resulting module system is easy to understand and admits true separate compilation. It is also very powerful, supporting high-order, polymorphic, and first-class modules without further extension.
39264003
HyperAT: HCI and Web Authoring
We review HCI problems with hypertext, and for authoring World Wide Web documents in particular. We suggest that a framework is required to understand the usability issues, and that these issues cannot be seen as psychological or computing: they are multi-disciplinary. We discuss HyperAT, a protorype authoring tool, being implemented to test these ideas.
6608650
Dictionary-free overloading by partial evaluation
One of the most novel features in the functional programming language Haskell is the system oftype classes used to support a combination of overloading and polymorphism. Current implementations of type class overloading are based on the use ofdictionary values, passed as extra parameters to overloaded functions. Unfortunately, this can have a significant effect on run-time performance, for example, by reducing the effectiveness of important program analyses and optimizations.This paper describes how a simple partial evaluator can be used to avoid the need for dictionary values at run-time by generating specialized versions of overloaded functions. This eliminates the run-time costs of overloading. Furthermore, and somewhat surprisingly given the presence of multiple versions of some functions, for all of the examples that we have tried so far, specialization actually leads to a reduction in the size of compiled programs.
15051631
Type Classes with Functional Dependencies
Type classes in Haskell allow programmers to define functions that can be used on a set of different types, with a potentially different implementation in each case. For example, type classes are used to support equality and numeric types, and for monadic programming. A commonly requested extension to support 'multiple parameters' allows a more general interpretation of classes as relations on types, and has many potentially useful applications. Unfortunately, many of these examples do not work well in practice, leading to ambiguities and inaccuracies in inferred types and delaying the detection of type errors. 
 
This paper illustrates the kind of problems that can occur with multiple parameter type classes, and explains how they can be resolved by allowing programmers to specify explicit dependencies between the parameters. A particular novelty of this paper is the application of ideas from the theory of relational databases to the design of type systems.