NXP

APEX CV介绍

2019-07-12 11:28发布

1.APEX CV简介

在S32V中,很多我们常用的open cv操作函数被封装为了APEX CV library,每个操作以类的形式提供使用,而APEX CV又被分为 APEX-CV Base Library 和 APEX-CV Pro Library。
  1. APEX-CV Base Library • Arithmetic Operations:
    – Absolute value
    – Absolute difference
    – Accumulate
    – Accumulate squared
    – Accumulate weighted
    – Addition
    – Bitwise AND, NOT, OR, XOR– Count Leading Zeros
    – Magnitude
    – Subtraction
    – Table Lookup
    – Thresholding (binary)
    – Thresholding (range)
    • Interpolation Operations:
    – Linear Grayscale– Bilinear Grayscale– Bicubic Grayscale
    • Color Conversion and Channel Manipulation Operations:
    – Color conversion and color rotation
    – Color conversion and color rotation (optimized)– Extract Channel
    – Insert Channel
    – Split Channel  – Merge Channel

    • Image Filters Operations:
    – Bilateral filter
    – Box filter
    – Box filter (optimized)
    – Census filter
    – Convolve filter
    – Convolve filter (optimized)
    – Derivative X filter (optimized)– Derivative Y filter (optimized)– Dilate filter
    – Erode filter
    – Gaussian filter
    – Median filter
    – Prewitt X filter
    – Prewitt Y filter
    – Saturate filter (optimized)
    – Separable filter (optimized)– Sobel filter
    – Sobel filter (optimized)
    – Sobel X filter
    – Sobel X filter (optimized)
    – Sobel Y filter
    – Sobel Y filter (optimized)
    – Sobel XY filter
    • Histogram
    • Integral Image
  2. APEX-CV Pro Library
•APEX-CV Feature Detection Library
- Block Matching
- Binary Robust Independent Elementary Features
- Oriented Fast and Rotated BRIEF
- Canny Edge Detector
- GFTT/HARRIS Corner Detector
- HOG Object Detector
- Aggregated Channel Feature Based Pedestrian Detector• Hough Line Detector
- FAST9 corner detection
•APEX-CV Image Pyramid Library
- Gaussian Image Pyramid
- Multi-scale Gaussian Image Pyramid• Laplacian Image Pyramid
•APEX-CV Image Transform Library
- Affine Transformation
- Histogram Equalization
- Image Remap
- Image Resize
- Tone Mapping Operation
• APEX-CV Feature Tracking Library
- Single-Scale Lucas-Kanade Optical Flow• Multi-Scale Lucas-Kanade Optical Flow

2.APEX CV用法

一般在需要某个功能时,在library中搜索,基本的使用方法比较固定:找到相应的头文件,初始化APEX-CV类(Initialize),如果使用过程中需要改变操作输入输出流,需要重新构建输入输出流(ReconnectIO),调用处理方法执行整个操作(Process)。 这里以图像常用的边缘检测操作--Canny为例进行介绍: apexcv::Canny canny_op; lRetVal |= canny_op.Initialize(in, out, 1280, 720, 20, 80, 3); if(!lRetVal) { cout << "Initialize failed!" << endl; } lRetVal |= canny_op.ReconnectIO(in, out, 1280, 720); if(!lRetVal) { cout << "ReconnectIO failed!" << endl; } lRetVal |= canny_op.Process(); if(!lRetVal) { cout << "Process failed!" << endl; } 几乎所有的APEX CV类都可以用这种类似操作进行使用,唯一不同的是不同的类中会有不同参数,用法和参数都可以查阅s32v234_sdk中的相关手册,比较坑的一点是这些API文档都比较简略,每一个类只是介绍参数列表,没有相关用法说明和demo示例,需要自己测试使用。 另外一个关键点是每个使用的APEX CV类不但要找到其头文件,还要找到相对应的静态库(.a文件),引用到项目中。依然以Canny举例如何在DS中引入静态库: 首先介绍一下DS,DS全称是NXP S32 Design Studio,是一个专门用于编写S32V程序的IDE 这款IDE是基于eclipse修改的,所以如果你是eclipse的使用者,那么上手S32 Design Studio是一件很轻松的事 S32 Design Studio拥有Windows和Linux两个操作系统的版本,个人建议使用Linux环境来进行开发,因为如果使用Windows版本进行编译会极其的慢,一个项目在Windows上编译要一分钟多,而在Linux中只需要十几秒就能完成。 回到我们的主题,要在S32 Design Studio中为我们的项目加入所需的静态库,需要右键项目 -> Properties -> C/C++ General -> Paths and Symbols ,在Library Paths中加入包含.a静态库的目录路径,在Libraries中加入静态库名 要注意的是要在静态库文件名前加“lib”,否则将无法找到该文件,如在s32v234_sdk中Canny的静态库文件名为apexcv_pro_canny.a,需更名为libapexcv_pro_canny.a 至此,引用APEX CV相关的编译问题就基本完成,在使用过程中如果没有找到想用CV操作,如透视变换等,可以研究一下官方Dome,这里有一些在APEX CV library中没有的但已经实现好的类可以使用。