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