Haar解算系統、圖像分類系統、關聯方法和關聯計算機程序產品的制作方法
【技術領域】
[0001] 本發明涉及HAAR解算系統、圖像分類系統、關聯方法以及關聯計算機程序產品。
【背景技術】
[0002] 基于Haar特征的對象檢測和對象識別經常被使用。Haar特征是在矩形圖像區域 上的累積像素值。積分圖像被用于預計算值,其可以被用于容易地計算密集圖像位置處的 Haar特征。國際專利申請WO 2007/128452 A2中給出了一個例子。WO 2007/128452 A2描 述了用于在圖像上操作的方法和裝置,特別是用于在不同比例下并且具有不同旋轉,例如 對于比例-不變和旋轉-不變的興趣點檢測和/或描述的興趣點檢測和/或描述工作。WO 2007/128452 A2描述了用于匹配在相同圖像或不同圖像中的興趣點的方法。
[0003] 海量并行處理越來越多地用于處理圖像,例如用于執行像色彩空間轉換一樣的基 于像素的處理。然而,由于積分圖像在像素到像素間和線到線之間具有數據依賴性,因此已 知的海量并行架構不能很容易地計算積分圖像和Haar特征。
【發明內容】
[0004] 正如附屬權利要求中所描述的,本發明提供了一種HAAR解算系統、一種圖像分類 系統、一種包括了安全系統的車輛、一種解算圖像的預定義矩形區域的HAAR特征的方法、 一種檢測圖像中的圖像特征的方法、一種用于并行處理器系統的計算引擎、一種用于解算 HAAR特征的計算機程序產品、一種用于用于導致并行處理器系統的一個或多個計算引擎解 算積分圖像值的計算機程序產品。
[0005] 本發明的具體實施例在從屬權利要求中被陳述。
[0006] 根據下文中描述的實施例,本發明的這些或其它方面將會很明顯并且被闡述。
【附圖說明】
[0007] 根據附圖,僅僅通過舉例的方式,本發明的進一步細節、方面和實施例將被描述。 為了簡便以及清晰,附圖中的元件不一定按比例繪制。在附圖中,對應于已經描述元件的元 件可能具有相同的參考符號。
[0008] 圖1示意性地顯示了包括HAAR解算系統的系統的實施例的一個例子;
[0009] 圖2示意性地顯示了將圖像分隔成圖像塊以及將圖像塊分配給計算引擎以用于 并行處理;
[0010] 圖3a-圖3c示意性地顯示了圖像的圖像塊內的掃描方案;
[0011] 圖4示意性地說明了解算HAAR特征的已知方法;
[0012] 圖5示意性地顯示了通過使用S頂D并行計算架構解算HAAR特征的已知方法;
[0013] 圖6和圖7示意性地說明了根據實施例的解算HAAR特征的方法;
[0014] 圖8和圖9示意性地說明了根據實施例的解算HAAR特征的方法;
[0015] 圖IOa和圖IOb示意性地說明了根據另一個實施例的解算HAAR特征的方法;
[0016] 圖11示意性地顯示了示例用戶交互系統;
[0017] 圖12示意性地顯示了包括了安全系統的車輛;
[0018] 圖13顯示了包括了計算機程序產品的計算機可讀介質;以及
[0019] 圖14顯示了包括另一個計算機程序產品的另一個計算機可讀介質。
【具體實施方式】
[0020] 圖1示意性地顯示了系統SYS的實施例的一個例子,該系統SYS包括相機CAM、 HAAR解算系統HSYS、主機處理器HOST和用戶接口設備UIDEV。HAAR解算系統HSYS包括相 機接口 CAM-IF、存儲器MEM、海量并行處理器單元MPARU和主處理器MCPU。相機接口 CAM IF 可被連接到相機CAM并且被布置成從相機CAM接收圖像數據并且將圖像數據存儲在存儲器 MEM中。每個圖像包括如圖2所示的矩形像素陣列的圖像數據:圖像頂G(i X j)或簡言之 頂G,包括具有行編號RP1,. . .,RPi的多個i像素行以及具有列編號CP1,. . .,CPj的多個j 像素列。每個圖像頂G (i X j)被存儲在存儲器MEM中。該MEM可能包括DDR存儲器。海 量并行處理器單元MPARU包括多個計算引擎⑶1,⑶2,⑶3, ... CUn的陣列MPA。圖1顯示 了陣列MPA包括至少4個計算引擎,但是替代實施例可能使用更少的計算引擎,例如2個, 而其它替代實施例可能使用更多的計算引擎,例如8個、16個、32個、64個、128個或其它適 當數目。
[0021 ] 多個計算引擎可以是兩個計算引擎CUl,CU2。在替代實施例中,多個計算引擎可能 包括4個、8個或更多,例如至少16個計算引擎,例如32個計算引擎、64個計算引擎或128 個計算引擎、或等于2的冪或不同于2的冪的其它數目的計算引擎。
[0022] 多個計算引擎⑶1,⑶2,⑶3, ... CUn被布置成與公共指令一起執行。例如,計算 引擎⑶1,⑶2,⑶3, ...CUn可以被布置成所謂的單指令多數據(SIMD)布置中。多個計算 引擎⑶1,⑶2,⑶3, ...CUn可以被布置并可操作為單一程序、多數據(SPMD)型架構,其中 多個計算引擎⑶1,⑶2,⑶3,...⑶被布置成通過對不同塊執行基本上相同的程序來并行 地對相應圖像數據塊執行解算。當以單程序多數據(SPMD)架構操作時,任務可以被分割并 同時運行在具有不同輸入(例如圖像數據不同塊)的多個計算引擎上。例如,計算引擎可 能并行地在不同數據上運行相同代碼。其它架構可能例如具有運行基本上相同指令流的計 算引擎組,其中每個計算引擎占據指令流中任何分支的其自身路徑,例如如果/那么/否則 結構中的不同分支或取決于例如計數器或塊索引的不同分支。
[0023] 多個計算引擎⑶1,⑶2,⑶3, ...CUn被布置成經由相應的總線AHB1,AGB2, AHB3, ...,AHBn來訪問存儲器MEM。多個計算引擎⑶1,⑶2,⑶3, ... CUn可以被布置成從 存儲器MEM讀取和向存儲器MEM寫入。存儲器MEM可以是單一存儲器,或者可能包括多于 一個存儲器。如果存儲器包括多于一個存儲器,那么多個計算引擎⑶1,⑶2,⑶3,... CUn可 以被布置成從一個存儲器讀取并且向多于一個存儲器MEM中的另一個存儲器寫入。主處理 器MCPU被布置成經由總線AHBM訪問存儲器,并且被布置成至少從存儲器MEM讀取數據,例 如讀取由計算引擎⑶1,⑶2,⑶3. .. CUn寫入到存儲器MEM中的數據。
[0024] 具有多個計算引擎⑶1,⑶2,⑶3,. .. CUn的陣列MPA被連接到陣列控制器MPAC0N。 陣列控制器MPACON被布置成經由控制連接INST1,INST2, INST3, ...,INSTn來控制多個計 算引擎CU1,CU2, CU3, ·…CUn,正如圖1所示,INST1,INST2, INST3,…,INSTn可以從公共 控制連接INSTCOM得出。在一個實施例中,陣列控制器MPACON可以被布置成經由公共控 制連接INSTC0M和相應的控制連接INSTl,INST2, INST3, ..·,INSTn給計算引擎CUl,CU2, CU3, ... CUn提供指令和時鐘。在替代實施例中,陣列控制器MPACON可以被布置成經由公 共控制連接INSTCOM和相應的控制連接INSTl,INST2, INST3, ..·,INSTn給計算引擎CUl, ⑶2,⑶3,... CUn提供時鐘,并且計算引擎⑶1,⑶2,⑶3, ... CUn被布置成依賴于由陣列控 制器MPACON提供的時鐘來從存儲器MEM獲取指令。
[0025] 為了使多個計算引擎⑶1,⑶2,⑶3,...⑶并行地對相應的圖像數據塊執行解算, 圖像頂G(i X j)可以被認為是圖像數據塊的陣列,正如參照圖2將要描述的。包括具有行 編號RP1,. . .,RPi的多個i像素行和具有列編號CP1,. . .,CPj的多個j像素列的頂G(i X j)可以被認為是塊陣列WMG(mxn),該塊陣列WMG(mxn)是具有塊行編號RB1,RB2,..., RBm的多個m行塊和具有塊列編號CB1,CB2, CB3, . . .,CBn的多個η列塊的陣列。多個 塊可以因此被標記和編號為 BLK(I),BLK(2),BLK(3),. . .,BLK(n),BLK(n+l),BLK(n+2), BLK(n+3),· · ·,BLK(2n),· · ·,BLK(mn+l),BLK(mn+2),BLKM(mn+3),· · ·,BLK(mn+n)。所述 塊還可以被稱為圖像塊。
[0026] 圖2示意性地顯示了將圖像分隔成圖像塊以及將圖像塊分配給計算引擎以用于 并行處理。在一個實施例中,如圖2所示,每行塊的塊數目η等于計算引擎⑶1,⑶2,... CUn 的數目,但是在替代實施例中,計算引擎的塊數目可以不同于每行塊的塊數目。在下文中, 描述了非限制性實施例,其中將要描述計算引擎的數目等于每行塊的塊數目。本領域技術 人員將會了解數目不同的替代實施例是如何可以被設計。
[0027] 如圖2所示,多個圖像數據塊可以通過相應的多個計算引擎并行處理。多個計算 引擎⑶1,⑶2,⑶3, ... CUn例如可以被布置成一次處理塊的一行,處理完一行之后,繼續處 理下一行。這是由圖2中的虛線雙箭頭所示,它顯示了系統的快照:包括塊BLK(η+1),..., BLK(2η)的行塊RB2被用作將要由相應的計算引擎⑶1,⑶2,⑶3, ... CUn處理的η個處理 塊 PBLKl,PBLK2, PBLK3, ···,PBLKn 的處理行塊 ΕΡ。
[0028] 當計算引擎CUp處理圖像塊PBLKp時,計算引擎掃描圖像塊的所有像素以檢索像 素塊的像素數據值,并且執行像素數據解算,例如求和。至此,計算引擎CUp可以被布置成 使用多個可能的掃描方案之一。另外,計算引擎CUp可以是被布置成一次處理一個像素的 標量處理器,或被布置成一次處理多個像素(例如多個水平鄰居或多個垂直鄰居)的向量 處理器。圖3a-圖3c示意性地顯示了圖像的圖像塊內的可能的掃描方案。本領域技術人 員將了解更多的掃描方案是可能的,并且可能會在其它實施例中使用。例如,掃描方案可以 是所謂的水平掃描方案,其中掃描是從相應行的起始到行的結尾逐行執行,或是所謂的垂 直掃描方案,其中掃描是從相應列的起始到列的結尾逐列執行。
[0029] 圖3a顯示了水平掃描方案,其中計算引擎CUp包括用于一次處理單一像素 PixlPROC的標量單一像素處理器內核。在處理像素 PixlPROC之后,計算引擎移動到水平 相鄰像素,直到該行上的塊的最后像素,即在塊內從像素列CPBl到像素列CPB(j/n):然后, 計算引擎CUp繼續處理下一行的第一像素,直到處理了塊PBLKp的所有行RPB1,. .,RPM(i/ m) 〇
[0030] 圖3b顯示了水平掃描方案,其中計算引擎CUp包括向量處理器內核,所述向量處 理器內核被布置成一次處理多個水平相鄰像素 PixvecHPROC,即位于相同行上但是在相鄰 列的像素。在完成處理多個水平相鄰像素 PixvecHPROC之后,計算引擎CUp移動到下一個 多個水平相鄰像素。
[0031] 圖3c顯示了水平掃描方案,其中計算引擎CUp包括向量處理器內核,所述向量處 理器內核被布置成一次處理多個垂直相鄰像素 PixvecVPROC,即位于一列內相鄰行上的像 素。在完成處理多個垂直相鄰像素 PixvecVPROC之后,計算引擎CUp移動到下一列,以處理 下一個多個垂直相鄰像素。
[0032] 多個計算引擎⑶1,⑶2,⑶3, ... CUn的每個計算引擎因此可能包括或作為被布置 成同時處理多個像素的向量處理器。
[0033] 塊內的不同掃描方案可以在本發明的不同實