NVPP - how to work with 16 bit gray images?


Just playing with NVPP.
It works in general (and really fast for big images), but there are not so much functions available for 16 bit images.
My primary area of interest is XRay image processing, so I have in most cases 16 bit grayscale (single channel) images both signed and unsigned.
So, we can allocate 16 bit images with nppiMalloc_16* finctions and convert 8 bit to 16 bit and back with nppiConvert functions and thats all what I can do, because the rest of functions (nppiCopy, nppiAdd, nppiSub and so on) are available for 8u or 32f only. It means that NVPP is useless for 16 bit image processing. :no:
For example, If I need to fill 16 bit image with constant - how to do this in best way? Do I need to develop my own function? Or support for 16 bit images already planned by NVidia? In general simple operations such arithmetic should be available for any image type, isn’t?. Right now its possible to allocate 15 different types of the images, but most of these types not supported by basic processing functions.

Best regards,


Best to work in 32 bit fp format for processing and use 16 uint only as storage format. It also eliminates constantly accumulating quantization noise during sequential processing steps.


Thank you for the suggestion, Christian. I would like to avoid this because will get additional time penalties by conversion, unnecessary memory transfers and so on. In additional, we will get noise accumulation effect only rarely. There are lot of other functions (for example, nppiMirror, nppiMinMax) - they can be done with native 16 bits. But according functions are not exists (not yet). The interface to nppi function more or less similar with Intel IPP functions. For arithmetic operations Intel have full support for almost all types. I hope we will see the similar functions in the future in NVPP too.


We have been getting lots of requests for 16bit integer support from medical developers. NPP is not sufficiently staffed to provide support for all data-types. What Christian suggests is the preferred work-around until NPP becomes more full featured.

I would be very much interested in the set of primitives that you would most like to see with 16-bit integer. If you’re not comfortable posting that information here, please contact me outside the forums.

Thanks for your interest in NPP.