📄 changes_from_vm5_0.txt
字号:
CHANGES IN VM5.1 FROM VM5.0
=============================
_____________________________________________________________________________
Changes to Bring Code and Documentation into Agreement
_____________________________________________________________________________
* Corrected initialization for the MQ coder's UNIFORM context state. This
was corrected to bring things into line with the MQ document in the VM (and
also the WD, the JBIG2 documents, etc).
* Made changes to reset the sequence index for error resilience resync
markers to zero whenever a new tile occurs.
* Significant changes to the predictable termination policy used by
`-Cer_term'. These changes were made in order to reduce the implementation
burden on error resilient encoder and decoder implementations without
altering (at least in theory) the resilience to errors.
Corresponding changes were made for the `-Cer' option at the decoder and
slight improvements were made for the estimation of the number of bits at
each termination point. The implementation conforms completely to the
description in the most recent version of the VM text.
* Modified the segment marker mechanism to use the original four bit code
supplied by Sarnoff, as documented in the most recent version of the
VM text.
_____________________________________________________________________________
Changes for Geometric Rectification
_____________________________________________________________________________
* Included code to write, read and respond to the three flag bits required
to signal geometric transformations. This information is passed to the
wavelet synthesis object via the reverse info object's routine which
returns filter taps. Once inside the synthesis object, this information is
used to modify the filter taps appropriately for the desired rectification.
_____________________________________________________________________________
Changes in Rate Control
_____________________________________________________________________________
* Lagrangian Rate Allocation (LRA) has been added to the VM's forward info
object and is switched on with the encoder `-Flra' argument. When LRA is
used, the first rate iteration computes statistics which are used in
remaining iterations to determine step sizes for different wavelet
subbands.
* The default rate controller for TCQ is LRA. However, the the new
`-Fno_lra' switch can be included on the encoder command line in order
to use the binary search rate controller (which dates back to VM3A) with
TCQ.
* Added a tolerance to allow LRA and binary search rate controllers to stop
iterating after the achieved rate is reasonably close to the desired rate.
This tolerance is controlled with the `-low_rate_tol' and `-hi_rate_tol'
options in the main object for vm5_compress.
_____________________________________________________________________________
Changes in Quantization
_____________________________________________________________________________
* The Trellis Coded Quantizer (TCQ) has been added to the VM and is invoked
with the `-Qtcq' encoder argument. This quantizer works best when
bit-planes are not truncated from quantized indices. Therefore, the
`-Qtcq' switch effectively turns on the `-Cno_trunc' switch. To achieve
a desired rate, multiple iterations are used to adjust step sizes.
* As part of the TCQ changes, several minor changes were made to the entropy
coder implementation to guarantee that bit-plane truncation will not
occur if the bit-stream is received completely.
* Complete TCQ dequantization is not possible when bit-planes are lost from
decoded quantized indices. Therefore, an approximate scalar dequantization
process is used for progressive decoding. To signal use of this
approximation technique, the policy spelled out in "ifc.h" regarding the
extra_lsbs of quantized indices is exploited. Slight modifications to this
policy were necessary to be fully operable for TCQ. Thus, the policy in
"ifc.h" has been updated as well as small sections of the hpdz and mask
dequantizers.
_____________________________________________________________________________
Changes to the Global Header of the Bit-Stream
_____________________________________________________________________________
* Several fread() calls were changed to fetch_byte() calls in
"hpbit_stream_in.c". This change should result more accurate counts of
bytes decoded during decompression.
_____________________________________________________________________________
Bug Fixes
_____________________________________________________________________________
* The bug reported by Takahiro Fukuhara was not fixed in the VM5.0 release.
This bug previously resulted in erroneously encoded/decoded imagery when
multiple components of varying resolutions were compressed. This problem
has been fixed in VM5.1.
_____________________________________________________________________________
Implementation Speedup
_____________________________________________________________________________
* Further changes were made to the implementation of the entropy decoder
to increase execution speed. The functions accessed by `-Cno_speedup'
are unchanged and remain the most dydactic implementation. Changes to
increase throughput for the default "speedup" functions focus primarily
on eliminating 16-bit memory accesses, which can be a significant
bottleneck on machines which are designed to work with 32-bit or 64-bit
words. As a rough indication of current execution times, the VM5
decoder implementation is now more than 1.6 times as fast as the
VM4 decoder implementation on a Pentium II platform. With the lazy
mode, it is nearly twice as fast at higher bit-rates and more
than twice as fast (e.g. 2.4 times faster for "bike") in decoding
lossless compressed bit-streams. Similar tricks may be used to speed
up the encoder implementation, but this has not been done in the VM.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -