NPP库中libnppi模块介绍
1. libnppi 模块简介
libnppi
是 NPP 库中专门用于 图像处理 的模块,提供高度优化的 GPU 加速函数,支持:
-
图像滤波(卷积、形态学操作)
-
几何变换(旋转、缩放、透视变换)
-
颜色空间转换(RGB/YUV/HSV等)
-
统计计算(直方图、均值、最大值等)
-
图像算术/逻辑运算
2. 核心属性与方法概览表
2.1 常用图像数据类型
属性/数据类型 | 描述 |
---|---|
Npp8u | 8位无符号整数(0-255) |
Npp16u | 16位无符号整数 |
Npp32f | 32位浮点数 |
NppiSize | 图像尺寸(width/height) |
NppiRect | 图像区域(x/y/width/height) |
2.2 常用方法分类表
2.2.1 图像滤波
方法签名 (示例) | 功能描述 |
---|---|
nppiFilterBox_8u_C1R(src, srcStep, dst, dstStep, roiSize, maskSize, anchor) | 盒式滤波(均值模糊) |
nppiFilterGauss_8u_C1R(src, srcStep, dst, dstStep, roiSize, stdDev) | 高斯模糊 |
nppiDilate_8u_C1R(src, srcStep, dst, dstStep, roiSize, mask) | 膨胀操作 |
2.2.2 几何变换
方法签名 | 功能描述 |
---|---|
nppiResize_8u_C1R(src, srcSize, srcStep, srcROI, dst, dstStep, dstROI, interpolation) | 图像缩放 |
nppiRotate_8u_C1R(src, srcSize, srcStep, srcROI, dst, dstStep, dstROI, angle, xShift, yShift, interpolation) | 旋转图像 |
2.2.3 颜色空间转换
方法签名 | 功能描述 |
---|---|
nppiRGBToYUV_8u_C3R(src, srcStep, dst, dstStep, roiSize) | RGB → YUV 转换 |
nppiYUVToRGB_8u_C3R(src, srcStep, dst, dstStep, roiSize) | YUV → RGB 转换 |
2.2.4 图像算术/逻辑运算
方法签名 | 功能描述 |
---|---|
nppiAdd_8u_C1RSfs(src1, src1Step, src2, src2Step, dst, dstStep, roiSize, scaleFactor) | 图像加法(带缩放) |
nppiThreshold_8u_C1R(src, srcStep, dst, dstStep, roiSize, threshold) | 阈值化处理 |
2.2.5 统计计算
方法签名 | 功能描述 |
---|---|
nppiMean_8u_C1R(src, srcStep, roiSize, pMean) | 计算图像均值 |
nppiHistogramEven_8u_C1R(src, srcStep, roiSize, pHist, nLevels, nLowerLevel, nUpperLevel) | 计算直方图 |
3. 基础使用示例
c
#include <nppi.h>// 示例:图像缩放(8位单通道)
NppStatus status;
NppiSize srcSize = {640, 480}, dstSize = {320, 240};
int srcStep = 640, dstStep = 320;
Npp8u *pSrc, *pDst; // 假设已分配内存// 执行缩放
status = nppiResize_8u_C1R(pSrc, srcSize, srcStep, {0,0,640,480},pDst, dstSize, dstStep, {0,0,320,240},NPPI_INTER_LINEAR // 线性插值
);if (status != NPP_SUCCESS) {printf("Error: %d\n", status);
}
4. 关键参数说明
-
src/dst
: 输入/输出图像指针(GPU内存) -
srcStep/dstStep
: 图像行步长(字节) -
roiSize
: 处理区域尺寸(NppiSize
) -
maskSize
: 滤波核尺寸(如{3,3}
) -
interpolation
: 插值方式(NPPI_INTER_NEAREST
/NPPI_INTER_LINEAR
)
5. 资源
-
官方文档:NPP Documentation
-
代码示例:
/usr/local/cuda/samples/npp
(CUDA安装目录)