Warping Engine - Overview
TES Warping Engine is a specialized IP core for arbitrary high-performance re-mapping of bitmaps from memory to memory. Applications are for example pre-warping for projection on head-up displays or fisheye-correction of camera images.
The IP core adapts to different bus interfaces like AMBA APB and AHB/AXI as well as the Altera Avalon bus interface at different bus width.

Features
- Arbitrary mapping
- Based on a output->input look-up table per pixel
- Highly-efficient compression algorithm for the mapping LUT
- Implicit up- and downscaling via mapping LUT
- High-quality bilinear filtering
- 16 x 16 subpixel positions
- High performance
- Sophisticated caching mechanism proven in TES rendering engines
- Allows real-time warping of videos or rendering output
- Outputs 1 pixel per clock cycle (maximum)
- Color Formats
- ARGB8888
- Definition of outside color
- For seamless blending with possibly transparent background
- Output to Memory or as AXI stream
- Easy configuration via registers (less than 20 functional registers)
Application Example: HUD warping
Projecting a rectangular image onto a curved surface yields a curved image. For a rectangular image to appear rectangular on a curved surface, it needs to be re-mapped first using the ‘inverse curvature’. The projected image is then mapped into a non-rectangular region of the output image with ‘transparent’ (i.e. normally black) pixels all around:
When the output image is projected onto the windshield, it will appear rectangular from the driver position point of view.

Application Example: Fisheye correction
Here the input image is distorted, while the output image is rectangular. Also the output image contains only pixels which exist in the input image (no ‘outside’ pixels like in the above HUD example). Still, the re-mapping is possible using an arbitrary look-up table per output pixel, which references the respective coordinates from the input image.


Software Tools
TES provides free-of-charge tools:
- Example source code to generate uncompressed LUTs (BCRD format)
- GUI tool to convert a plain LUT to the compressed LUT (CMPSCRD format)
Simple to use software driver
- Only about 20 different API functions
- Separate hardware-abstraction layer allowing easy porting to other platforms (e.g. different OS, different bus interface to warping engine etc.).
- Provided as C source code
FPGA Evaluation Kit
TES offers an evaluation kit for Altera FPGAs (Cyclone V SoC, Terasic DE10 Nano Evaluation board).
For More Information
Please contact graphics@tes-dst.com.

