作者介紹了如何將 OpenCV 和類似工具用於數位視訊分析和方法,以便使用集群和分散式系統設計來擴展此類分析。 前幾期文章中討論了專為視頻分析和新的 OpenVX 硬體加速而設計的副處理器,可將它應用到本文中提供的電腦視覺 (CV) 示例中。 這種新的以資料為中心的 CV 和視頻分析技術需要系統設計人員反思應用軟體和系統設計,以滿足嚴苛的需求,比如對大型、公共設施和基礎架構,以及一個更加娛樂化、互動式和更安全的世界的即時監視和安全保護。
使用標準(比如來自 Motion Picture Experts Group 的標準,簡稱 MPEG 標準)來編碼視頻,以進行壓縮、傳輸、解壓和顯示的數位視訊,已引發了計算行業的巨大變革, 從社交網路媒體和業餘數位影院到改善的培訓和教育的變革。 解碼和使用數位視訊的工具每天都在被廣泛使用,但視頻分析需要編碼和分析未壓縮視頻幀的工具,比如 Open Computer Vision (OpenCV)。 一個容易獲取且功能強大的數位視訊編解碼工具是 FFmpeg;對於靜態圖像,GNU Image Processing (GIMP) 非常有用。 使用這 3 個基本工具,開源開發人員完全能夠開始探索電腦視覺 (CV) 和視頻分析。 但是,在分析這些工具和開發方法之前,讓我們首先為這些詞彙提供一個更好的定義,並想想它們有哪些應用。
在本系列的第一篇文章 雲擴展,第 1 部分:構建您自己的雲並使用按需 HPC 進行擴展 中,提供了一個使用 OpenCV 的簡單示例,該示例在來自 Linux® Web 攝像頭的連續即時視頻上實現了 Canny 邊緣轉換。 這是一個 CV 應用示例,您可將它用作分割圖像的第一步。 一般而言,CV 應用涉及到採集、圖元(表示照度點的圖片元素)的數位影像格式、圖像和影像序列(影片)、處理和轉換、分割、識別以及最終的場景描述。 理解 CV 的用途的最佳方式是查看示例。 圖 1 顯示了一個面部和使用 OpenCV 的面部特徵檢測分析。 請注意,在這個簡單的示例中,使用了 Haar Cascade 方法(一種機器學習演算法)來執行檢測分析,該演算法能夠最準確地檢測未被擋住(例如我的小兒子的臉轉到了一側)或已被陰影遮住時的面部和眼睛,以及在主體未斜視時的面部和眼睛。 以下或許是對 CV 做出的最重要的評論:它不是一個簡單的問題。 這一領域的研究人員通常已經注意到,儘管它自 50 多年前誕生以來獲得了長足的發展,但大部分應用仍然無法趕上一個 2 歲小孩的場景區分和識別能力,考慮到在廣泛的條件(照明、大小變化、方向和環境)下歸納和執行識別的能力時,尤其如此。
圖 1. 使用 OpenCV 執行面部識別
為了説明您理解 CV 中使用的分析方法,我創建了阿拉斯加州安克雷奇地區圖像的一個較小的測試集合,這些圖像可以通過 下載獲得。 這些圖像已使用 GIMP 和 OpenCV 進行處理。 我開發了 C/C++ 代碼來將 OpenCV 應用程式設計介面用於 Linux Web 攝像頭、預先採集的圖像或 MPEG 影片。 使用 CV 來理解視頻內容(影像序列,無論是即時內容還是來自預先採集的影像序列資料庫)通常被稱為視頻分析。
定義視頻分析
視頻分析被廣義地定義為對來自觀景窗(通常為可見光,但也可能來自光譜的其他部分,比如紅外線)或存儲的影像序列的數位視訊內容的分析。 視頻分析涉及到多個學科,至少包含:
圖像採集和編碼。 以一系列的圖像或壓縮圖像組的形式採集和編碼圖像。 視頻分析的這個階段可能很複雜,包括光度計(觀景窗)技術、類比編碼、幀和序列中的光線抽樣(圖元)陣列的數位格式,以及壓縮和解壓此資料的方法。 CV。 圖像渲染的逆過程,其中已採集的場景被轉換為描述,與一個描述被渲染為場景的情況相反。 CV 假設:在人類可查看的任何地方,都應執行這個使用電腦進行 「查看」 的過程,這種查看與機器視覺通常是區分開來的。 像人一樣查看常常意味著 CV 解決方案採用了機器學習。 機器視覺。 同樣是渲染的逆過程,但最常在受到嚴格控制的環境中用於流程式控制制用途,例如,檢查印刷電路板或成品零件,確保它們在幾何學角度上在容錯範圍內。 影像處理。 可以對來自光度計和輻射計(測量電磁輻射的探測器)廣泛應用數位信號處理方法,以便理解觀測目標的屬性。 機器學習。 通過培訓資料對一種演算法進行改良來開發一些新演算法,讓該演算法在使用新資料進行測試時能夠提高性能並進行推廣普及。 即時和互動式系統。 這些系統需要在最後期限內回應一個服務請求,或者至少達到符合與服務客戶或使用者之間簽訂的 SLA 的服務品質。 存儲、網路、資料庫和計算。 這些都是在處理視頻分析中使用的數位資料所需要的,但一個細微而又重要的區別是,這是一個內在的、以資料為中心的計算問題,如本系列的 第 2 部分 中所述。
因此,視頻分析在範圍上比 CV 更廣,是一個系統設計問題,可能包含智慧型電話等移動元素(Google Goggles),以及針對總體系統的 CV 方面的基於雲的服務。 例如,IBM 開發了一個稱為 VCAS(video correlation and analysis suite,視頻關聯和分析套件)的視頻分析系統,IBM 旅遊和運輸解決方案簡報 Smarter Safety and Security Sol ution for Rail [PDF] 中專門介紹了它;它是一種系統設計概念的不錯例子。 對一個視頻分析解決方案中涉及的每個系統設計學科的詳細介紹不屬於本文的範圍,不過 參考資料 中提供了適合系統設計人員的更多資訊的線索。 本文剩餘部分將重點介紹 CV 處理示例和應用程式。