137 lines
5.8 KiB
Plaintext
137 lines
5.8 KiB
Plaintext
===============================================================================
|
|
JPEG2000 Part 11 (ISO/IEC 15444-11 JPWL) Software
|
|
|
|
|
|
|
|
Version 20061213
|
|
===============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
1. Scope
|
|
=============
|
|
|
|
This document describes the installation and use of the JPWL module in the framework of OpenJPEG library.
|
|
|
|
This implementation has been developed from OpenJPEG implementation of JPEG2000 standard, and for this reason it is written in C language.
|
|
|
|
If you find some bugs or if you have problems using the encoder/decoder, please send an e-mail to jpwl@diei.unipg.it
|
|
|
|
|
|
2. Installing the code
|
|
==========================
|
|
|
|
The JPWL code is integrated with the standard OpenJPEG library and codecs: it is activated by setting the macro USE_JPWL to defined in the preprocessor configuration options of your preferred C compiler.
|
|
|
|
2.1. Compiling the source code in Windows
|
|
-------------------------------------------
|
|
|
|
The "jpwl" directory is already populated with a couple of Visual C++ 6.0 workspaces
|
|
|
|
* JPWL_image_to_j2k.dsw - Creates the encoder with JPWL functionalities
|
|
* JPWL_j2k_to_image.dsw - Creates the decoder with JPWL functionalities
|
|
|
|
2.2. Compiling the source code in Unix-like systems
|
|
-----------------------------------------------------
|
|
|
|
The code has been proven to compile under Linux and MacOS X.
|
|
|
|
|
|
3. Running the JPWL software
|
|
=========================
|
|
|
|
The options available at the command line are exactly the same of the base OpenJPEG codecs. In addition, there is a "-W" switch that activates JPWL functionalities.
|
|
|
|
3.1. JPWL Encoder
|
|
-------------------
|
|
|
|
-W : adoption of JPWL (Part 11) capabilities (-W params)
|
|
The parameters can be written and repeated in any order:
|
|
[h<tile><=type>,s<tile><=method>,a=<addr>,z=<size>,g=<range>,...
|
|
...,p<tile:pack><=type>]
|
|
|
|
h selects the header error protection (EPB): 'type' can be
|
|
[0=none 1,absent=predefined 16=CRC-16 32=CRC-32 37-128=RS]
|
|
if 'tile' is absent, it applies to main and tile headers
|
|
if 'tile' is present, it applies from that tile
|
|
onwards, up to the next h<tile> spec, or to the last tile
|
|
in the codestream (max. 16 specs)
|
|
|
|
p selects the packet error protection (EEP/UEP with EPBs)
|
|
to be applied to raw data: 'type' can be
|
|
[0=none 1,absent=predefined 16=CRC-16 32=CRC-32 37-128=RS]
|
|
if 'tile:pack' is absent, it starts from tile 0, packet 0
|
|
if 'tile:pack' is present, it applies from that tile
|
|
and that packet onwards, up to the next packet spec
|
|
or to the last packet in the last tile in the codestream
|
|
(max. 16 specs)
|
|
|
|
s enables sensitivity data insertion (ESD): 'method' can be
|
|
[-1=NO ESD 0=RELATIVE ERROR 1=MSE 2=MSE REDUCTION 3=PSNR
|
|
4=PSNR INCREMENT 5=MAXERR 6=TSE 7=RESERVED]
|
|
if 'tile' is absent, it applies to main header only
|
|
if 'tile' is present, it applies from that tile
|
|
onwards, up to the next s<tile> spec, or to the last tile
|
|
in the codestream (max. 16 specs)
|
|
|
|
g determines the addressing mode: <range> can be
|
|
[0=PACKET 1=BYTE RANGE 2=PACKET RANGE]
|
|
|
|
a determines the size of data addressing: <addr> can be
|
|
2/4 bytes (small/large codestreams). If not set, auto-mode
|
|
|
|
z determines the size of sensitivity values: <size> can be
|
|
1/2 bytes, for the transformed pseudo-floating point value
|
|
|
|
ex.:
|
|
h,h0=64,h3=16,h5=32,p0=78,p0:24=56,p1,p3:0=0,p3:20=32,s=0,s0=6,s3=-1,a=0,g=1,z=1
|
|
means
|
|
predefined EPB in MH, rs(64,32) from TPH 0 to TPH 2,
|
|
CRC-16 in TPH 3 and TPH 4, CRC-32 in remaining TPHs,
|
|
UEP rs(78,32) for packets 0 to 23 of tile 0,
|
|
UEP rs(56,32) for packets 24 to the last of tile 0,
|
|
UEP rs default for packets of tile 1,
|
|
no UEP for packets 0 to 19 of tile 3,
|
|
UEP CRC-32 for packets 20 of tile 3 to last tile,
|
|
relative sensitivity ESD for MH,
|
|
TSE ESD from TPH 0 to TPH 2, byte range with automatic
|
|
size of addresses and 1 byte for each sensitivity value
|
|
|
|
ex.:
|
|
h,s,p
|
|
means
|
|
default protection to headers (MH and TPHs) as well as
|
|
data packets, one ESD in MH
|
|
|
|
N.B.: use the following recommendations when specifying
|
|
the JPWL parameters list
|
|
- when you use UEP, always pair the 'p' option with 'h'
|
|
|
|
3.2. JPWL Decoder
|
|
-------------------
|
|
|
|
-W <options>
|
|
Activates the JPWL correction capability, if the codestream complies.
|
|
Options can be a comma separated list of <param=val> tokens:
|
|
c, c=numcomps
|
|
numcomps is the number of expected components in the codestream
|
|
(search of first EPB rely upon this, default is 3)
|
|
|
|
|
|
4. Known bugs and limitations
|
|
===============================
|
|
|
|
4.1. Bugs
|
|
-----------
|
|
|
|
* It is not possible to save a JPWL encoded codestream using the wrapped file format (i.e. JP2): only raw file format (i.e. J2K) is working
|
|
|
|
4.2. Limitations
|
|
------------------
|
|
|
|
* When specifying an UEP protection, you need to activate even TPH protection for those tiles where there is a protection of the packets
|
|
* RED insertion is not currently implemented at the decoder
|
|
* JPWL at entropy coding level is not implemented
|