Hello,
I'm sort of new to image compression, especially JPEG 2000. Out of
curiosity, I ran some experiments with a few different codecs, JasPer,
JJ2000, whatever Corel/Jasc Paint Shop Pro 9 uses, and the decoder used
by IrfanView which I believe is LuraWave.
The question I posed was this: if I lossy compress with encoder A and
decompress with decoders A, B, C and D, will the resulting decompressed
images be identical?
Note that as most consumer-grade codecs don't give a whole lot of
options, I compressed with just the compression ratio/bits-per-pixel
parameters and decompressed without any special parameters.
What I found was that when I encoded with JasPer, all the codecs
decompressed to identical images. When I encoded with JJ2000 or Paint
Shop, the decompressed images were not identical.
So my question to the group is: Is this
A.) A problem with encoders?
B.) A problem with decoders?
C.) Caused by a lack of decompression parameters?
D.) Not a problem at all as results are not required to be identical in
the JPEG 2000 standard?
E.) Something else?
Any insights would be greatly appreciated.
Thank you very much,
-Manuel
|
|
0
|
|
|
|
Reply
|
Manuel
|
10/18/2005 3:29:56 PM |
|
Hi,
> I'm sort of new to image compression, especially JPEG 2000. Out of
> curiosity, I ran some experiments with a few different codecs, JasPer,
> JJ2000, whatever Corel/Jasc Paint Shop Pro 9 uses, and the decoder used
> by IrfanView which I believe is LuraWave.
I don't hope so. IrfanView is in my experience extremly slow showing
JPEG2000, and I doubt they're selling code that slow. Looks more like
Jasper to me, speed-wise at least.
> The question I posed was this: if I lossy compress with encoder A and
> decompress with decoders A, B, C and D, will the resulting decompressed
> images be identical?
The standard does not require this. A decoder has a choice of picking
the reconstruction point of the dequantizer freely, between 0 and 1,
and thus changing the reconstructed image. Typically, 0.5 is used and
recommended, but IIRC Jasper uses an (IMHO unwise) value of
0. Furthermore, the implementation of the 9/7 wavelet for lossy
compression may make a difference. A codec might want to implement
this using various strategies, thus causing different types of
round-off errors and thus causing slightly different reconstructed
images.
Part-4 of JPEG2000 requires a decoder to be within certain limits for
the reconstructed images - namely by fixing some limits for the official
test images. The error bounds have been choosen in a way such that both
JJ and Jasper comply, even though they use different reconstruction
points. Thus, part-4 does not guarantee very much for this problem,
unfortunately (though it does pretty much for testing the decoder
otherwise).
> Note that as most consumer-grade codecs don't give a whole lot of
> options, I compressed with just the compression ratio/bits-per-pixel
> parameters and decompressed without any special parameters.
And you typically do not have an option to adjust the
reconstruction point. A wise codec manufacturer should run a
"generation test", i.e. compress and re-expand the same image several
times, and check whether that causes an offset-shift in the image. Then
pick the reconstruction point and the rounding modes to minimize this
shift - that's at least how Pegasus ended up with the 0.5 value, and
that's why I recommend it. (-;
> What I found was that when I encoded with JasPer, all the codecs
> decompressed to identical images. When I encoded with JJ2000 or Paint
> Shop, the decompressed images were not identical.
> So my question to the group is: Is this
> A.) A problem with encoders?
> B.) A problem with decoders?
> C.) Caused by a lack of decompression parameters?
> D.) Not a problem at all as results are not required to be identical in
> the JPEG 2000 standard?
> E.) Something else?
D.)
So long,
Thomas
|
|
0
|
|
|
|
Reply
|
Thomas
|
10/19/2005 8:12:58 AM
|
|
Thomas,
Very informative. That's what I had initially suspected (the result if
not the details), but wanted to get it confirmed.
Thank you very much,
-Manuel
>>The question I posed was this: if I lossy compress with encoder A and
>>decompress with decoders A, B, C and D, will the resulting decompressed
>>images be identical?
>
>
> The standard does not require this. A decoder has a choice of picking
> the reconstruction point of the dequantizer freely, between 0 and 1,
> and thus changing the reconstructed image. Typically, 0.5 is used and
> recommended, but IIRC Jasper uses an (IMHO unwise) value of
> 0. Furthermore, the implementation of the 9/7 wavelet for lossy
> compression may make a difference. A codec might want to implement
> this using various strategies, thus causing different types of
> round-off errors and thus causing slightly different reconstructed
> images.
>
> Part-4 of JPEG2000 requires a decoder to be within certain limits for
> the reconstructed images - namely by fixing some limits for the official
> test images. The error bounds have been choosen in a way such that both
> JJ and Jasper comply, even though they use different reconstruction
> points. Thus, part-4 does not guarantee very much for this problem,
> unfortunately (though it does pretty much for testing the decoder
> otherwise).
>
>
|
|
0
|
|
|
|
Reply
|
Manuel
|
10/19/2005 12:24:32 PM
|
|
|
2 Replies
161 Views
(page loaded in 0.042 seconds)
|