2. 2
Overview
The problem of JPEG transcoding
Full-featured MATLAB JPEG codec
Lossless transcoder
Lossless rotation
3. 3
The problem of JPEG transcoding
Basic JPEG decoder/encoder block diagrams:
Reencoding introduces errors because of the color
model conversions (YCbCr<->RGB)
RGB->YCbCr
Level shifting
DCT Q
DPCM DC Huffman
ZigZag AC Huffman
JPEG
File
RGB
Image
JPEG Encoder
DC
AC
Level shifting
YCbCr->RGB
IDCTIQ
IDPCMDC Huffman
DeZigZagAC Huffman
JPEG Decoder
DC
AC
RGB
Image
JPEG
File
4. 4
Implementing a JPEG codec in MATLAB
Extends the MATLAB JPEG Toolbox by Phil Sallee
• http://redwood.ucdavis.edu/phil/demos/jpegtbx/
• Includes functions that cover the more tedious parts of
the codec
Works with most images!
• Full color, arbitrary size,…
• Some restrictions in subsampling and color models
RGB->YCbCr
Level shifting DCT Q
DPCM DC Huffman
ZigZag AC Huffman
JPEG
File
RGB
Image
JPEG Encoder
DC
AC
Implemented Provided by toolbox
5. 5
Example of lossy reencoding
Original image Error after reencoding (x15)
SNR=25.1dB
6. 6
Lossless JPEG transcoder [1]
How to modify decoder/encoder?
RGB->YCbCr
Level shifting
DCT Q
DPCM DC Huffman
ZigZag AC Huffman
JPEG
File
RGB
Image
DC
AC
Level shifting
YCbCr->RGB
IDCTIQ
IDPCMDC Huffman
DeZigZagAC Huffman
Lossy JPEG Transcoder
DC
AC
RGB
Image
JPEG
File
Reencoded coefficients are
an estimation of the original ones
-> Correct that estimation!
8. 8
Results of lossless transcoding
Original image Transcoded image Difference coefficients
(contrast )↑↑
Lossy reencoding: SNR = 33.2 dB
Lossless transcoding: SNR = ∞
9. 9
Lossless rotation
Different approach: Operate on blocks directly
• No need to requantize -> Lossless
• Faster than decoding/encoding
To rotate an image (90º counterclockwise):
• Rotate whole blocks
(without modifying content)
• Perform the transformation
G(u,v)=F(v,u)(-1)v
on each block
□ This rotates the contents in the spatial domain!
• Transpose quantization matrices (they are not symmetric in
general!)
1 2 3
4 5 6
7 8 9
3 6 9
2 5 8
1 4 7
11. 11
Results of lossless rotation [2]
Losslessly rotated
image
Those strange
manipulations
actually work!
12. 12
Results of lossless rotation [3]
This time SNR=18.1 dB
Lossy rotation degrades the quality much more than reencoding!
Error when lossy rotation is applied 4 times
13. 13
Applications of lossless transcoding
Image editing (allows editors to work with lossy
compressed images without degrading quality)
Image rotation and other basic transformations
(cropping, flipping,…)
Image transmission/storage