cjpegl <outext><imagefile>
[ -raw_in w,h,d, [ppi] [-nonintrlv ]
[-YCbCr H0,V0:H1,V1:H2,V2]] [commentfile]
Cjpegl takes as input a file containing an uncompressed grayscale or color image. Two possible input file formats are accepted, NIST IHead files and raw pixmap files. If a raw pixmap file is to be compressed, then its image attributes must be provided on the command line as well. Once read into memory, the grayscale or color pixmap is then compressed using Lossless JPEG (JPEGL). The JPEGL results are then written to an output file.
The color components of RGB pixels in a raw pixmap file may be interleaved or non-interleaved. By default, cjpegl assumes interleaved color pixels. In fact cjpegl's internal encoder requires non-interleaved components planes; therefore, interleaved pixmaps are automatically converted prior to encoding and results are stored accordingly. (See INTERLEAVE OPTIONS below.)
Cjpegl also supports the compression of raw pixmap files containing YCbCr images with potentially downsampled component planes. By default, this utility assumes no downsampling of component planes. (See YCbCr OPTIONS below.) Regarding color pixmaps, the NIST IHead file format only supports interleaved RGB images.
All switch names may be abbreviated; for example, -raw_in may be written -r.
the extension of the compressed output file. To construct the output filename, cjpegl takes the input filename and replaces its extension with the one specified here.
the input file, either an IHead file or raw pixmap file, containing the grayscale or color image to be compressed.
the attributes of the input image. This option must be included on the command line if the input is a raw pixmap file.
the pixel width of the pixmap
the pixel height of the pixmap
the pixel depth of the pixmap
the optional scan resolution of the image in integer units of pixels per inch.
specifies that the color components in an input raw pixmap file image are non-interleaved and stored in separate component planes. (See INTERLEAVE OPTIONS below.)
denotes an input raw pixmap file containing a YCbCr colorspace image and whether any component planes have been previously downsampled. H,V factors all set to 1 represent no downsampling. (See YCbCr Options below.)
an optional user-supplied ASCII comment file. (See COMMENT OPTIONS below.)
The color components of RGB pixels in a raw pixmap file may be interleaved or non-interleaved. Color components are interleaved when a pixel's (R)ed, (G)reen, and (B)lue components are sequentially adjacent in the image byte stream, ie. RGBRGBRGB... . If the color components are non-interleaved, then all (R)ed components in the image are sequentially adjacent in the image byte stream, followed by all (G)reen components, and then lastly followed by all (B)lue components. Each complete sequence of color components is called a plane. The utilities intr2not and not2intr convert between interleaved and non-interleaved color components. By default, cjpegl assumes interleaved color components, and all color IHead images must be interleaved. Note that cjpegl's internal encoder requires non-interleaved component planes; therefore, interleaved pixmaps are automatically converted prior to encoding and results are stored accordingly.
Cjpegl compresses color images with 3 components per pixel, including RGB and YCbCr colorspaces. A common compression technique for YCbCr images is to downsample the Cb & Cr component planes. Cjpegl supports a limited range of YCbCr downsampling schemes that are represented by a list of component plane factors. These factors together represent downsampling ratios relative to each other. The comma-separated list of factor pairs correspond to the Y, Cb, and Cr component planes respectively. The first value in a factor pair represents the downsampling of that particular component plane in the X-dimension, while the second represents the Y-dimension. Compression ratios for a particular component plane are calculated by dividing the maximum component factors in the list by the current component's factors. These integer factors are limited between 1 and 4. H,V factors all set to 1 represent no downsampling. For complete details, cjpegl implements the downsampling and interleaving schemes described in the following reference:
W.B. Pennebaker and J.L. Mitchell, "JPEG: Still Image Compression Standard," Appendix A - "ISO DIS 10918-1 Requirements and Guidelines," Van Nostrand Reinhold, NY, 1993, pp. A1-A4.
For example the option specification:
-YCbCr 4,4:2,2:1,1
represents a YCbCr image with non-downsampled Y component plane (4,4 are the largest X and Y factors listed); the Cb component plane is downsampled in X and Y by a factor of 2 (maximum factors 4 divided by current factors 2); and the Cr component plane is downsampled in X and Y by a factor of 4 (maximum factors 4 divided by current factors 1). Note that downsampling component planes is a form of lossy compression, so while cjpegl enables the image byte stream associated with an input YCbCr image to be reconstructed perfectly, if any of its component planes were previously downsampled, then image loss has already taken place. The utility rgb2ycc converts an RGB image to the YCbCr colorspace, and it will conduct component plane downsampling as specified. Note that IHead images can only have RGB color components, so YCbCr options only pertain to raw pixmap files.
Upon successful compression, this utility generates and inserts in the compressed output file a specially formatted comment block, called a NISTCOM. A NISTCOM is a text-based attribute list comprised of (name, value) pairs, one pair per text line. The first line of a NISTCOM always has name = "NIST_COM" and its value is always the total number of attributes included in the list. The utility rdjpgcom scans a JPEG compressed file for any and all comment blocks. Once found, the contents of each comment block is printed to standard output. Using this utility, the NISTCOM provides easy access to relevant image attributes. The following is an example NISTCOM generated by cjpegl:
NIST_COM 11 PIX_WIDTH 768 PIX_HEIGHT 1024 PIX_DEPTH 24 PPI -1 LOSSY 0 NUM_COMPONENTS 3 HV_FACTORS 1,1:1,1:1,1 INTERLEAVE 0 COMPRESSION JPEGL JPEGL_PREDICT 4
Cjpegl also accepts an optional comment file on the command line. If provided, the contents of this file are also inserted into the compressed output file. If the comment file is a NISTCOM attribute list, then its contents are merged with the NISTCOM internally generated by cjpegl and a single NISTCOM is written to the compressed output file. Note that cjpegl gives precedence to internally generated attribute values. If the user provides a non-NISTCOM comment file, then the contents of file are stored to a separate comment block in the output file. Using these comment options enables the user to store application-specific information in a JPEG file.
From test/imgtools/execs/cjpegl/cjpegl.src:
% cjpegl jpl face.raw -r 768,1024,24 compresses a color face image in a raw pixmap file.