I would like to get suggestion on what algorithm would be the best to use to compress images with microcontroller with limited RAM and program memory size.
In my project I'm trying to send images from VGA camera connected to microcontroller over a slow communication line. Images need to be compressed otherwise the comm. line speed will not allow to send desired number of frames per second.
My goal is to send 12 frames per second of 640x480 pixel frames. I will read 3 bytes per pixel (RGB) from camera. So on input I will have 640 x 480 x 3 x 12fps -> around 11 MB/s. My communication line is capable of 3 MB/s so I'm looking for algorithm that could give me around 1:4 compression ratio on average for generic images of people. Quality of image is not critical so I think 5 bits per color would be enough if this would make things easier (ratio 1:3).
My initial thinking was to use some standard or modified jpg encoder algorithm but my concern is that the processing power of my micro controller might not allow to compress enough frames per second.
- main criteria is compression speed
- lossy compression is OK
- decompressed quality not critical
- goal is to get 1:3 or 1:4 compression ratio
- compressed format does not need to be standard as I will be writing code for receiving device
- compression will be done by 200MHz 32-bit ARM Cortex-M4 micro (think early Pentium-3 in terms of computing power) with no more then 4MB RAM for frame buffer and compression.
- compression code with all required libraries must fit to 512 KB.
- I will use recent gcc compiler for ARM and C/C++
Are there open-source algorithms available with faster compression of images then jpg that would fit these constraints? I would appreciate any suggestions and advice.