STM32 影像处理函式库STM32IPL是由 C 语言所编写的开放原始码软体函式库,提供了图像处理和电脑视觉功能,能加快在意法半导体(ST)的STM32 微控制器上开发视觉分析的应用。本产品在最新版 (v3.1.0)FP-AI-VISION1 功能套件中以STM32Cube 中介软体的形式推出。
图一 : 视觉深度学习模型的输入具有不同维度及图像格式,会需要预先处理原图。 |
|
一般来说,视觉深度学习模型的输入不同於相机拍摄的图像,深度学习输入因为具有不同维度及图像格式,会需要预先处理原图,例如缩放、影像格式转换和标准化等。而STM32IPL可提供实用且现成的软体套件,以简化及加速影像预处理功能的开发。
主要特色
STM32IPL的主要特色如下:
- 提供开发人员实用且现成的软体套件,节省开发STM32平台影像处理和电脑视觉应用的时间。
- 满足使用嵌入式系统的影像处理及电脑视觉功能时最常见的需求。
- 透过最大程度的封装和隐藏,简化且加速应用程式的开发、降低常见之影像处理的复杂度,并提升电脑视觉运算的效能。
STM32IPL依不同功能配置於各种模组中,如图二所示:
图二 : STM32IPL依不同功能配置於各种模组 |
|
这些模组可被划分至下方巨集群组中:
- 函式库初始化和去初始化群组(深绿模组)
- 影像建立、初始化和发布等群组(浅绿色模组)
- 影像转换功能,如滤波、色彩转换、缩放、morphological operators及warping等群组(深黄色模组)
- 特徵和物件撷取功能,如边缘和斑点侦测器以及霍夫转换等群组(浅黄色模组)
- 线条、长方形和椭圆形等图形操作功能群组(深蓝模组)
- 影像读取和写入功能的群组(浅蓝模组)
- 在影像内绘制图形元素的功能群组(深灰模组)
- 最後一个群组包含计算完整图像和图像统计等其他模组(浅灰模组)
下方照片为STM32IPL的图像处理功能范例:
图四 : 左:经高斯滤波器处理後;右:经坎尼边缘侦测演算法处理後 |
|
软体架构
采用STM32IPL的典型STM32应用程式软体架构,如图六所示:
图六 : 采用STM32IPL的典型STM32应用程式软体架构图 |
|
STM32IPL位於BSP和HAL的中介软体内,除了下列两种利用子部分STM32 MCU所提供的硬体功能之外,绝大部分的STM32IPL功能皆不受平台影响:
- 在档案上执行读取/写入作业的I/O功能。指的是两个用於处理受支援影像档案格式 (如 BMP、PPM、PGM 和 JPEG)的读取/写入函式。上述函式的运作仰赖於下列第三方开放原始码函式库(属於STM32Cube中介软体元件的一部分):
o FatFs提供在FatFS档案系统上的读取/写入操作功能。例如读取和写入 microSD卡内的影像。
o LibJPEG提供JPEG编码和解码功能。
- 此函式能让STM32 DMA2D在萤幕上快速绘制图像,其中DMA2D为适用於图形作业的硬体加速器。
高阶功能范例
本章节以霍夫转换和物体侦测两项高阶功能作为范例,说明其运作原理及对於影像的作用:
霍夫转换
霍夫转换是一种能侦测简易形状的特徵撷取方法,而「简易」是指可以用少数叁数来表示的图案,例如:一条线可由斜率、截距两项叁数做表示,而圆形则是以圆心座标和半径三项叁数做表示。因此,霍夫转换技术十分适用於在图像中找出像是线条、圆形的图案。
STM32IPL支援两种霍夫转换功能:
- STM32Ipl_FindLines() 可透过霍夫转换找出影像中所有线条。
- STM32Ipl_FindCircles() 则可透过霍夫转换找出影像中的圆形。
下方两张照片展示了使用霍夫转换侦测线条的结果。
图七 : 左:原图;右:经过霍夫转换的线条侦测後结果 |
|
然而,侦测到的线条品质有很大程度取决於edge map,因此在实务上,使用霍夫转换技术的前提是要能够控制环境,从而得出一致的edge map,或是透过训练边缘侦测器,找出所需的特定边缘种类。
下方两张照片为使用霍夫转换侦测圆形的结果,结果同样有很大程度取决於可用边缘的品质,以及对於所需侦测圆形尺寸的先备知识。
图八 : 左:原图;右:经过霍夫转换的圆形侦测後结果 |
|
物体侦测
物体侦测是一种电脑视觉技术,可辨识和定位图像或影片中的物体,此技术常用於自驾车、机器人、人脸辨识等情境。
STM32IPL提供三种物体侦测功能:
- STM32Ipl_LoadFaceCascade() 载入正面脸部串列。
- STM32Ipl_LoadEyeCascade() 载入眼部串列。
- STM32Ipl_DetectObject() 侦测特定串列描述的物件。
下方照片展示了脸部侦测和眼部侦测两项功能的结果:
若欲取得此STM32IPL函式库,使用者必需下载最新的FP-AI-VISION1功能套件,存取路径如下:
FP-AI-VISION1_V3.1.0\Middlewares\ST\STM32_ImageProcessing_Library\Inc