File: jpeg.1

package info (click to toggle)
pvrg-jpeg 1.2.1%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 868 kB
  • sloc: ansic: 15,309; lex: 2,562; makefile: 51
file content (240 lines) | stat: -rw-r--r-- 7,284 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
.TH PVRG\-JPEG 1 "14 June 1993"
.UC 4
.SH NAME
pvrg\-jpeg \- JPEG compression and decompression
.SH SYNOPSIS
.B
pvrg\-jpeg \-iw ImageWidth \-ih ImageHeight [\-JFIF] [\-q(l) Q\-Factor]
.B
     [\-a] [\-b] [\-d] [\-k predictortype] [\-n] [\-O] [\-y] [\-z] [\-g]
.B
     [\-p PrecisionValue] [\-t pointtransform]
.B
     [\-r ResyncInterval] [\-s StreamName] [\-o OutBaseName]
.B
     [[\-ci ComponentIndex1] [\-fw FrameWidth1] [\-fh FrameHeight1]
.B
      [\-hf HorizontalFrequency1] [\-vf VerticalFrequency1]
.B
      ComponentFile1]
.B
     [[\-ci ComponentIndex2] [\-fw FrameWidth2] [\-fh FrameHeight2]
.B
      [\-hf HorizontalFrequency2] [\-vf VerticalFrequency2]
.B
      ComponentFile2]
.B
     ....
.br
.SH DESCRIPTION
.I pvrg\-jpeg
is a still\-image compression/decompression program that performs
JPEG encoding and decoding of multiple raster\-scanned files.
.PP
These ``raster\-scanned files'' are basically PGM (portable graymap) files
without the PGM header. A typical JPEG image is made of three of these
files representing the Y, Cr, and Cb color channels. Usually the Y (lumience)
channel is full size, while the two chroma channels are half width and
half height. But no particular channel really needs to be full size, so
.I pvrg\-jpeg
will need to know the dimensions of the original image when creating jpegs.
.PP
.SH OPTIONS
.TP
.B ImageWidth
specifies the width of the original image. This should correspond to
the width of the widest component and, thus, the width of the
``original image''. All components have widths roughly corresponding
to an integer decimation ratio from this specification.
.br
.TP
.B ImageHeight
specifies the height of the tallest component. This
corresponds to the height of the ``original image''.
.TP
.B \-JFIF
specifies that a JFIF header is placed on the encoded stream.  This is
unnecessary for decoding.
.TP
.B Q\-Factor
option specifies a multiplicative factor for the quantization: each
quantization coefficient of the default matrix is scaled by
(Q\-Factor/50). A Q\-Factor of 0 is the same thing as a Q\-Factor of 50
because it disables this function. 
.B \-q
specifies an 8 bit
quantization matrix;
.B \-ql
specifies a 16 bit quantization matrix,
useful for 12 bit data.
.TP
.B \-a
enables the double\-precision floating point Reference DCT.  (Default
is Chen DCT.)
.TP
.B \-b
enables the Lee DCT.  (Default is Chen DCT.)
.TP
.B \-d
enables decoding.  See below.
.TP
.B \-g
This option will put PGM headers on output files when decoding.
.TP
.B \-k predictortype
The lossless predictor type, specified as an integer between 1\-7. 
If specified, then lossless mode is used.
.TP
.B \-n
This option specifies that the files should not be transmitted in
interleaved format.
.TP
.B \-o OutBaseName
This will use specified string as a base name for output files when decoding.
.TP
.B \-O
signals that the command interpreter will read from the standard
input.
.TP
.B \-p
Specifies the precision.  Normally should be between 2\-16 for
lossless; 8 or 12 for DCT.  If it is specified as a number greater
than 8 then the input is considered to be unsigned shorts (16 bits,
msb first). Not aggressively checked.
.TP
.B \-s JPEGStreamName
When encoding, this will be used as the output file. When decoding, this
will be used as the input file.
.TP
.B \-t pointtransform
Specifies the shifting (right) upon loading input and shifting (left)
upon writing input.  Generally used by the lossless mode only.  Can
be used by the DCT mode to add or subtract bits.
.TP
.B \-y
for decoding only, signals that 
.I no
resynchronization is enabled,
thus ignore any markers found in the data stream.
.TP
.B \-z
enables use of default Huffman tables. This converts the coding from a
two\-pass system using the first pass to generate custom tables to a
one\-pass system using internal default tables. With this option, the
compression speed is nearly doubled, but because the internal tables
are not custom to the image, the compressed file size increases
slightly.
.TP
.B ResyncInterval
specifies a resync (restart)
interval for the input file\-\-if set to 0 (default), resynchronization
is disabled; otherwise it signifies the number of MDU
between a resync marker.
.TP
.B StreamName
is the place to  load(decoder)/store(encoder)
the coded image\-\-if unspecified it defaults to
.B ComponentFile1.jpg.

.br
For every component in the image we have:

.TP
.B
ComponentIndex
describes the component index where the file data should be associated
with.  The possible values are between 0 and 255.  As a rule Y is in
1; U is in 2; V is in 3.  The file specfications, if left undisturbed,
will result in component location of 1 for the first component file, 2
for the second component file, and so on.  If 
.B \-ci
is specified for the
previous component file, then the next component index defaults to the
previous component index plus 1.
.TP
.B FrameWidth
describes the actual width of the component. This should be
determinable by the size of the original image (ImageHeight and
ImageWidth) and the frequency sampling of that component.
This program assumes that the sampling component will be round
.I up
to the nearest integer and other programs may not
necessarily follow that convention, we allow precise specification of
the FrameWidth.  The program will notify the user if the
framewidth and frameheight specifications do not correspond to
a logical MDU pattern and thus will refuse to take the input
(in fact, sometimes rounding down will not result in a logical MDU pattern).
.TP
.B FrameHeight
describes the actual height of the component. Multiplied together with
FrameWidth, this should equal the file size of the component.  See the
above discussion on the actual specification.
.TP
.B Hor\-Frequency
specifies the block sampling frequency of
the component in the horizontal direction for every MDU transmitted.
.TP
.B Ver\-Frequency
specifies the block sampling frequency of
the component in the vertical direction. When multiplied together with
the Horizontal frequency, it corresponds to the number of blocks of
that component in the MDU.
.TP
.B
ComponentFile\fIn\fR
represents the directory path location of the \fIn\fRth component file.
.PP
.SH EXAMPLES
In order to encode a set of raster\-scanned files:
128x128 in
.B image.Y;
64x128 in
.B image.U;
and 64x128 in
.B image.V
into the file
.B image.jpg,
the command is

.br
.B
pvrg\-jpeg \-iw 128 \-ih 128  \-hf 2 image.Y image.U image.V \-s image.jpg
.br

In order to decode a compressed file in
.B image.jpg,
type

.br
.B
pvrg\-jpeg \-d \-s image.jpg
.br

The three output files will be in
.B
image.jpg.1 image.jpg.2 image.jpg.3.
The images can be displayed by the
.I cv
program.
The images can also be converted to ppm and back through
the programs
.I cyuv2ppm
and 
.I ppm2cyuv
Those utility programs available by anonymous ftp from
.I havefun.stanford.edu:pub/cv/CVv1.2.1.tar.Z.
.br
There are many more options within an internal command interpreter.
Please see the accompanying documentation in
.I doc.ps
for more details.
.PP
.SH BUGS
Somewhat slower than many commercial implementations,
some bugs are probably lurking around.
Lossless coding and decoding are especially slow.
This program can produce jpeg files that other programs cannot understand.
.PP
.SH AUTHOR
.PP
Andy Hung