Unequal error protection relies on the assumption that there are more important and less important bit-stream elements, either in terms of visibility or in terms error resilience features in the decoder. Unequal error protection tries to protect important bit stream elements more than other. In the context of a video transmission over IP wireless networks, the focus is put on transmitting data on packet basis and therefore we will have to recover from packet losses.
To use UEP features it is reasonable to define importance classes for the bit stream elements or to reorganise the bit-stream in a manner that most important elements are leading.
A tool has been proposed within JPEG 2000 Part 11 standard based on the consideration that the set of error resilience tools that have selected during the establishment of JPEG 2000 standard [1] to combat the effect of error prone environments rely on the hypothesis that the headers (Main Header and Tile-part(s) header(s)) of the codestream are guaranteed to be error free.
In practice, it appears that the codestream is often not decodable in a proper way when an error occurs in one header, which might conduct to a decoder application crash or complete loss of the data. The worse is that, generally, it might not be possible to guarantee that the headers will be kept free of errors in many applications. In order to extend the error resilience to headers, it was proposed to define an error protection mechanism that will be embedded within the JPEG 2000 syntax. As a matter of fact, using an internal scheme will allow not to transmit the SSI to an UEP external module, at the cost that the protection shall be integrated by the source encoder itself, or a source transcoder somewhere in the transmission chain.
In order to remain compliant with the JPEG 2000 codestream syntax (ensuring backward compatility), it was chosen to insert the redundant information in a dedicated marker segment. Denoted by EPB for Error Protection Block, this marker will be skipped by a JPEG 2000 Part 1 compliant decoder as it will be recognised as an (from itself) unknown marker segment whereas a JPEG 2000 Part 11 compliant decoder will be able to interpret and use the redundancy for header protection and Unequal Error protection. To ensure full backward compatibility conditions and good error protection capabilities,
This leads to:
Figure 1 illustrates the EPB disposition in the Main header case. The JPEG 2000 stream first mandatory bytes, together with the beginning of the EPB (in practice, the marker and its length information) constitutes the first set of data, whose L1 bytes is protected by L2 redundancy bytes placed immediately after (in the EPB marker data). This way, the bitstream remains compliant to JPEG 2000 Part 1 and if the error-correcting code used for protection is fixed, the decoding can take place without requiring the transfer of an extra (and unprotected) information. This L1+L2 byte section can for instance be generated by a Reed-Solomon RS(L1+L2,L1) code.
The remaining marker segments (L4 bytes) can then be protected by the remaining L3 bytes of the EPB marker segment, for instance with a Reed-Solomon RS(L3+L4,L4) code. The Error Protection Block (EPB) marker segment contains information about the error protection parameters and data used to protect the headers against errors. Figure 2 describes the syntax proposed for the EPB marker segment, where the various fields of the marker are defined as follows:
It is to be noted that the error-correcting code settings (i.e. the definition of the code protecting the remaining marker segments) can be specified in the beginning of the EPB marker segment in the Pepb parameter. The only restriction is that these parameters have then to be of fixed size, as they will have to be protected by the first (fixed) code. For efficiency reasons, it is necessary to consider that there could be more that only one EPB in the header. In fact, the Main Header or Tile-part Header size can be quite large when optional markers such as PPM are included. As a consequence, it is useful to include within the EPB syntax an EPB index (in Depb) which will enable the presence of several EPBs in the header. By default, one could consider that if the index is set to 0, the EPB block is the only one present, otherwise the EPBs are grouped together.
Another element to be considered is the large variations of the mandatory fields size, in particular in the Main Header. As a matter of fact, the number of components in the image may vary very much, even though most of the images used have in practice up to three or four components. Considering that this number of components directly impacts the size of field SIZ, which itself must be protected by the first fixed code, the dimensioning of the first code to the maximal possible size of SIZ field would lead to dramatic compression efficiency losses. As a consequence, it is useful to consider that by default the EPB will be dimensioned to match the most common cases, typically up to three components. Should the image contain more components, a second or more EPB marker placed immediately after the first one will protect the rest of the mandatory fields (typically the end of SIZ). At the decoding side, an hypothesis test on the number of image components will be carried out using the expected associated redundancy. The decoded number of components will be the one with the lowest error detection test.
Figure 3, the first EPB marker segment included in the Main Header is located immediately after the SIZ marker segment. This one being of a size that depends on the number of image component, it is necessary at the beginning of the error correction process to synchronise using error detection in order to find the location of the first EPB marker segment. The Main Header can contain several EPB marker segments, that may be unpacked or packed, which mean that they appear one after each other, before the remaining Main Header information. Unpacked PEBs means that they will appear just before the data part they refer to. An example of packed and unpacked EPBs is given hereafter. In the example, one sees that L5 field can be left not protected if it is chosen to protect only the first marker segments (up to length L4) of the header.
One can also consider the protection of Tile-Part Headers against errors.Figure 4 shows the case where a single EPB marker segment is used to protect the Tile Part header. In this case, L1 data are protected by the L2 part of the EPB data, using the default Tile-Part header error correction code. L4 data are protected using L3, with the error correction code specified in the Pepb parameter.
As illustrated by Figure 5, unpacked two EPB marker segments can be used to protect the Tile Part header. In this case, L1 data are protected by the L2 part of the first EPB data, and L'1 data are protected by the L'2 part of the second EPB data , using the default Tile-Part header error correction code. L4 data are protected using L3, with the error correction code specified in the Pepb parameter of the first EPB marker segment. L'4 data are protected using L'3, with the error correction code specified in the Pepb parameter of the second EPB marker segment. This structure allow to protect differently fundamental marker segments, such as QCD, whereas optional marker segments like PLT can be protected with less redundancy or even not protected at all. In the cas of Unpacked EPBs, the data to be protected are restricting to full marker segments.
It is also possible to pack two EPB marker segments to protect the Tile Part header, as illustrated by Figure 6. In this case, L1 data are protected by the L2 part of the first EPB data, and L'1 data are protected by the L'2 part of the second EPB data, using the default Tile-Part header error correction code. L4 data are protected using L3, with the error correction code specified in the Pepb parameter of the first EPB marker segment. L'4 data are protected using L'3, with the error correction code specified in the Pepb parameter of the second EPB marker segment. This structure allow to protect differently fundamental marker segments, such as QCD, whereas optional marker segments like PLT can be protected with less redundancy or even not protected at all. In the case of Packed EPBs, the data to be protected can refer to one EPB or another at any location.
It is also possible to consider not only header protection, but also protection of the Tile-Part data. Naturally, this will lead us to the possibility of performing Unequal Error Protection in the sense where headers are more important than data (loss of header leads to the loss of the whole codestream, whereas a loss of some data packets leads to partial recovery of the image). The interest will then be to protect the whole codestream thanks to EPB if deemed necessary by the user due to the transmission conditions.
Figure 7 shows that the redundant data placed in EPB marker segments can also protect packet data. In the previous example, the first EPB marker segment protects the Tile Part header data, whereas the second EPB marker segment protects the packet data which follow immediately the Tile Part Header (section L4').
The Packet data can however be of different sensitivity to errors. As illustrated by Figure 8, it is possible to define several EPB marker segments in the Tile Part Header, each of them protecting a subset of the packets data, with the same error correction code or with different error correction codes, depending on the EPBs parameters. The invention allow then to realise an Unequal error Protection of JPEG 2000 codestream.
Having established the possible use of EPB marker segment for UEP protection of a JPEG 2000 codestream, one has applied it by inserting in the Tile-Part header additional EPBs that will protect data packets. Once again, it should be noted that this error correction capability is offered while providing a stream backward compatible with JPEG 2000 syntax. The used error correction codes parameters are then set by one EPB marker segment for the next one, which offers the different parts of the codestream data protection by different codes. As an application, let us consider image 'Woman' with three different layers for an overall quality of 0,5 bpp, as illustrated in Figure 9.
Applying an overall protection rate R=2/3 for both EEP and UEP with RS codes over a BSC channels for 500 realisations gives us the results presented in Figure 10. The Reed-Solomon code RS(30,20) was used for the three layers of EEP case while the UEP case was simulated using a Reed-Solomon code RS(50,20) for first layer, RS(30,20) for second layer and and no protection for the last layer. It can be observed that as soon as the error rate on the channel is above the EEP code capacity, EEP performances quickly degrade, whereas the stronger protection level provided by upper layer code allows to keep an acceptable PSNR up until BER=10-2.
Figure 11 illustrates this visually for an average BER=10-2, either with equal error protection or unequal error protection embedded with JPWL EPB error correction tool are presented.