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