Hardware-specific image compression techniques for the animation of CFD data

The visualization and animation of computational fluid dynamics (CFD) data is vital in understanding the varied parameters that exist in the solution field. Scientists need accurate and efficient visualization techniques. The animation of CFD data is not only computationally expensive but also expensive in the allocation of memory, both RAM and disk. Preserving animations of the CFD data visualizations is useful, since recreation of the animation is expensive when dealing with extremely large data structures. Researchers of CFD data may wish to follow a particle trace over an experimental fuselage design, but are unable to retain the animation for efficient retrieval without rendering or consuming a considerable amount of disk space. The spatial image resolution is reduced from 1280 X 1024 to 512 X 480 in going from the workstation format to a video format, therefore, a desire to save these animations on disk results. Saving on disk allows the animation to maintain the spatial and intensity quality of the rendered image and allows the display of the animation at approximately 30 frames/sec, the standard video rate. The goal is to develop optimal image compression algorithms that allow visualization animations, captures as independent RGB images, to be recorded to tape or disk. If recorded to disk, the image sequence is compressed in non-realtime with a technique which allows subsequent decompression at approximately 30 frames/sec to simulate the temporal resolution of video. Initial compression is obtained through mapping RGB colors in each frame to a 12-bit colormap image. The colormap is animation sequence dependent and is created by histogramming the colors in the animation sequence and mapping those colors with relation to specific regions of the L*a*b* color coordinate system to take advantage of the uniform nature of the L*a*b* color system. Further compression is obtained by taking interframe differences, specifically comparing respective blocks between consecutive frames. If no change has occurred within a block a zero is recorded otherwise the entire block containing the 12-bit indices of the colormap is retained. The resulting block differences of the sequential frames in each segment will be saved after huffman coding and run length encoding. Playback of an animation will avoid much of the computations involved with rendering the original scene by decoding and loading the video RAM through the pixel bus. The algorithms will be written to take advantage of the systems hardware, specifically the Silicon Graphics VGX graphics adapter.