cancel
Showing results for 
Search instead for 
Did you mean: 

Camera OV7675 JPEG Compression

roger23
Associate
Posted on August 13, 2015 at 18:42

Hi,

I'm trying to use an ov7675 0.3Mb with the STM32F4209.

The main goal is to stream the data through WiFi, using the module AMW006 from ACK.

What I'm wondering is to use a specific IC to do the compression to JPEG or try to do it on the SMT32F4. I will like to do streaming up to 30FPS, in my opinion it will not be able to do the compression the SMT32F4, is too much data (147Mb/s).

The JPEG compression that I will like to do is 1:26.

The resulting image if my numbers are not wrong is going to be VGA*FPS*JPEG*bits per pixel=(640*480)*30/26*16=6Mb.

What are your feelings?

Is it going to be possible to do the compression on board?

If not, can anyone recommend me a video encoder able to do compression?

Also, another option that it comes to my mind is to use a camera module with JPEG compression, like OV3640. The only think is that I don't know how much compression does. Really hard to find documentation! Anyone know?

Also, not sure about the maximum pixel clock that can have the SMT32F4.

Thanks,

Roger

#camera-streaming-smt32f4-jpeg
2 REPLIES 2
Mark Edwards
Associate II
Posted on August 14, 2015 at 00:40

There is a nice, relatively small and simple JPEG encoder here:

http://blog.frankvh.com/2009/06/09/blackfin-fast-jpeg-encoding/

I adapted it to run on STM32F429 (files attached) and was able to encode 24bit RGB at 600X400 pixels. So the only option I know that runs true is the

read_rgb24_format function.

Once I had it running I then used its method to code an FPGA so never got around to adding comments or tidying it up.

To use it call:

uint32_t encode_image (UINT8 *input_ptr,UINT8 *output_ptr, UINT8 quality_factor, UINT16 image_format, UINT16 image_width, UINT16 image_height)

image_format = 888 for 24bit RGB

Not sure if you’re going to get 30FPS though as I have never speed tested it.

________________

Attachments :

jpeg.c : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I1L2&d=%2Fa%2F0X0000000blW%2FHeLk.pT_8k0Y9oVqInxRZd1Mqgf0oud09DNmrEXdqYA&asPdf=false

jpeg.h : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I1KA&d=%2Fa%2F0X0000000blU%2FUqcrzPSs0Ki9txGcdm9akevmzjVHN855YHOBHJEfTiE&asPdf=false
nehakakar
Associate II

For streaming up to 30FPS, using an external JPEG compression IC would be ideal due to STM32F4’s limitations in handling high data rates. Alternatively, switching to a camera module with built-in JPEG compression, like the OV3640, could simplify the setup if it meets the desired compression level. I Found a JPEG Compressor tool for compressing image online without losing image quality.