人腦是我們所知道的最先進的緊湊型處理單元;但是,由于有了新的處理器、工具、架構和軟件,圖像處理方面的改進可能會讓機器很快超越我們。新技術及其快速采用的速度為工業制造和檢查以及醫藥、消費電子/游戲,當然還有機器人技術帶來了巨大的潛力。
現在,我們在執行簡單的任務(例如裝滿一罐水)時會執行比例、積分和微分 (PID) 等高級功能。事實上,我們進行如此復雜的運動控制和平衡,機器人可能很快就會嫉妒我們。然而,我們杰出的能力之一是我們能夠在我們的視野中挑選出模式、執行物體識別、深度感知、跟蹤運動和測量相對速度甚至加速度,這使我們與大多數機器不同。
早期的圖像處理專注于澄清靜止圖像,許多用于邊緣增強和呈現細微細節的算法并未在快速幀速率和高分辨率圖像上執行。處理器更簡單、更慢,而且執行 DSP 功能的能力更差,因此結果很粗略,獲得速度很慢,而且遠不及有眼光的人眼和大腦那么可靠。
然而,隨著我們對機器的進化,我們開始賦予它們我們無法比擬的卓越能力,而圖像和實時視頻處理是我們未來機器(霸主?)將擁有的這些能力之一。這要歸功于我們現在正在制定的處理器、工具、算法和啟發式方法,我們能夠賦予機器這些能力,這些能力可能很快就會遠遠超過我們自己的能力。
內存和架構很重要
視頻信息在數字域中處理,因此無論圖像來自 NTSC、PAL、RGB、YUB、分量還是隔行或非隔行的 HD 源都無關緊要。前端同步和解碼器芯片和硬件階段可以很好地捕獲圖像像素并將它們填充到存儲器陣列中,通常作為光柵化掃描線。
然而,內存架構和拓撲確實很重要,因為它們會影響處理器訪問和操作數據的方式。例如,您可以以線性方式將圖像數據壓縮到內存中,但這可能意味著相鄰幀不會在可位尋址的內存邊界處對齊。例如,讓幀掃??描線的第一行與二進制計數器的零點對齊會更快更容易。如果不需要復雜的尋址方案來索引并逐幀查看視野的相同部分,則比較連續的幀數據變得更容易訪問和獲得。
另一個可以簡化視頻處理和信息提取的與內存相關的因素與位平面分離有關,尤其是隨著像素分辨率和調色板深度的增加。發生這種情況時,以最高有效位 (MSB) 到最低有效位 (LSB) 的方式查看單色圖像的能力可以突出邊界和邊緣(圖 1)。僅查看 MSB 渲染的圖像時會出現最大的對比。可以通過查看連續不太重要的位渲染圖像來提取一些深度和漸變信息。
圖 1:由于最高有效位 (MSB) 比最低有效位 (LSB) 顯示出更多的對比度,因此位平面分離使邊緣更加清晰。這意味著需要抽取并行視頻數據并將位大小分離到單獨的單色存儲平面中。(來源:Digi-Key)
這意味著必須將圖像數據實時分離為面向位的高效內存塊,處理器可以對其進行索引并快速檢查。這就是硬件架構發揮作用的地方。
并行與流水線
可以使用兩種主要的架構方法來完成實時視頻處理任務。第一種是使用多個處理器,并為每個處理器分配問題的一部分,或者并行、串行或兩者兼而有之。例如,一個由 24 個處理器組成的陣列,每個處理器檢查一個位平面分隔的內存塊,其識別邊緣和邊界的速度比必須一次檢查每個塊的單個處理器快 24 倍。任務執行處理器將任務委托給每個單獨的處理器,并以部分“消化”的形式檢查濃縮的結果。這允許下一階段的決策處理器以響應更快的方式對數據采取行動。
這對于立體視覺處理尤其重要,因為在立體視覺處理中深度感知更容易實現。位平面分離的圖像可能會顯示邊緣,但是,每個相機內存塊的不同部分中相同邊緣的位置將用于通過數字三角算法確定深度。當這些邊緣在兩個相機的內存塊之間逐幀移動時,處理器可以比嘗試逐幀使用并行彩色像素來更快地提取距離、速度和方向數據(圖 2)。
監控各個位平面的各個處理器可以適應陰影、光源,甚至可以在被跟蹤對象在視野中其他移動或靜止對象的前后移動時識別被跟蹤對象的部分模糊邊緣。
圖 2:立體成像可以通過檢查檢測到的內存陣列中的位置以及每個相關圖像的失真來利用位平面分離帶來的對比度。這些可用于確定物體在連續幀中移動時的深度和相對運動。(來源:Digi-Key)
同樣重要的是要注意可以使用抽取的像素和調色板分辨率。并非需要 24 位或 36 位 A/D 轉換的彩色像素的每一位來提取所需的信息。環境光水平和顏色可用作算法的一部分,以確定分辨率的最佳抽取。
簡單與復雜架構
術語處理器在此處可能有所不同。它可以是相當高功率、快速時鐘的 CISC DSP 類型的功能,或者是基于硬件的功能 RISC 塊,或者介于兩者之間的任何地方。這是設計工程師可以做出另一種架構選擇的地方。
我們是使用具有復雜架構和信號處理特性的多處理器或多核處理器,還是使用在離散硬件(如 FPGA 結構)中實現的專用邏輯塊?兩者都是有效的方法,并且都具有它們的特性和優點。此外,它們不是相互排斥的:它們可以一起用于為手頭的任務創建最佳解決方案。
例如,用于質量控制檢測應用等應用的視覺系統可以使用類似快照的檢測算法來查看特定事物,如焊接連續性、焊盤完整性、電路板跡線一致性和結構缺陷。這可能發生在電路板移動經過靜止的視野時,或者當相機通過機器人機構四處移動時。
NXP i.MX 6DualPlus 和 i.MX 6QuadPlus應用處理器等多核處理器系列專為圖形密集型應用而設計。該系列采用 1.2GHz ARM Cortex-A9 處理器,具有先進的內存管理和接口,用于 64 位 DDR3 或雙通道 32 位 LPDDR2 內存與內部 L2 高速緩存 RAM 集成。
這種情況下的一個關鍵特性是 3D 圖形加速,帶有四倍 720-MHz 著色器,可以使用專用硬件提供高性能圖形。特定部件,如四核 32 位MCIMX6QP5EYM1AA支持 - 在硬件中 - 高達 1920 x 1200 (HD) 分辨率的雙顯示器,這意味著幀存儲器和刷新在本質上支持圖像采集和顯示(對于調試和測試非常有用出算法),以及圖像處理。
硬件調整大小和去隔行簡化了視頻數據的格式化和索引,以允許更多的編碼資源用于圖像數據處理和覆蓋到顯示數據上。這種疊加的示例包括調整大小的圖像,這些圖像可以查看數據幀的特定部分以減少處理時間。另一個例子是使用著色器,它不僅可以使圖像在人眼中更加突出,而且還可以帶出要處理的圖像中的細節。
使用 NXP MCIMX6QP-SDB 開發平臺的示例代碼和硬件設計也是一個優勢,該平臺包括完整的硬件設計文件和對 Android、Linux 和 FreeRTOS 操作環境的直接支持。為了簡化接口,板載 HDMI 連接和 LVDS 連接并支持兩個 1 GHz MIPI DSI 數據通道,相機 MIPI CSI 端口也是如此(圖 3)。
就其本身而言,這些處理器能夠被編碼以在單個高分辨率立體快照幀中查看許多焊點的錐形形狀,例如,根據 PC 板質量檢測視頻處理等應用的需要。
此外,可以級聯多個處理器以擴展功能。但是,當軟件仍然太慢時,單獨使用專用硬件或與這些高端類型的處理器結合使用可以將性能提升到最高水平。
基于硬件的算法
流水線硬件邏輯定序器總是比基于軟件的處理器執行得更快。管道可能需要幾個周期才能填充,但是一旦填充,每個時鐘周期都在傳遞處理和消化的信息,而不是編碼方法可能需要多個時鐘周期來實現相同的傳遞水平。
雖然檢測機器可能不需要基于硬件加速的超快速度,但許多應用程序需要。與敵方野戰炮兵機器人作戰的野戰炮兵機器人只有在其目標獲取、運動控制和準確性都優越的情況下才能獲勝。最快、最精簡的硬件將繼續存在。
現代邏輯陣列具有密度、速度和深度,以及存儲器和外圍接口,以適應非常復雜的任務,包括實時視頻。大規模邏輯陣列的多門級架構大部分已被查找表 (LUT) 邏輯元件取代,這些邏輯元件能夠在單個同步時鐘周期內輸出每個邏輯塊的結果。請記住,現代邏輯陣列可以在 GHz 范圍內提供時鐘。
要使用 FPGA 開發視頻處理算法,您將需要使用一個平臺來實現目標部分、處理邏輯代碼模式的上傳、提供對 I/O 的訪問、具有干凈的時鐘源,并包含良好的 on-用于滿足特定需求的芯片硬宏,例如鎖相環 (PLL) 和高速存儲器接口。一旦您確定了制造商和零件系列,開發平臺就會到位。
以 National Instruments 的Digilent Nexys 視頻 FPGA 板為例,該板采用Xilinx高密度、高性能Artix 系列FPGA(圖 4)。這些范圍從 1300 到 16,825 個邏輯單元和從 45 到 740 個 DSP 切片功能塊。一個關鍵特性也是高達 509 MHz 的雙端口 RAM 速度,允許通過獨立的邏輯階段進行并發訪問和修改。
National Instruments 板使用低功耗 1 V 內核并具有四通道 SPI 閃存以及 DDR3 存儲器接口,可分別直接訪問外部非易失性和易失性存儲器池。HDMI 和 DVI 接口也使用最小化傳輸差分信號 (TMDS) 標準。
雖然開發平臺是在相對較快的時間框架內以相對較低的風險進行評估和設計的好方法,但最終,您將希望開發自己的電路板并使用自己的測試和開發平臺。幸運的是,Xilinx Vivado 工具套件在免費的 Webpack 許可下得到支持,其中包括創建 Microblaze 軟核處理器的能力,該處理器可在 FPGA 內部用作處理引擎,以指導和管理基于邏輯的流水線架構的可編程性??梢栽贜exys 網站上下載設計資源、示例項目、數據表和教程。
結論
憑借低功耗、高性能的半導體以及正確的工具、架構和算法,機器將在我們曾經認為自己遠超人類的領域迅速超越人類,例如模式識別、物體識別、深度感知、運動跟蹤和能力測量相對速度甚至加速度。
評論
查看更多