Jpeg Encoder Code
Brought to you by:
ram7oh
File | Date | Author | Commit |
---|---|---|---|
Lighthouse_192x128.jpg | 2013-09-14 |
![]() |
[af3bca] initial commit |
Lighthouse_192x128.raw | 2013-09-14 |
![]() |
[af3bca] initial commit |
QualityAnalysisResults.xlsx | 2013-09-14 |
![]() |
[af3bca] initial commit |
README | 2013-09-14 |
![]() |
[af3bca] initial commit |
StandardHuffmanTablesDCACDCAC.dat | 2013-09-14 |
![]() |
[af3bca] initial commit |
jencEngine.c | 2013-09-14 |
![]() |
[af3bca] initial commit |
jencHeader.h | 2013-09-14 |
![]() |
[af3bca] initial commit |
jencMain.c | 2013-09-14 |
![]() |
[af3bca] initial commit |
makefile | 2013-09-14 |
![]() |
[af3bca] initial commit |
quantize.dat | 2013-09-14 |
![]() |
[af3bca] initial commit |
--------------------------------------- Software: Jpeg Encoder Version: 1.0 Usage Info.: Every line in this software is written patiently only for the benefit of the community and myself who are willing to understand Jpeg. I am happy if this code is useful for you in some manner. I have no complaints if anyone uses this software for personal and non-commercial purpose. But an acknowledgment is greatly appreciated as it encourages me to do more upgrades. Author: Ram email : rammohan959[at]gmail.com Release Date: 14 September 2013 --------------------------------------- Outline of the document: 1. Build Procedure 2. Usage 3. Quality Analysis (QA) reports 1. Build Procedure: The command "make -f makefile" will generate the executable jpegencoder.exe. 2. Usage: Typing the name of the executable in the command prompt should present you how to use this software. It should look like this. jpegencoder.exe [options]... Expects options in the form -<switch> <Argument> -i input filename [*.raw] -o output filename [*.jpg] -q quality factor [1 (Least Quality) - 100 (Best Quality)] -r Rate (in MCU's) at which restart markers have to be set -c Sampling format for encoding [0-1x1,1-2x1,2-2x2,3-GrayScale] -w Image Width -h Image Height -m Input Mode [1-YUV420, 2-GrayScale, 3-BGR888] -p Plane Information [Interleaved - 1, SemiPlanar - 2, Planar - 3] Note :: Valid combinations of options -m & -p are YUV420Semiplanar, YUV420Planar, BGRInterleaved, example: jpegencoder.exe -i Lighthouse_192x128.raw -o Lighthouse_192x128.jpg -q 75 -r 0 -c 2 -w 192 -h 128 -m 3 -p 1 Note: By default jpegencoder.exe uses quantization tables which were generated internally basing on the quality factor supplied to it. If in case you are interested in using your own quantization tables, please recompile the package by disabling the macro Q_FACTOR_ENABLE. This makes the encoder to use quantization tables from the file "quantize.dat". 3. Quality Analysis (QA) reports: The performance (Quality Analysis) of the encoder is compared against a standard encoder and the results are included in the file QualityAnalysisResults.xlsx. Independent Jpeg Group (IJG) is very popular in the jpeg community and their software is used here as reference. In this quality analysis, 4 test images are used. The images (input) are encoded with standard encoder and current encoder for quality factors 1 to 100 with internal color format set to YUV444. Then the encoded jpeg images are decoded with standard decoder and PSNR is computed between the decoded images(s) and the input image. Results show that quality wise the performance of the current encoder is in good aggrement with the standard encoder. Test Images Used can be accessed from the location http://r0k.us/graphics/kodak/ Barn - kodim22.png Child - kodim15.png Lighthouse - kodim21.png SizShooter - kodim20.png