Real time CUDA JPEG Compression Module for high speed cameras
Realtime long term recording from high speed camera is a problem because of camera data rate. Usually data rate is more than 1000 MByte/s and one have to use RAID or SSD drives to write video stream to disk. File size could be really big and it's one more problem for end user. To tackle these problems we offer realtime JPEG compression on GPU. This technology gives us opportunity to solve both problems altogether: to write compressed video stream to conventional HDD and to make file size 10-20 times less.
We've implemented high performance JPEG codec on NVIDIA GPU. In this way we can compress each frame from raw data to JPEG and write compressed video stream to HDD in real time. Continuous high-speed video recording requires both serious bandwidth and plenty of disk capacity due to huge data rates of high-speed cameras (1000 MByte/s or more). Addressing this issue requires real-time compression of video data stream.
Fastvideo has developed real-time JPEG compression that resolves both problems: by compressing each frame of a video stream with real-time JPEG compression algorithm we are able to significantly reduce the requirements to performance and capacity of the disk system.
Here you can find a brief description how the process goes in details:
In the preliminary stage we need to define the following
High speed camera parameters: image width and height, fps, operation mode, bit depth (24-bit RGB or 8/12-bit grayscale)
Camera calibration procedures: Dark frame (black offset), FFC, and White Balance (for color cameras)
Demosaicing algorithm and parameters (for color cameras)
JPEG parameters: compression quality, subsampling mode for color camera, restart marker frequency
Data path for realtime image compression on GPU from high speed camera
Driver (Full CameraLink or PCIE framegrabber) gets raw data from high speed camera
Driver writes data to CPU memory
Application sends raw data from CPU to GPU
Dark image subtraction
Flat-Field Correction
White balance (for color images only)
Image demosaicing (for color images only)
Data transform with LUT or gamma (8/10/12/14/16-bit to 8 bits per component)
Color correction on GPU with ICC profiles of camera and monitor
MJPEG video compression
Application sends compressed data from GPU to CPU
Application writes compressed data to HDD/SSD/RAID