Debayer comparison: NPP vs CUVI

Comparison performed using CUDA toolkit version 9.1 and CUVI release 1.55 on an underlying core i3-6100, GTX 1080 system and benched with NVIDIA Nsight.

CUVI and NPP both have been in market for almost a decade now. NVIDIA’s own performance primitive library (NPP), which started as a CUDA-alternative to IPP, now has hundreds of functions over its decade long releases. These functions provide a quick way to prototype applications on massively parallel GPUs without much of a learning curve. CUVI (CUda Vision and Imaging) SDK, on the other hand, with its limited functionality, provides the most cutting edge computer vision solutions and offers production quality verticals for various domains.

In this post, I will be comparing one of CUVI’s most popular feature; debayer with its counterpart in NPP. It’s fair to mention that NPP’s debayer offers only bi-linear approach: “Missing pixel colors are generated using bi-linear interpolation with chroma correlation of generated green values“. This is the most basic approach to regenerate a colored image from CFA and is prone to artifacts at high feature regions. For a much better regeneration, CUVI offers the newer, much improved DFPD approach to debayering.

debayer-npp-vs-cuvi

Any eye can immediately recognize the result in image (d) to be far better than others. We have already proven that DFPD gives a more natural and crisp colors to the resultant image when compared to bi-linear interpretation (either CUVI’s own or NPP’s). This comparison, however, doesn’t mean that CUVI is across-the-board superior to NPP. NPP has been doing what it does the best i.e. giving primitives to quickly prototype on CUDA without much of a learning curve while CUVI is hand crafted for quality and production.

 

timing

Accuracy and improvement comes at a performance tax. While CUVI’s DFPD is fast enough to give real-time performance for up to 4k images on a basic desktop graphics cards, the simple bi-linear approach beats it in performance. CUVI inherently supports multi streaming and multi GPU to further speed up to required fps.

CUVIlib - CUDA Vision & Imaging Library - is a simple to use, GPU accelerated computer vision SDK. The library is available for download for free for personal unlimited use. For more information, visit our website at cuvilib.com.