spihtencode3d [-w wavelet] [-b boundary] [-nl num_levels] [-sl spatial_num_levels] [-tl temporal_num_levels] [-dt] [-pt] [-at] [-noac] [-m mask] [-vo] rate icbfile bitstream
spihtdecode3d [-w wavelet] [-b boundary] [-m mask] [-r rate] bitstream icbfile
spihtencode3d codes an image cube, icbfile, using the 3D Set Partitioning In Hierarchical Trees (3D-SPIHT) algorithm by Kim, Pearlman, and Xiong. The 3D-SPIHT algorithm involves a 3D DWT followed by a progressive "bit-plane" coding of the wavelet coefficients using a zerotree-like quantization structure.
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 QccWAVspiht3DEncode(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 -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 -dt, -pt, and -at options determine whether a dyadic, symmetric-packet, or asymmetric-packet zerotree structure is used. If -dt is specified, a dyadic zerotree is used; this is the default when a dyadic transform is specified. On the other hand, -pt and -at are valid options only when a wavelet-packet transform is specified. If -pt is specified, then the "splitting"-based, symmetric-packet zerotree structure described by Kim et al. is used. If -at is specified, then the asymmetric-packet structure described by He et al. and Cho and Pearlman is used. See QccWAVspiht3DEncode(3) for greater detail. spatial_num_levels and temporal_num_levels must be the same when -dt or -pt are used; they may be different when -at is used. In the absence of -dt, -pt, or -at, the default behavior is to use a dyadic zerotree in the case of a dyadic transform, and an asymmetric-packet zerotree in the case of a wavelet-packet transform.
The desired bitrate of the output bitstream is specified by rate, which is expressed in bits per voxel of the original image. spihtencode3d 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.
The 3D-SPIHT algorithm normally uses arithmetic coding of symbols as a final output step to improve coding efficiency. Alternatively, arithmetic coding can be suppressed, producing what is called "binary-uncoded" output. spihtencode3d supports both arithmetic-coded and binary-uncoded output modes. If option -noac is specified, no arithmetic coding is used (i.e., binary-uncoded output). Otherwise, the output is arithmetic-coded.
spihtdecode3d performs the corresponding decoding using the 3D-SPIHT algorithm, decoding the bitstream made by spihtencode3d and producing a reconstructed image cube, icbfile. For sane results, wavelet and boundary should be the same as they were for spihtencode3d, and mask should be the same if an SA-DWT was used as the transform. spihtdecode3d automatically determines whether arithmetic decoding is needed or not. If a decoding rate is specified with the -r option, then spihtdecode3d 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.
spihtencode3d and spihtdecode3d call QccWAVspiht3DEncode(3) and QccWAVspiht3DDecode(3) , respectively, to perform 3D-SPIHT encoding and decoding. Refer to the man pages for these functions for more information on the details of the QccPack implementation of the 3D-SPIHT algorithm.
B.-J. Kim, Z. Xiong, and W. A. Pearlman, "Low Bit-Rate Scalable Video Coding with 3-D Set Partitioning in Hierarchical Trees (3-D SPIHT)," IEEE Transactions on Circuits and Systems for Video Technology, vol. 10, no. 8, pp. 1374-1387, December 2000.
B.-J. Kim and W. A. Pearlman, "An Embedded Wavelet Video Coder Using Three-Dimensional Set Partitioning in Hierarchical Trees (SPIHT)," in Proceedings of the Data Compression Conference, J. A. Storer and M. Cohn, Eds., Snowbird, UT, March 1997, pp. 251-257.
A. Said and W. A. Pearlman, "A New, Fast, and Efficient Image Codec Based on Set Partitioning in Hierarchical Trees," IEEE Transactions on Circuits and Systems for Video Technology, vol. 6, no. 3, pp. 243-250, June 1996.
C. He, J. Dong, Y. F. Zheng, and Z. Gao, "Optimal 3-D Coefficient Tree Structure for 3-D Wavelet Video Coding," IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, no. 10, pp. 961-972, October 2003.
S. Cho and W. P. Pearlman, "Error Resilient Video Coding With Improved 3-D SPIHT and Error Concealment," in Image and Video Communications and Processing, B. Vasudev, T. R. Hsing, and A. G. Tescher, Eds., Santa Clara, CA, January 2003, Proc. SPIE 5022, pp. 125-136
G. Minami, Z. Xiong, A. Wang, and S. Mehrota, "3-D Wavelet Coding of Video With Arbitrary Regions of Support," IEEE Transactions on Circuits and Systems for Video Technology, vol. 11, no. 9, pp. 1063-1068, September 2001.
S. Li and W. Li, "Shape-Adaptive Discrete Wavelet Transforms for Arbitrarily Shaped Visual Object Coding," IEEE Transactions on Circuits and Systems for Video Coding, vol. 10, pp. 725-743, August 2000.