The defining property of images
Whether displaying graphics or image processing, the value of each image pixel is generally computed in a similar way.
The CPU can only compute a handful of pixels at the same time (1 per CPU core).
GPUs can potentially process thousands of pixels at the same time (1 per GPU core).
GPU: the key to performance
Typical image processing applications need perform both processing and displaying (even if only during the debug stage).
|PROCESSING||DISPLAY||PROS & CONS|
|CPU||CPU||Easy to develop since GPU is not used, but very low performance.|
|GPU||CPU||Mildly difficult to develop, with good performance. E.g. using CUDA or OpenCL kernels, but results brought back to CPU.|
|GPU||GPU||Very difficult to develop, but best performance. Little to no CPU is involved.|
ImageFlex to the rescue
1/10th the Code
OpenGL is a very complex API even to do simple things like drawing text, boxes, or circles. CUDA and OpenCL interoperation with OpenGL is also very complex and unintuitive. ImageFlex creates a super thin wrapper around these technologies so the developer can write simple and intuitive source code.
Many image processing and display applications use the same algorithms for all pixels. Using the GPU for this can easily yield an order of magnitude improvement over CPU with SIMD technology. ImageFlex does not compromise native GPU performance.
No hassle interoperation
Take the pain out of mixing GPU, CPU, and hardware technologies.
Key ImageFlex algorithms
- Stabilization (rejects outliers and compensates for rotation, panning, & scaling)
- Radial & complex distortion correction
- Adaptive Image Fusion (get the best detail of multiple sources)
- Basics (scale, crop, rotate, transpose)
- Color conversion (YUV, grayscale, etc)
- Neural network (classification and object detection)
- Or bring your own GPU processing
- 2D image display
- 3D spherical display (look in any direction, e.g. bird's eye view)
- 3D Lidar point plots
- 3D object display
- Basics (text, line, boxes, circles, particles)
High quality working examples
ImageFlex comes with a large set of high quality working examples. These can be used as reference to build your custom application.
The most fundamental example.
Fundamental example of how to display a picture, video file or live camera data.
Radial lens distortion correction
Provides a utility to manually or automatically determine correction parameters along with an example showing how to apply the correction to live or stored imagery.
Complex lens distortion correction
Provides a utilities to manually determine correction matrix along with an example showing how to apply the correction to live or stored imagery.
360 spherical visualizing
Provides a utility to combine multiple camera images into a single stitched image along with a “SkyBox” example to view live imagery from any direction including a birds eye view.
ImageFlex includes a high performance image fusion algorithm. I compliment this, it provides a utility to tune the parameters along with an example to fuse live imagery from two camera sources.
ImageFlex includes an advanced video stabilization algorithm implemented on CUDA and OpenCL. Stabilizes panning, rotation, & scaling. Rejects outlier motion (e.g cars on a highway).
Neural Networks (contact Abaco Systems for these examples)
ImageFlex provides example showing how to integrate Convolution Neural Network based application into an application. The example demonstrate classification and object detection using Darknet or TensorRT models.
ImageFlex provides all the hooks to merge ImageFlex functionality with OpenGL functionality. This example projects a video image onto two 3D objects, where one sphere is orbiting the other sphere.
ImageFlex provides the hooks to let CUDA or OpenCL process ImageFlex image either in-place or via copying. Either way, it's extremely fast because the image data stays on the GPU for the full processing chain.
A Focus on autonomous driving
The GPU is ideal for rendering the hundreds of thousands of points in LiDAR point cloud very quickly. ImageFlex provides an example for this using real LiDAR data.
Lane detection and centering
(contact Abaco Systems for this example)
ImageFlex provides functionality to do perspective projection. This example projects a road to a birds eye view, then uses road markings to help determine the center of the lane.
A focus on convolutional neural networks
CNNs are getting very popular, and one of the more difficult things is annotating the image data with a class, bounding box, and landmark locations. ImageFlex provides a GUI tool to make this easy. Once the data is annotated, use your favorite CNN framework to train on the data.
Request a Quote
Contact an Expert