目录
1. 简介
Vitis Vision 库是一组 90 多个内核,基于 OpenCV 计算机视觉库,针对 FPGA、AI-E 进行了优化。这个库的主要功能包括:
- 色彩和位深转换:能够进行图像的色彩空间转换和位深度调整。
- 像素算术运算:执行像素级别的算术操作,如加、减、乘、除等。
- 几何变换:包括旋转、缩放、仿射变换等。
- 统计:计算图像的统计数据,如直方图、均值、标准差等。
- 滤波器:应用各种滤波器进行图像平滑、锐化等处理。
- 特性检测和分类器:用于图像特征的检测和分类。
- 3D 重建:从图像数据中重建三维场景。
2. 分类介绍
2.1 图像容器
在 Vitis Vision Library 中,xf::cv::Array2xfMat() 和 xf::cv::xfMat2Array() 这两个函数是为了方便开发者在常规的 C/C++ 指针数组和 Vitis Vision 的 xf::cv::Mat 图像容器类之间转换数据而设计的。
这里的 xf::cv::Mat 是一个特殊的图像容器,用于在硬件加速中处理图像数据。它类似于 OpenCV 中的 cv::Mat,但专门为硬件优化而设计。
下面是一个简化的例子,展示了如何在顶级函数中使用这些适配器函数:
extern "C" {
void func_top (ap_uint *gmem_in, ap_uint *gmem_out, ...) {
// 定义输入和输出的 xf::cv::Mat 对象
xf::cv::Mat<...> in_mat(...), out_mat(...);
// HLS 数据流指令,用于优化数据路径
#pragma HLS dataflow
// 将输入数据从指针数组转换为 xf::cv::Mat 格式
xf::cv::Array2xfMat<...> (gmem_in, in_mat);
// 执行某个 Vitis Vision 函数,处理图像数据
xf::cv::Vitis Vision-func<...> (in_mat, out_mat...);
// 将处理后的数据从 xf::cv::Mat 格式转换回指针数组
xf::cv::xfMat2Array<...> (gmem_out, out_mat);
}
}
此例中:
- func_top 是内核的 top 层函数,是硬件执行的入口点。
- gmem_in 和 gmem_out 是指向全局内存的指针,用于输入和输出数据。
- #pragma HLS dataflow 是一个编译指示,以优化数据流。
- Array2xfMat 将输入数据从指针数组转换为 xf::cv::Mat 格式,这样就可以在硬件中高效处理。
- Vitis Vision-func 是一个占位符,代表任何 Vitis Vision Library 中的函数,用于执行图像处理任务。
- xfMat2Array 将处理后的图像数据从 xf::cv::Mat 格式转换回指针数组,以便进一步处理或存储。
这样的设计使得开发者可以利用 Vitis Vision Library 中的高性能图像处理函数,同时保持与传统 C/C++ 程序的兼容性。
数据从 OpenCV 的 cv::Mat 格式显式复制到 Vitis Vision 的 xf::cv::Mat 格式。xf::cv::Mat 是专门为硬件加速设计的图像容器,它能够确保数据在 FPGA 的本地内存中连续存储,从而提高性能。处理完成后,xf::cv::Mat 中的输出数据再被复制回 cv::Mat,以便在主机上进行进一步的处理或存储。
2.2 图像处理基础
功能:
- 基础数据类型和图像容器:定义图像数据结构,实现图像的读取、写入和基本操作。
- 像素级并行处理:利用并行处理技术加速图像处理任务。
具体函数:
- Data Types
- xf::cv::Mat Image Container Class
- Pixel-Level Parallelism
- xf::cv::imread
- xf::cv::imwrite
- Crop
- Flip
- Rotate
- Delay
- Duplicate
- Set
- Zero
2.3 图像滤波和平滑
功能:
- 滤波和平滑:减少图像噪声,平滑图像边缘,改善图像质量。
具体函数:
- Bilateral Filter
- Box Filter
- Gaussian Filter
- Median Blur Filter
- Mode filter
2.4 图像变换和增强
功能:
- 图像变换:包括颜色空间转换、图像旋转、翻转等,用于图像预处理和增强。
- 图像增强:通过调整图像的对比度、亮度等,改善图像的视觉效果。
具体函数:
- Bit Depth Conversion
- Color Conversion
- CUSTOM BGR2Y8
- Degamma
- Gamma Correction
- Global Tone Mapping
- Local Tone Mapping
- Look Up Table
- RGBIR to Standard Bayer Format
2.5 图像分析和特征检测
功能:
- 特征检测:识别和提取图像中的关键特征,如边缘、角点、直线等,为图像分析和理解提供基础。
具体函数:
- Canny Edge Detection
- FAST Corner Detection
- Harris Corner Detection
- Histogram Computation
- HOG
- HoughLines
- Integral Image
2.6 数学和算术操作
功能:
- 数学运算:实现图像的基本数学和算术操作,如加减乘除、逻辑运算等,用于图像数据的处理和分析。
具体函数:
- Absolute Difference
- Accumulate
- Accumulate Squared
- Accumulate Weighted
- AddS
- Add Weighted
- Bitwise AND
- Bitwise NOT
- Bitwise OR
- Bitwise XOR
- Max
- MaxS
- Min
- MinS
- MinMax Location
- Pixel-Wise Addition
- Pixel-Wise Multiplication
- Pixel-Wise Subtraction
- SubRS
- SubS
- Sum
2.7 图像校正和优化
功能:
- 校正和优化:纠正图像的畸变和色彩偏差,优化图像质量,提高分析的准确性。
具体函数:
- Auto Exposure Correction
- Auto White Balance
- Bad Pixel Correction
- Blacklevelcorrection
- Color correction matrix
- Demosaicing
- Gaincontrol
- Lens Shading Correction
- Paint Mask
- 形态学操作
- Dilate
- Erode
2.8 颜色和阈值处理
功能:
- 形态学处理:通过膨胀、腐蚀等操作处理图像结构,用于提取图像形状和结构信息。
具体函数:
- Clahe
- Color Thresholding
- Histogram Equalization
- InRange
- Otsu Threshold
- Thresholding
2.9 高级图像处理
功能:
- 颜色处理和阈值分割:基于颜色和灰度值进行图像分割和分类,用于图像前景和背景的区分。
具体函数:
- Brute-force (Bf) Feature Matcher
- Custom CCA
- Custom Convolution
- Distance Transform Feature Matcher
- Extract Exposure Frames
- HDR Decompanding
- HDR Merge
- Mean Shift Tracking
- Semi Global Method for Stereo Disparity Estimation
- Stereo Local Block Matching
- SVM
2.10 光流和运动估计
功能:
- 特征匹配和图像合成:进行图像之间的特征匹配,实现高动态范围(HDR)图像合成,提供高级图像分析能力。
具体函数:
- Dense Pyramidal LK Optical Flow
- Dense Non-Pyramidal LK Optical Flow
- TVL1 Optical Flow
2.11 图像转换和映射
功能:
- 运动估计:通过光流技术估计图像序列中物体或场景的运动,用于视频分析和监控。
具体函数:
- convertScaleAbs
- convertTo
- Remap
- Resolution Conversion (Resize)
- Warp Transform
2.12 其他特殊功能
功能:
- 特殊处理和优化:提供一系列特殊功能,如3D查找表(LUT)、边界框检测、通道合并分离等,用于特定应用需求。
具体函数:
- 3D LUT
- BoundingBox
- Channel Combine
- Channel Extract
- Compare
- CompareS
- InitUndistortRectifyMapInverse
- ISP Stats
- Kalman Filter
- Laplacian Operator
- Mean and Standard Deviation
- Preprocessing for Deep Neural Networks
- Pyramid Up
- Pyramid Down
- Quantization & Dithering
- Reduce
- Scharr Filter
- Sobel Filter
- Atan2
- Inverse (Reciprocal)
- Square Root
3. 总结
Vitis Vision 库为基于 FPGA 和 AI 引擎的计算机视觉应用提供了强大的支持。它通过一系列优化的内核,覆盖从基本的图像处理操作到高级的图像分析和特征检测。开发者可以利用这些内核来执行色彩转换、像素运算、几何变换等任务,同时享受硬件加速带来的性能优势。Vitis Vision 的设计允许开发者在保持与传统 C/C++ 程序兼容的同时,使用高性能的图像处理函数。这个库的多样性和灵活性使其成为在现代图像处理和机器视觉领域中不可或缺的工具,特别是在需要处理大量数据和实时性要求高的应用场景中。