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