tarpencode3d [-w wavelet] [-b boundary] [-nl num_levels] [-sl spatial_num_levels] [-tl temporal_num_levels] [-a alpha] [-m mask] [-vo] rate icbfile bitstream
tarpdecode3d [-w wavelet] [-b boundary] [-m mask] [-r rate] bitstream icbfile
tarpencode3d codes an image cube, icbfile, using the 3D tarp algorithm by Wang et al. The 3D tarp algorithm involves a 3D DWT followed by a progressive "bit-plane" coding of the wavelet coefficients using a Parzen-window technique to estimate probability of significance and nonadaptive arithmetic coding to code significance-map and refinement information.
The transform is either the usual discrete wavelet transform (DWT) or a shape-adaptive DWT (SA-DWT) and can be either a dyadic or wavelet-packet decomposition; see QccWAVTarp3DEncode(3) for complete details. Option -w specifies the wavelet, option -b specifies the boundary extension. The -m option gives the image-cube file to be used as a transparency mask for the SA-DWT. mask must be a grayscale image cube in which black in this image cube indicates transparency, white indicates full opacity, and gray tones are degrees of translucence (see QccAlpha(3) ). If the -m option is not given, the usual, full-volume DWT is used.
The alpha parameter, the learning rate of the tarp-filter process, is specified with the -a option.
The -nl, -sl, and -tl options determine whether a dyadic or wavelet-packet transform is used. If -nl is specified, a dyadic transform is used. In this case, num_levels is the number of decompositions in all three directions. If either -sl or -tl, or both, is specified, a wavelet-packet transform is used. In this case, spatial_num_levels and temporal_num_levels give the number of decompositions spatially and temporally, respectively, of the packet transform. If only one of -sl and -tl is given, then the same number of decompositions is used spatially and temporally. In the case that none of -nl, -sl, and -tl is specified, then a dyadic decomposition with the default value of num_levels is used.
The desired bitrate of the output bitstream is specified by rate, which is expressed in bits per voxel of the original image. tarpencode3d normally prints to stdout a small amount of information concerning this target bitrate and the actual bitrate achieved. Usually these rates are identical, but may differ slightly. If the -vo (value-only) option is given, all printed output is suppressed except for the actual bitrate.
tarpdecode3d performs the corresponding decoding using the 3D tarp algorithm, decoding the bitstream made by tarpencode3d and producing a reconstructed image cube, icbfile. For sane results, wavelet and boundary should be the same as they were for tarpencode3d, and mask should be the same if an SA-DWT was used as the transform. If a decoding rate is specified with the -r option, then tarpdecode3d stops decoding when rate bits per voxel from the input bitstream have been decoded. Otherwise, decoding stops when the end of the input bitstream is reached.
tarpencode3d and tarpdecode3d call QccWAVTarp3DEncode(3) and QccWAVTarp3DDecode(3) , respectively, to perform 3D tarp encoding and decoding. Refer to the man pages for these functions for more information on the details of the QccPack implementation of the 3D tarp algorithm.
Y. Wang, J. T. Rucker, and J. E. Fowler, "Embedded Wavelet-Based Compression of Hyperspectral Imagery Using Tarp Coding," in Proceedings of the International Geoscience and Remote Sensing Symposium, Toulouse, France, July 2003, vol. 3, pp. 2027-2029.
P. Simard, D. Steinkraus, and H. Malvar, "On-Line Adaptation in Image Coding with a 2-D Tarp Filter", in Proceedings of the IEEE Data Compression Conference, J. A. Storer and M. Cohn, Eds., Snowbird, UT, April 2002, pp. 422-431.