相關申請的交叉引用
2016年3月25日提交的日本專利申請第2016-061868號的公開的全部內容通過引用合并于此,該公開包括說明書、附圖和摘要。
背景技術:
本發明涉及圖像處理裝置、圖像處理方法和車輛控制裝置。
對執行圖像處理和音頻處理的數據處理裝置的高速操作的需求逐年提高。特別地,對于應用于車輛的圖像處理裝置和圖像識別裝置,不僅需要高速處理而且需要準確地檢測和識別物體的技術。
近年來由于內容的豐富和多媒體的發展,在圖像數據增大之后,該趨勢增長越來越多。
特別地,需要巨量的圖像數據和巨大數量的處理次數來根據前方監控系統中的高密度像素信息計算運動信息和距離信息。因此,可以預料此后將進一步需要高性能。
為了滿足需求,日本未經審查的專利申請公開第2003-296096號公開了通過流水線處理執行并行處理的算術裝置。在日本未經審查的專利申請公開第2003-296096號中多個算術單元串聯耦合。前級算術單元的算術運算數據輸出至后級算術單元。
日本未經審查的專利申請公開第2002-182905號公開了通過多個算術元件執行算術指令的裝置。在日本未經審查的專利申請公開第2002-182905號中,可以直接從算術元件中的每一個算術元件訪問寄存器。寄存器保存每個算術元件的算術運算結果。
技術實現要素:
近年來,為了控制復雜內容,需要算術單元通過使用另一個算術單元的算術運算結果執行算術運算的復雜控制。每個算術單元可以參考在前級算術單元之前布置的算術單元的處理結果。在該情況下,在日本未經審查的專利申請公開第2003-296096號中公開的流水線配置中,需要將處理結果作為輸入再次分配給后級算術單元。當流水線級的數量很大時,指令系統變得復雜。此外,存在選擇寄存器的控制復雜化的問題。
此外,當將日本未經審查的專利申請公開第2002-182905號中描述的方法應用于在“accurateandefficientstereoprocessingbysemi-globalmatchingandmutualinformation”(因特網搜索:http://www.robotic.dlr.de/fileadmin/robotic/hirschmu/cvpr05hh.pdf)中描述的立體圖像時,出現保存中間生成數據的寄存器的數量增加的問題。
在諸如立體處理和光學流處理的處理中,存在與目標圖像比較的比較圖像。在立體處理中,不同相機處理相同時間的圖像。在光學流處理中,相同相機處理不同時間的圖像。考慮通過使用兩個圖像的像素數據執行算術運算的情況。由多個級對流水線處理進行配置。存在放大和選擇被在每個級中重復的許多算術運算。
放大是計算許多選擇候選的算術運算。選擇是從多個選擇候選當中選擇最優數據的算術運算。因此,在諸如立體處理和光學流處理的處理中,生成中間生成的巨量選擇候選或者用于生成選擇候選的巨量數據。因此,當采用在一維通路上執行應用于立體處理和光學流處理的函數結果的優化計算的方法時,出現保存中間生成數據的寄存器的數量增加的問題。
其它目的和新穎的特性將通過附圖和本說明書的描述而變得清楚。
根據實施例,圖像處理裝置包括并行布置的多個流水線。流水線中的每一個流水線具有多級處理單元。處理單元中的每一個處理單元包括基于與第一圖像的目標像素相對應的目標像素數據和第二圖像中與目標像素的周邊像素相對應的周邊像素數據執行第一算術運算的第一運算器、基于根據第一運算器的算術運算結果的第一中間數據執行第二算術運算以及根據順序地改變周邊像素時的第一中間數據計算第二中間數據的第二運算器、基于第一中間數據執行第三算術運算以及根據順序地改變周邊像素時的第一中間數據計算第三中間數據的第三運算器、保存順序地改變周邊像素時的第二中間數據的寄存器以及延遲來自第三運算器的第三中間數據的延遲元件。
根據實施例,可以高效地執行圖像處理。
附圖說明
圖1是示出安裝有圖像處理裝置的車輛的配置的框圖。
圖2是示出圖像處理裝置的電路配置的控制框圖。
圖3是示出圖像處理方法的流程圖。
圖4是示出當使用通用硬件配置時圖像處理方法的圖像處理步驟的處理流程。
圖5是用于解釋圖4中的圖像處理中的第一圖像和第二圖像的像素的圖。
圖6是用于解釋圖4中的圖像處理的圖。
圖7是示出圖6中所示的處理中的執行流程的圖。
圖8是用于解釋使圖6中的流水線處理并行化的配置的圖。
圖9是示出圖8中所示的處理中的執行流程的圖。
圖10是用于解釋實施例中的目標像素和周邊像素的圖。
圖11是用于解釋根據實施例的圖像處理裝置中的處理的概念圖。
圖12是示出圖像處理裝置的主要部分的配置的圖。
圖13是示出圖12中所示的處理中的執行流程的圖。
圖14是示出圖像中所包括的像素的圖。
圖15是用于解釋像素傳播的數量和像素傳播方向的圖。
圖16是示出并行化程度與寄存器開銷之間的關系的圖。
圖17是示出行存儲器的配置的圖。
圖18是示意性地示出根據第二實施例的圖像處理裝置的處理單元的配置的圖。
圖19是示出圖18中所示的處理中的執行流程的圖。
圖20是示出根據另一個實施例的圖像處理裝置的配置的框圖。
具體實施方式
為了解釋的清楚起見,適當地省略和簡化下面的說明書和附圖。附圖中被示出為執行各種處理的功能塊的組件可以通過作為硬件的cpu、存儲器和其它電路來形成,以及通過作為軟件加載在存儲器中的程序等等來實現。因此,本領域技術人員應當理解,功能塊可以通過僅硬件、僅軟件或者這些的組合以各種形式來實現,以及功能塊不限于硬件、軟件以及這些的組合中的任何一個。在附圖中,相同組件由相同參考符號指示,并且適當地省略冗余描述。
上面描述的程序可以存儲在各種類型的非暫時性計算機可讀介質中以及被提供給計算機。非暫時性計算機可讀介質包括各種類型的有形存儲介質。非暫時性計算機可讀介質的示例包括磁記錄介質(例如,軟盤、磁帶和硬盤驅動器)、磁光記錄介質(例如,磁光盤)、cd-rom(只讀存儲器)、cd-r、cd-r/w和半導體存儲器(例如,掩模rom、prom(可編程rom)、eprom(可擦除prom)、閃速rom和ram(隨機存取存儲器))。可以通過各種類型的暫時性計算機可讀介質向計算機提供程序。暫時性計算機可讀介質的示例包括電信號、光信號和電磁波。暫時性計算機可讀介質可以通過有線通信路徑(諸如,電線和光纖)或者無線通信路徑向計算機提供程序。
根據實施例的圖像處理裝置是并行地對兩個圖像執行流水線處理的圖像處理裝置。即,圖像處理裝置包括并行布置的多個流水線。每個流水線包括多級處理單元。由處理單元計算的數據輸出至后級處理單元。從而,可以執行流水線處理。
例如,兩個圖像是由具有兩個相機的立體相機在左-右方向上同時捕獲的立體圖像或者由一個相機在不同時刻捕獲的兩個圖像。可以通過在立體處理和光學流處理中執行圖案匹配來獲得圖案的距離信息和運動信息。作為圖案匹配,可以使用“accurateandefficientstereoprocessingbysemi-globalmatchingandmutualinformation”(因特網搜索:http://www.robotic.dlr.de/fileadmin/robotic/hirschmu/cvpr05hh.pdf)中描述的半全局匹配。
在實施例中,將描述對由車輛上安裝的立體相機捕獲的立體圖像執行圖像處理的示例。此外,圖像處理裝置用于車輛的前方監控系統。可以基于圖像處理裝置的圖像處理結果來執行車輛的自動控制。
第一實施例
(車輛的配置)
首先,將對安裝圖像處理裝置的車輛的配置進行描述。圖1是示出車輛1的控制配置的圖。車輛1具有相機2、相機ecu(電子控制單元)3、euc4、制動器ecu5、加速器ecu6和轉向ecu7。車輛1不僅包括普通客車,而且包括公共汽車、卡車等等。
車輛1上安裝了相機2、相機ecu3、euc4、制動器ecu5、加速器ecu6和轉向ecu7。此外,車輛1設置有引擎、制動器、轉向設備、車輪等等。控制單元(諸如,相機ecu3、euc4、制動器ecu5、加速器ecu6和轉向ecu7)由硬件(諸如,微型計算機)和軟件(諸如,加載到存儲器中的程序)實現。
相機2是具有安裝在車輛1的左位置和右位置中的兩個相機的立體相機。相機2捕獲車輛1前方的圖像。由相機2的兩個相機捕獲的立體圖像輸出至相機ecu3。相機ecu3具有圖像處理裝置以及對立體圖像執行圖像處理。隨后,相機ecu3將圖像處理結果輸出至ecu4。例如,相機ecu3基于圖像處理結果計算從車輛1到障礙物的距離。
ecu4具有基于圖像處理結果控制車輛1的控制單元。例如,ecu4輸出控制信號以控制制動器ecu5、加速器ecu6和轉向ecu7。制動器ecu5根據控制信號控制車輛1的制動器。加速器ecu6控制車輛1的加速器。轉向ecu7控制車輛1的轉向設備。ecu4根據圖像處理結果輸出控制信號,使得可以借助于系統代替人類自動地控制車輛1。
(圖像處理裝置的控制配置)
接著,將參照圖2對作為根據實施例的圖像處理裝置的相機ecu3進行描述。圖2是示出相機ecu3的電路配置的控制框圖。相機ecu3具有至少一個cpu(中央處理單元)22、本地存儲器23、外部存儲器接口24、內部總線25、至少一個dsp(數字信號處理器)26、專用硬件27、接口28、相機接口29和相機接口30。
相機接口29、30是用于輸入來自相機2的圖像的接口。例如,由相機2的左相機捕獲的圖像通過相機接口29輸入到相機ecu3中。由相機2的右相機捕獲的圖像通過相機接口30輸入到相機ecu3中。在這里,將由相機2的左相機捕獲的圖像定義為第一圖像以及將由相機2的右相機捕獲的圖像定義為第二圖像。第一圖像中的像素數量與第二圖像中的像素數量相同。
內部總線25具有使cpu22、本地存儲器23、外部存儲器接口24、dsp26、專用硬件27、相機接口29和相機接口30耦合在一起的總線線路。接口28是用于輸入來自ecu4的數據/將數據輸出至ecu4的接口。外部存儲器接口24是用于輸入來自附圖中未示出的外部存儲器的數據/將數據輸出至附圖中未示出的外部存儲器的接口。
本地存儲器23存儲第一圖像和第二圖像中包括的像素數據。cpu22整體地控制本地存儲器23、外部存儲器接口24、內部總線25、dsp26、專用硬件27、接口28、相機接口29和相機接口30中的每一個。
cpu22、dsp26和專用硬件27是用于實現根據實施例的圖像處理方法的硬件。即,在cpu22、dsp26和專用硬件27中執行圖像處理。dsp26和專用硬件27包括行存儲器,該行存儲器是內部存儲器。
(處理流程)
接著,將參照圖3對相機ecu3中的圖像處理方法進行描述。圖3是示出相機ecu3中的圖像處理方法的流程圖。
首先,相機ecu3通過相機接口29和30接收由相機2捕獲的相機圖像(第一圖像和第二圖像)(s31)。隨后,相機ecu3通過外部存儲器接口24在外部存儲器中展開相機圖像(s32)。
接著,相機ecu3在本地存儲器23中展開外部存儲器中展開的像素數據(s33)。
相機ecu3基于本地存儲器23中存儲的像素數據執行圖像處理(s34)。具體地,當cpu22、dsp26和專用硬件對像素數據執行算術運算處理時執行圖像處理。
相機ecu3將圖像處理結果輸出至ecu4等等(s35)。例如,相機ecu3基于步驟s34中由相機2捕獲的第一圖像和第二圖像生成輸出圖像。輸出圖像由像素數量與第一圖像和第二圖像的像素數量相同的圖像數據形成。隨后,相機ecu3將輸出圖像作為圖像處理結果輸出至ecu4。可以根據需要使像素數量稀疏或者刪減像素數量。
ecu4可以基于圖像處理結果控制制動器ecu5、加速器ecu6和轉向ecu7。從而,控制制動器、加速器和轉向設備。因此,可以自動地控制車輛1。例如,通過圖像處理裝置獲得與障礙物的距離。當確定附近有障礙物時,加速器ecu6松開加速器以及制動器ecu5應用制動器,使得車輛1減速。替換地,轉向ecu7控制轉向設備以便避開障礙物。
(通用配置中的處理流程)
接著,將參照圖4對步驟s34中的圖像處理進行描述。圖4示出了由通用dsp26和專用硬件27執行步驟s34中的圖像處理時的處理流程。
相機ecu3在內部存儲器中展開本地存儲器中展開的像素數據(s41)。內部存儲器是dsp26或者專用硬件27中內置的行存儲器。內部存儲器存儲圖像處理中使用的圖像數據。隨后,相機ecu3對行存儲器中存儲的像素數據執行算術運算1(s42)以及將算術運算1的算術運算結果內部地保存在寄存器中(s43)。
接著,相機ecu3通過使用寄存器中保存的算術運算1的算術運算結果執行算術運算2(s44)以及將算術運算2的算術運算結果內部地保存在寄存器中(s45)。相機ecu3通過使用寄存器中保存的算術運算2的算術運算結果執行算術運算3(s46)以及將算術運算3的算術運算結果內部地保存在寄存器中(s47)。
圖4示出了將算術運算和內部保存重復三次的流程。然而,重復次數不限于三次。算術運算1至3例如是乘法-累加(mac)運算。
(單個流水線)
在這里,將參照圖5和圖6對圖4中所示的處理流程進行描述。圖5是用于說明第一圖像和第二圖像的像素的圖。圖6是用于說明算術運算1至3的圖。具體地,圖6示出了在流水線的一個級中執行的處理。
如圖5所示,圖像被示出為第一圖像r和第二圖像ref。將第一圖像r和第二圖像ref的水平方向(橫向方向)定義為x方向,以及將第一圖像r和第二圖像ref的垂直方向(縱向方向)定義為y方向。在這里,第一圖像r和第二圖像ref是沿x方向具有總像素數量d(d是大于或者等于2的整數)以及沿y方向具有總像素數量h(h是大于或者等于2的整數)的二維圖像。
第一圖像r和第二圖像ref的像素坐標被表示為(x,y)。例如,第一圖像r中的像素坐標(x,y)的像素被表示為r(x,y)。類似地,第二圖像ref中的像素坐標(x+1,y)的像素被表示為ref(x+1,y)。在這里,x和y為任意正整數。第一圖像r和第二圖像ref的每個像素的像素數據存儲在如上所述的內部存儲器中。
在這里,將第一圖像r的像素坐標(x,y)的像素定義為目標像素。此外,將位于像素坐標(x,y)周圍的像素定義為周邊像素。例如,周邊像素是ref(x,y)至ref(x+d,y)的l個像素。在這里,d為任意整數。它被設計為使得周邊像素包括與目標像素的像素坐標相同的像素坐標。
圖6示出了對r(x,y)的目標像素執行圖像處理的處理單元250。具體地,圖6示出了用于根據目標像素r(x,y)的像素數據計算輸出像素數據v(x,y)的圖像處理。在下面的描述中,將目標像素的像素數據定義為目標像素數據,以及將周邊像素的像素數據定義為周邊像素數據。
首先,將對處理單元250中的處理進行描述。第一運算器251通過使用目標像素數據和周邊像素數據執行算術運算。目標像素數據是與第一圖像r的目標像素r(x,y)相對應的像素數據。周邊像素數據是位于第二圖像ref的坐標(x,y)周圍的像素的像素數據。具體地,周邊像素數據是與周邊像素ref(x,y)至ref(x+d,y)相對應的像素數據。周邊像素的數量為l,使得設置了l個第一運算器251。在這里,l=d+1(l和d是任意正整數)。l個第一運算器251中的每一個基于兩個像素數據執行算術運算處理。從而,獲得l個算術運算結果。由第一運算器251執行的算術運算與圖4中的步驟s42相對應。
l個寄存器252中的每一個保存算術運算結果。在這里,將由l個寄存器252保存的算術運算結果表示為數據陣列sc(x,y)。數據陣列sc(x,y)由l個算術運算結果形成。將l定義為第一運算器251中的放大數量。具體地,放大數量l是第一運算器251中為一個目標像素r(x,y)生成的數據的數量。例如,將128、256等等用作放大數量l。由寄存器252進行的數據保存與圖4中的步驟s43相對應。
具體地,通過相對于一個目標像素r(x,y)順序地改變周邊像素來生成數據陣列sc(x,y)。更具體地,將l個周邊像素的像素數據順序地輸入到第一運算器251中。隨后,基于由第一運算器251生成的放大數據生成數據陣列sc(x,y)。
隨后,將數據陣列sc(x,y)輸入到第二運算器253a至253d中。在圖6中,設置了四個第二運算器253,以及分別將四個第二運算器253標識為第二運算器253a至253d。此外,分別將數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)從行存儲器或者流水線處理的另一級輸入到第二運算器253a至253d中。
第二運算器253a至253d對所輸入的兩個數據陣列執行第二算術運算。具體地,第二運算器253a至253d通過使用數據陣列sc(x,y)更新數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)。由第二運算器253a至253d執行的算術運算與圖4中的步驟s44相對應。
例如,將數據陣列sc(x,y)和數據陣列s(x-1,y)輸入到第二運算器253a中。隨后,第二運算器253a通過使用數據陣列sc(x,y)更新數據陣列s(x-1,y)。類似地,第二運算器253b至253d通過使用數據陣列sc(x,y)更新s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)。將由第二運算器253a至253d生成的數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)定義為傳播數據。
通過使用根據兩個像素計算的放大數據來計算傳播數據。具體地,第二運算器253a至253d通過使用基準像素和目標像素的放大數據來執行算術運算。例如,第二運算器253a的目標像素的坐標是(x,y)以及基準像素的坐標是(x-1,y)。類似地,第二運算器253b的目標像素的坐標是(x,y)以及基準像素的坐標是(x-1,y-1)。
如上所述,一個放大數據由l個數據陣列形成。具體地,第二運算器253a至253d通過使用從目標像素沿x方向或者y方向傳播的基準像素的放大數據和目標像素的放大數據來計算傳播數據。
由第二運算器253a至253d更新的數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)分別被寄存器255a至255d保存。通過寄存器255a至255d進行的數據保存與圖4中的步驟s45相對應。隨后,寄存器255a至255d將數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)輸出至第三運算器256。
第三運算器256對數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)執行第三算術運算。通過這樣做,第三運算器256計算數據陣列ss(x,y)。由第三運算器256執行的算術運算與圖4中的步驟s46相對應。將由第三運算器256生成的數據陣列ss(x,y)定義為選擇候選數據。
通過使用根據多個像素計算的傳播數據來計算選擇候選數據。在圖6中,通過使用根據四個像素計算的傳播數據來計算目標像素r(x,y)的選擇候選數據。
第三運算器256將數據陣列ss(x,y)輸出至寄存器257。寄存器257保存數據陣列ss(x,y)。通過寄存器257保存選擇候選數據與步驟s47相對應。
隨后,寄存器257將數據陣列ss(x,y)順序地輸出至選擇器258。選擇器258從數據陣列ss(x,y)選擇最優像素數據以及將該像素數據輸出為輸出像素數據vx(x,y)。隨后,在本地存儲器23中展開輸出像素數據vx(x,y)。
在這里,作為傳播數據的數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)的數據容量趨向于很大。例如,將傳播數據的容量表示為l*d*h。
圖7示出了圖6中所示的處理中的執行流程。在圖7中,rd表示從行存儲器讀取像素數據,ex表示由運算器執行的算術運算,以及st表示對寄存器進行寫入。每次執行兩次ex。然而,可以執行一次或者三次或者更多次ex。
水平方向上的一行與流水線的每個級中的處理相對應。例如,在流水線的第一級中,通過使用r(x+4,y)作為目標像素來執行讀取rd、算術運算ex、算術運算ex和寫入st,以及在流水線的第二級中,通過使用r(x+3,y)作為目標像素來執行讀取rd、算術運算ex、算術運算ex和寫入st。也就是說,對于每個級將算術運算ex的執行時序移位。
在完成沿著x方向的一行的流水線處理之后,將流水線處理沿著y方向移位一個像素以及執行下一行的流水線處理。在圖7中,在完成y坐標為y的一行的流水線處理之后,執行y坐標為y+1的一行的流水線處理。
(并行流水線)
接著,將參照圖8對由并行布置的兩個流水線處理圖6中所示的處理的示例進行描述。在圖8中,第一流水線的處理單元250和第二流水線的處理單元350并行地執行處理。
處理單元250和處理單元350具有相同的配置。處理單元250的第一運算器251、寄存器252、第二運算器253、寄存器255、第三運算器256、寄存器257和選擇器258分別與處理單元350的第一運算器351、寄存器352、第二運算器353、寄存器355、第三運算器356、寄存器357和選擇器358相對應。處理單元250和處理單元350的處理與圖6中的處理相同,從而省略其描述。
第一流水線的處理單元250將r(x,y)定義為目標像素以及第二流水線的處理單元350將r(x,y+1)定義為目標像素。換句話說,第一流水線的處理單元250和第二流水線的處理單元350將沿著y方向相對彼此移位一個像素的像素定義為目標像素。因此,周邊像素也沿y方向相對彼此移位一個像素。
圖9示出了圖8中所示的處理中的執行流程。在圖9中,rd表示從行存儲器讀取像素數據,ex表示由運算器執行的算術運算,以及st表示對寄存器進行寫入。每次執行兩次ex。然而,可以執行一次或者三次或者更多次ex。
在圖8中,兩個流水線并行地執行流水線處理。具體地,第一流水線的處理單元250和第二流水線的處理單元350同時執行處理。
例如,當第一流水線的處理單元250通過將r(x,y)定義為目標像素來執行處理時,第二流水線的處理單元350通過將r(x,y+1)定義為目標像素來執行處理。換句話說,在圖8中,目標像素相對于彼此移位一個像素。因此,如圖9中所示,同時執行將r(x,y)定義為目標像素的處理和將r(x,y+1)定義為目標像素的處理。也就是說,第一流水線的處理單元250讀取目標像素r(x,y)的像素數據的時序(rd)和第二流水線的處理單元350讀取目標像素r(x,y+1)的像素數據的時序(rd)是相同的。
因此,圖8中所示的并行流水線配置很難使用其它流水線的算術運算結果。換句話說,很難將通過第一流水線的處理單元250獲得的傳播數據用于第二流水線的處理單元350的處理。具體地,目標像素是第一流水線的處理單元250中的r(x,y)的處理中的傳播數據不能用于目標像素是第二流水線的處理單元350中的目標像素r(x,y+1)的處理。
(處理單元的示意性配置)
因此,實施例使用下面描述的圖像處理裝置和圖像處理方法。將參考圖10和圖11對根據實施例的圖像處理裝置的處理單元的配置進行描述。圖10是用于解釋并行布置的流水線的兩個處理單元的目標像素和周邊像素的圖。圖11是示出第一流水線的處理單元50和第二流水線的處理單元150的概況的圖。
如上所述,第一流水線和第二流水線并行地執行流水線處理。例如,第一流水線和第二流水線通過使用沿著y方向相對于彼此移位一個像素的像素作為目標像素執行流水線處理。第一流水線具有多級處理單元以執行流水線處理。類似地,第二流水線具有多級處理單元以執行流水線處理。第一流水線中包括的處理單元使用y坐標為y的像素作為目標像素。第二流水線中包括的處理單元使用y坐標為y+1的像素作為目標像素。
圖11示出了第一流水線中的一個級處理單元50和第二流水線中的一個級處理單元150。如圖10和圖11中所示,處理單元50的目標像素是r(x,y)以及處理單元150的目標像素是r(x-1,y+1)。
處理單元50包括第一運算器51、寄存器52、第二運算器53a、第三運算器54b至54d、第四運算器56、選擇器58。處理單元150包括第一運算器151、寄存器152、第二運算器153a、第三運算器154b至154d、第四運算器156、寄存器157和選擇器158以及延遲元件59b至59d。
首先,將對處理單元50中的處理進行描述。第一運算器51通過使用目標像素數據和周邊像素數據執行第一算術運算。目標像素數據是與第一圖像r的目標像素r(x,y)相對應的像素數據。周邊像素數據是位于第二圖像ref的坐標(x,y)周圍的像素的像素數據。具體地,周邊像素數據是與周邊像素ref(x,y)至ref(x+d,y)相對應的像素數據。周邊像素的數量為l,從而設置l個第一運算器51。l個第一運算器51中的每一個基于兩個像素數據執行算術運算處理。從而,獲得l個算術運算結果。
l個寄存器52中的每一個保存算術運算結果。在這里,將由l個寄存器52保存的算術運算結果表示為數據陣列sc(x,y)。數據陣列sc(x,y)由l個算術運算結果形成。將l定義為第一運算器51中的放大數量。具體地,放大數量l是第一運算器51中為一個目標像素r(x,y)生成的數據的數量。例如,將128、256等等用作放大數量l。
具體地,通過相對于一個目標像素r(x,y)順序地改變周邊像素來生成數據陣列sc(x,y)。更具體地,將l個周邊像素的像素數據順序地輸入到第一運算器51中。隨后,基于由第一運算器51生成的放大數據生成數據陣列sc(x,y)。
隨后,將數據陣列sc(x,y)輸入到第二運算器53a和第三運算器54b至54d中。在圖11中,設置了三個第三運算器54以及將它們標識為第三運算器54b至54d。此外,分別將數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)從行存儲器或者流水線處理的另一個級輸入到第二運算器53a和第三運算器54b至54d中。
第二運算器53a和第三運算器54b至54d對所輸入的兩個數據陣列執行第二算術運算或者第三算術運算。具體地,第二運算器53a和第三運算器54b至54d通過使用數據陣列sc(x,y)來更新數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)。
例如,將數據陣列sc(x,y)和數據陣列s(x-1,y)輸入到第二運算器53a中。隨后,第二運算器53a通過使用數據陣列sc(x,y)來更新數據陣列s(x-1,y)。這是第二算術運算。
類似地,第三運算器54b至54d通過使用數據陣列sc(x,y)來更新s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)。這是第三算術運算。將由第二運算器53a和第三運算器54b至54d生成的數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)定義為傳播數據。將數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)輸入到第四運算器56中。
第三運算器54b至54d通過使用兩個像素的放大數據執行第三算術運算。具體地,第三運算器54b至54d通過使用目標像素的放大數據和基準像素的放大數據執行第三算術運算。第三運算器54b的目標像素是r(x,y)以及第三運算器54b的基準像素是r(x-1,y-1)。第三運算器54c的目標像素是r(x,y)以及第三運算器54c的基準像素是r(x-2,y-1)。第三運算器54d的目標像素是r(x,y)以及第三運算器54d的基準像素是r(x+1,y-1)。
第四運算器56對數據陣列s(x-1,y)、s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)執行第四算術運算。通過這樣做,第四運算器56計算數據陣列ss(x,y)。由第四運算器56執行的第四算術運算與圖4中的步驟s46相對應。將由第四運算器56生成的數據陣列ss(x,y)定義為選擇候選數據。
通過使用根據多個像素計算的傳播數據來計算選擇候選數據。在圖6中,通過使用根據四個像素計算的傳播數據來計算目標像素r(x,y)的選擇數據。
第四運算器56將數據陣列ss(x,y)輸出至寄存器57。寄存器57保存數據陣列ss(x,y)。隨后,寄存器57將數據陣列ss(x,y)順序地輸出至選擇器58。選擇器58從數據陣列ss(x,y)選擇最優像素數據以及將該像素數據輸出為輸出像素數據vx(x,y)。具體地,選擇器58從數據陣列ss(x,y)中包括的多個數據選擇最低開銷數據。
接下來,將對處理單元150中的處理進行描述。第一運算器151通過使用目標像素數據和周邊像素數據執行第一算術運算。目標像素數據是與第一圖像r的目標像素r(x+1,y+1)相對應的像素數據。周邊像素數據是位于第二圖像ref的坐標(x+1,y+1)周圍的像素的像素數據。具體地,周邊像素數據是與周邊像素ref(x-1,y)至ref(x-1+d,y)相對應的像素數據。周邊像素的數量為l,從而設置l個第一運算器51。l個第一運算器51中的每一個基于兩個像素數據執行算術運算處理。從而,獲得l個算術運算結果。
l個寄存器152中的每一個保存算術運算結果。在這里,將由l個寄存器152保存的算術運算結果表示為數據陣列sc(x-1,y+1)。數據陣列sc(x-1,y+1)由l個算術運算結果形成。將l定義為第一運算器151中的放大數量。具體地,放大數量l是第一運算器151中為一個目標像素r(x-1,y+1)生成的數據的數量。例如,放大數量l具有128、256等等的值。第一運算器51的放大數量與第一運算器151的放大數量相同。
具體地,通過相對于一個目標像素r(x-1,y+1)順序地改變周邊像素來生成數據陣列sc(x-1,y+1)。更具體地,將l個周邊像素的像素數據順序地輸入到運算器151中。隨后,基于由第一運算器151生成的放大數據生成數據陣列sc(x-1,y+1)。
隨后,將數據陣列sc(x-1,y+1)輸入到第二運算器153a和第三運算器154b至154d中。在圖11中,設置了三個第三運算器154以及將它們標識為第三運算器154b至154d。此外,分別將數據陣列s(x-2,y+1)、s(x-2,y)、s(x-3,y)和s(x,y)從行存儲器或者流水線處理的另一個級輸入到第二運算器153a和第三運算器154b至154d中。
第二運算器153a和第三運算器154b至154d對所輸入的兩個數據陣列執行第二算術運算或者第三算術運算。具體地,第二運算器153a和第三運算器154b至154d通過使用數據陣列sc(x-1,y+1)來更新數據陣列s(x-2,y+1)、s(x-2,y)、s(x-3,y)和s(x,y)。
例如,將數據陣列sc(x-1,y+1)和數據陣列s(x-2,y+1)輸入到第二運算器153a中。隨后,第二運算器153a通過使用數據陣列sc(x-1,y+1)來更新數據陣列s(x-2,y+1)。這是第二算術運算。
類似地,第三運算器154b至154d通過使用數據陣列sc(x-1,y+1)來更新s(x-2,y)、s(x-3,y)和s(x,y)。這是第三算術運算。將由第二運算器153a和第三運算器154b至154d生成的數據陣列s(x-2,y+1)、s(x-2,y)、s(x-3,y)和s(x,y)定義為傳播數據。將數據陣列s(x-2,y)、s(x-2,y)、s(x-3,y)和s(x,y)輸入到第四運算器156中。
第三運算器154b至154d通過使用兩個像素的放大數據執行第三算術運算。具體地,第三運算器154b至154d通過使用目標像素的放大數據和基準像素的放大數據執行第三算術運算。第三運算器154b的目標像素是r(x-1,y+1)以及第三運算器154b的基準像素是(x-2,y)。第三運算器154c的目標像素是r(x-1,y+1)以及第三運算器154c的基準像素是r(x-3,y)。第三運算器154d的目標像素是r(x-1,y+1)以及第三運算器154d的基準像素是r(x,y)。
此外,在實施例中,將由處理單元50生成的數據陣列s(x-1,y-1)、s(x-2,y-1)和s(x+1,y-1)通過延遲元件59b至59d輸入到第三運算器154b至154d中。具體地,將由第三運算器54b生成的s(x-1,y-1)通過延遲元件59b輸入到第三運算器154b中。將由第三運算器54c生成的s(x-2,y-1)通過延遲元件59c輸入到第三運算器154c中。將由第三運算器54d生成的s(x+1,y-1)通過延遲元件59d輸入到第三運算器154d中。
第四運算器156對s(x-2,y+1)、s(x-2,y)、s(x-3,y)和s(x,y)執行第四算術運算。通過這樣做,第四運算器156計算數據陣列ss(x-1,y+1)。將由第四運算器156生成的數據陣列ss(x-1,y+1)定義為選擇候選數據。
第四運算器156將所計算的數據陣列ss(x-1,y+1)輸出至寄存器157。寄存器157保存數據陣列ss(x-1,y+1)。隨后,寄存器157將數據陣列ss順序地輸出至選擇器158。選擇器158從數據陣列ss(x-1,y+1)選擇最優像素數據以及將該像素數據輸出為輸出像素數據vx(x-1,y+1)。例如,選擇器58從數據陣列ss(x-1,y+1)中包括的多個數據選擇最低開銷數據。
以這種方式,將由第三運算器54b至54d生成的傳播數據通過延遲元件59b至59d輸入到第三運算器154b至154d中。也就是說,第三運算器154b至154d通過使用并行布置的第一流水線的處理單元50中的算術運算結果來執行第三算術運算。在此時,由延遲元件59b至59d調整將傳播數據輸入到第三運算器154b至154d中的時序。通過這樣做,可以減少保存傳播數據的寄存器的數量。
(圖像處理裝置的主要部分的配置)
接下來,將參照圖12對根據實施例的圖像處理裝置的詳細配置進行描述。圖12是示出圖像處理裝置的主要部分的配置的圖。
圖像處理裝置700包括行存儲器81、行存儲器控制電路82、延遲調整控制電路83、處理單元70和處理單元170。處理單元70表示第一流水線中包括的一個級處理單元。處理單元170表示第二流水線中包括的一個級處理單元。第一流水線和第二流水線并行地執行流水線處理。
處理單元70具有第一運算器74、第二運算器75、第三運算器76a和76b、寄存器77以及延遲元件78a和78b。處理單元170具有第一運算器174、第二運算器175、第三運算器176a和176b、寄存器177以及延遲元件178a和178b。
行存儲器81存儲第一圖像和第二圖像的像素數據。在行存儲器81中,展開第一圖像和第二圖像中包括的像素數據。行存儲器控制電路82控制行存儲器81。行存儲器控制電路82控制從本地存儲器23到行存儲器81的數據寫入。此外,行存儲器控制電路82控制從行存儲器81到處理單元70和170的數據讀取。
具體地,行存儲器控制電路82從本地存儲器23讀取對其執行流水線處理的第一圖像和第二圖像中包括的像素數據,以及將該像素數據寫入到行存儲器81中。行存儲器控制電路82在合適時序處從行存儲器81讀取處理單元70和處理單元170的處理所需的像素數據。當圖像處理裝置執行半全局匹配時,行存儲器81存儲第一圖像和第二圖像的一部分的像素數據。隨后,行存儲器控制電路82向處理單元70和170供應從行存儲器81讀取的像素數據。延遲調整控制電路83控制稍后描述的延遲元件78a、78b、178a和178b的延遲量。
將從行存儲器81讀取的像素數據輸入到第一運算器74和174中。第一運算器74和174對像素數據執行算術運算處理。具體地,將目標像素的像素數據和周邊像素的像素數據輸入到第一運算器74和174中。第一運算器74和174分別與圖11中所示的第一運算器51和第一運算器151相對應。
將多個周邊像素的像素數據順序地輸入到第一運算器74和174中。隨后,第一運算器74和174將目標像素的像素數據和基于目標像素的像素數據的算術運算結果輸入至第二運算器75以及第三運算器76a和76b。第一運算器74的算術運算結果是第一中間數據。第一中間數據與上面描述的放大數據相對應。
第一運算器74和174通過使用順序輸入的周邊像素的像素數據順序地執行算術運算。即,第一運算器74和174順序地輸出與順序輸入的周邊像素的像素數據相對應的算術運算結果。例如,用于第一運算器74和174的周邊像素的數量是l。因此,第一運算器74和174輸出時間序列中的l個數據。第一運算器74和174對順序輸入的像素數據執行求平均值等等。
第二運算器75和175基于順序輸入的l個數據執行算術運算處理。將第二運算器75和175的算術運算結果定義為第二中間數據。第二中間數據與上面描述的傳播數據相對應。第二中間數據分別由寄存器77和177保存。隨后,第二運算器75和175基于由寄存器77和177保存的第二中間數據和下一個要輸入的第一中間數據執行第二算術運算。換句話說,第二運算器75通過使用基于已經生成的第一中間數據的第二中間數據和新生成的第一中間數據執行第二算術運算。例如,第二算術運算是乘法-累加運算。
隨后,第二運算器75和175的算術運算結果被寄存器77和177保存為新的第二中間數據。第二運算器75和175將第二算術運算重復與第一中間數據的數量(l)相對應的次數。第二運算器75和175分別與圖11中所示的第二運算器53a和153a相對應。
類似地,將來自第一運算器74的第一中間數據順序地輸入到第三運算器76a和76b中。此外,將來自另一個處理單元的第一中間數據順序地輸入到第三運算器76a和76b中。隨后,第三運算器76a和76b基于兩個中間數據執行第三算術運算。第三運算器76a和76b對順序輸入的第一中間數據執行第三算術運算。在上面的描述中,將來自另一個處理單元的第一中間數據輸入到第三運算器76a和76b中。然而,可以將行存儲器81中的像素數據輸入到第三運算器76a和76b中。
具體地,第三運算器76a和76b通過使用目標像素的第一中間數據和周邊像素的中間數據執行第三算術運算。如上所述,第一中間數據中包括l個數據。類似地,周邊像素的第一中間數據中包括l個數據。第三運算器76a和76b對目標像素的第一中間數據中包括的數據和周邊像素的第一中間數據中包括的數據順序地執行算術運算。
將第三運算器76a和76b的算術運算結果定義為第三中間數據。第三中間數據與上面描述的傳播數據相對應。由第三運算器76a計算的第三中間數據被稱為a2,以及由第三運算器76b計算的第三中間數據被稱為a3。將第三中間數據a2通過延遲元件78a輸入到第三運算器176a中。將第三中間數據a3通過延遲元件78b輸入到第三運算器176b中。
第三運算器176a和176b以與第三運算器76a和76b相同的方式執行第三算術運算。具體地,將來自第一運算器174的第一中間數據和來自第三運算器76a的第三中間數據a2順序地輸入到第三運算器176a中。第三運算器176a基于順序輸入的兩個數據執行第三算術運算。類似地,將來自第一運算器174的第一中間數據和來自第三運算器76b的第三中間數據a3順序地輸入到第三運算器176b中。第三運算器176b基于順序輸入的兩個數據執行第三算術運算。
將由第三運算器176a計算的數據定義為第三中間數據b2,以及將由第三運算器176b計算的數據定義為第三中間數據b3。將第三中間數據b2和b3通過延遲元件178a和178b輸出至另一個流水線的處理單元。
盡管在圖12中未示出,但是處理單元70通過使用由第二運算器75計算的第二中間數據以及由第三運算器76a和76b計算的第三中間數據a2和a3生成輸出像素數據。類似地,處理單元170通過使用由第二運算器175計算的第二中間數據以及由第三運算器176a和176b計算的第三中間數據b2和b3生成輸出像素數據。生成輸出像素數據的處理與圖11中所示的由第四運算器56和156以及選擇器58和158執行的處理相同,從而省略其描述。
圖13示出了圖12中所示的處理中的執行流程。在圖13中,rd表示從行存儲器讀取像素數據,ex表示由運算器執行的算術運算,以及st表示對寄存器進行寫入。此外,圖13示出了第一流水線p1中的流水線處理和第二流水線p2中的流水線處理。此外,圖13示出了第一流水線p1中包括的五個級處理單元70a至70e以及第二流水線p2中包括的五個級處理單元170a至170e。
關于五個級處理單元70a到70e,從最前級側順序地設置處理單元70a、處理單元70b、處理單元70c、處理單元70d和處理單元70e。關于五個級處理單元170a到170e,從最前級側順序地設置處理單元170a、處理單元170b、處理單元170c、處理單元170d和處理單元170e。即,流水線p1和p2中的最前級處理單元是處理單元70a和170a。將中間數據從前級處理單元輸出至后級處理單元。后級處理單元通過使用由前級處理單元計算的中間數據來執行算術運算。
第一流水線p1中的目標像素的y坐標是y,以及第二流水線p2中的目標像素的y坐標是y+1。換句話說,y坐標是并行流水線之間的差。例如,在第一流水線p1的處理單元70a至70e中,目標像素的y坐標是y,以及在第二流水線p2的處理單元170a至170e中,目標像素的y坐標是y+1。在一個流水線中,在多級處理單元中,目標像素的x坐標從相鄰目標像素的x坐標變化1。例如,處理單元70a、70b、70c、70d和70e的x坐標是x+4、x+3、x+2、x+1和x+0。
對處理單元70a的目標像素(x+4,y)的處理的時序與對處理單元170a的目標像素(x+3,y+1)的處理的時序相同。在第一流水線p1中,處理單元70a至70e的處理時序相對于彼此移位一個單位處理時段。在這里,一個單位處理時段與執行圖13中的一個字段示出的一個單位處理的時間段相對應。換句話說,一個單位處理時段與執行讀取rd、算術運算ex和寫入st中的任何一個的時間段相對應。
此外,在每個處理單元中,最上行與第二中間數據相對應,以及第二最上行與由第三運算器76a或者176a計算的第三中間數據相對應。第三最上行與由第三運算器76b或者176b計算的第三中間數據相對應。每個處理單元由四個單位處理時段形成,包括(1)讀取rd、(2)第一算術運算ex、(3)第二算術運算或者第三算術運算ex以及(4)寫入st。
如圖13中所示,在一個處理單元70中,第二運算器75與第三運算器76a和76b的算術運算ex的時序相同。在一個處理單元170中,第二運算器175與第三運算器176a和176b的算術運算ex的時序相同。因此,在一個處理單元中,同時生成第二中間數據和兩個第三中間數據。
在處理單元70b中,執行對目標像素r(x+3,y)的處理。將由處理單元70b的第三運算器76b生成的第三中間數據a3通過兩個單位處理時段的延遲而輸入到處理單元170e的第三運算器76b中。
在處理單元70c中,執行對目標像素r(x+2,y)的處理。將由處理單元70c的第三運算器76a生成的第三中間數據a2通過一個單位處理時段的延遲而輸入到處理單元170e的第三運算器76a中。處理單元170e執行對目標像素r(x-1,y+1)的處理。延遲元件78b的延遲量大于延遲元件78a的延遲量。
以這種方式,將不同延遲給予第三中間數據a2和a3,使得可以使用處理單元170e中的第三算術運算中的第三中間數據a2和a3。即,第二流水線p2中包括的處理單元170e的第三運算器76a和76b可以使用第一流水線p1中生成的第三中間數據a2和a3。換句話說,在流水線之間輸入/輸出第三中間數據a2和a3。通過這樣做,可以減小用于保存第三中間數據的寄存器的容量。
盡管圖13僅示出了將第三中間數據a2和a3輸入到處理單元170e中的示例,但是可以在延遲調整控制電路83設定合適的延遲元件時在多個處理單元70和多個處理單元170之間輸入/輸出第三中間數據a2和a3。從而,可以進一步減小寄存器的容量。
例如,當流水線p1和p2中的每一個具有處理單元中的六個級或者更多個級時,可以向處理單元170供應由處理單元70d和70e生成的第三中間數據a2和a3。此外,當并行流水線的數量增加時,可以增加可以由其它流水線使用的第三中間數據a2和a3。例如,在圖12中,當除第一流水線p1和第三流水線p3以外還有第三流水線p3時,可以將由第三運算器176生成的第三中間數據b2和b3輸入到第三流水線的處理單元中。
運算器74至76、運算器174至176、運算器51、53、54和56以及運算器151、153、154和156中的一個或者多個基于例如“accurateandefficientstereoprocessingbysemi-globalmatchingandmutualinformation”(因特網搜索:http://www.robotic.dlr.de/fileadmin/robotic/hirschmu/cvpr05hh.pdf)中描述的公式(13)和公式(14)執行算術運算。例如,第四運算器156和第四運算器56基于公式(14)執行算術運算。此外,第三運算器176、第三運算器76、第三運算器54和第三運算器154基于公式(13)執行算術運算。
(關于傳播方向和目標像素)
在實施例中,第一流水線p1的處理單元70將位于沿著與從目標像素到周邊像素的傳播方向相反的方向上的像素定義為目標像素。將參照圖14和圖15對上述的原因進行描述。圖14是用于解釋第一圖像和第二圖像的像素總數的圖。圖15是用于解釋像素傳播方向和像素傳播數量的圖。
如圖14中所示,將沿圖像水平方向的像素的總數定義為d,以及將沿圖像垂直方向的像素的總數定義為h。即,第一圖像r和第二圖像ref中的每一個中包括的像素的總數是d×h。
如圖15中所示,在第三運算器中,從目標像素r(x,y)到基準像素的方向是傳播方向。當傳播數量是1時,沒有傳播。即,目標像素的坐標與基準像素的坐標相同。具體地,水平像素傳播方向是-x方向,以及水平像素傳播數量m是2或者4。垂直像素傳播方向是-y方向,以及垂直像素傳播數量n是2或者4。
在根據實施例的圖像處理方法中,將必要的寄存器開銷c1表示如下。
c1=l*{(n-1)*m+p}
在這里,p是流水線的并行化程度。并行化程度是并行布置的流水線的數量。寄存器的容量r2根據放大數量、并行化程度、水平像素傳播方向和垂直像素傳播方向而變化。
另一方面,當不使用根據實施例的圖像處理方法時,將必要的寄存器開銷c2表示如下。
c2=l*d*h
如圖14中所示,d是沿圖像水平方向的像素的總數,以及h是沿圖像垂直方向的像素的總數。在這里,圖16示出了在n=2、m=4、d=640以及h=480的情況下的寄存器開銷。在圖16中,輸入像素是一比特。當并行化程度p=128時,根據實施例的圖像處理裝置的寄存器開銷可以是大約1/100。因此,可以阻止寄存器容量的增大。因此,可以高效地執行圖像處理。特別地,可以通過增大并行化流水線的數量(并行化程度)來加速處理。
此外,通過流水線向處理單元170的第三運算器176a和176b供應由延遲元件78a和78b延遲的第三中間數據。具體地,將由第一流水線p1的處理單元70中設置的延遲元件78a和78b延遲的第三中間數據a2和a3輸入到第二流水線p2中包括的處理單元170的第三運算器176a和176b中。隨后,第三運算器176a和176b基于來自第一運算器174的第一中間數據以及來自延遲元件78a和78b的第三中間數據a2和a3執行第三算術運算。通過這樣做,可以在適當時序處使用第三中間數據a2和a3。從而,可以防止寄存器開銷增大。
此外,通過選擇目標像素來優化第三中間數據的時間軸調整。通過這樣做,可以在不增大延遲量的情況下引用第三中間數據a2和a3。具體地,通過適當地設置第一流水線p1的目標像素和第二流水線p2的目標像素的位置,可以將第一流水線p1中的第三中間數據用于第二流水線p2中的算術運算。當第三運算器76a和76b對目標像素和沿傳播方向從目標像素移位的基準像素執行第三算術運算時,從第二流水線p2的處理單元170的目標像素到第一流水線p1的處理單元70的目標像素的方向與傳播方向相反。例如,如圖10中所示,處理單元170的目標像素沿+x方向從處理單元70的目標像素移位。在處理單元70中,從目標像素到基準像素的傳播方向是-x方向。從而,可以以少量延遲使用第三中間數據a2和a3。
此外,根據實施例的圖像處理裝置,可以減小行存儲器的容量。將參考圖17對行存儲器的減小進行描述。圖17是示出了比較示例的行存儲器的配置和根據實施例的圖像處理裝置中的行存儲器的配置的圖。在圖17的左側示出了比較示例的圖像處理裝置中的行存儲器的配置,以及在圖17的右側示出了根據實施例的圖像處理裝置的行存儲器的配置。
在比較示例中,針對每行存儲原始圖像的圖像數據,使得每行的容量相同。例如,y+0、y+1和y+2的容量相同。另一方面,在實施例的配置中,流水線被并行化時的讀取位置根據n和m移動,使得在讀取位置移動的范圍中生成不必要的部分。不必要的部分從一開始就不被確保為存儲器。
如圖17中所示,比較示例的行存儲器具有x*y的矩形存儲器結構。另一方面,在實施例中,可以以階梯模式改變基準像素,使得行存儲器不需要具有矩形形狀。例如,在y+0行中,需要保存像素一直到x+3。另一方面,可以減少要保存的像素的數量,一直到y+1行中的x+2以及一直到y+2行中的x+1。因此,行存儲器81沒有與可以減少的像素相對應的部分。
如上所述,根據實施例,可以通過優化用于處理單元的處理的存儲器結構來減小行存儲器的容量。具體地,行存儲器81包括容量彼此不同的多個行。可以減小的部分取決于參數n、m和p。可以通過由n、m和p確定的參數減小行存儲器的容量。行存儲器的具體容量由圖17中所示的公式表示。
當確定并行流水線的數量、每個流水線中的級數、圖像中的像素數量、放大數量、傳播數量等等時,延遲調整控制電路83可以固定延遲元件78和178的延遲量。換句話說,當算術運算條件固定時,延遲量可以是常量。因此,可以在不提供延遲調整控制電路83的情況下設置延遲量固定的延遲元件78和178。要并行化的流水線的數量可以是三個或者更多個。從而,即使在處理被加速時,也可以抑制寄存器容量的增大。因此,可以更平滑地處理復雜內容。當并行化程度、傳播數量等等變化時,延遲調整控制電路83可以調整延遲量。
第二實施例
將參考圖18對根據第二實施例的圖像處理裝置的處理單元的配置進行描述。盡管在第一實施例中傳播的總數是三個,但是第二實施例中的傳播總數是四個。因此,在處理單元70中設置第三運算器76a至76c以及在處理單元170中設置第三運算器176a至176c。
將第三運算器76c的第三中間數據a4通過延遲元件78c輸入到第三運算器176c中。在這里,延遲元件78c的延遲量大于延遲元件78a和78b的延遲量。延遲元件78b的延遲量大于延遲元件78a的延遲量。
圖19示出了圖18中所示的配置的處理流程。將處理單元70a的第三中間數據a4通過三個單位處理時段的延遲輸入到處理單元170e中。隨后,處理單元170e通過使用從處理單元70a至70c輸入的第三中間數據a2至a4執行第三算術運算。即使在這種配置中,也可以獲得與第一實施例相同的效果。第三中間數據a2至a4的延遲量彼此相差一個單位處理時段。換句話說,將來自三個處理單元70a至70c的第三中間數據a2至a4通過不同延遲量輸入到一個處理單元170e中。
其它實施例
圖20示出了根據另一個實施例的圖像處理裝置的配置。圖像處理裝置800包括存儲第一圖像和第二圖像中包括的像素數據的行存儲器81、并行布置以及具有多級處理單元70a、70b、170a和170b(它們中的每一個對像素數據執行流水線處理)的多個流水線p1和p2以及控制從行存儲器81到處理單元70a、70b、170a和170b的數據讀取的行存儲器控制電路82。處理單元70a包括基于與第一圖像的目標像素相對應的目標像素數據和第二圖像中與目標像素的周邊像素相對應的周邊像素數據執行第一算術運算的第一運算器74、基于根據第一運算器74的算術運算結果的第一中間數據執行第二算術運算以及根據順序地改變周邊像素時的第一中間數據計算第二中間數據的第二運算器75、基于第一中間數據執行第三算術運算以及根據順序地改變周邊像素時的第一中間數據計算第三中間數據的第三運算器76、保存順序地改變周邊像素時的第二中間數據的寄存器77以及延遲第三運算器的算術運算結果的延遲元件78。
根據實施例的圖像處理方法包括在行存儲器上展開第一圖像和第二圖像中包括的像素數據的步驟以及通過使用并行布置的多個流水線的多級處理單元對行存儲器上展開的像素數據執行流水線處理的步驟。
執行流水線處理的步驟包括下面描述的步驟(a)至(f)。
(a)第一算術運算步驟,在第一算術運算步驟中,第一運算器基于與第一圖像的目標像素相對應的目標像素數據和第二圖像中與目標像素的周邊像素相對應的周邊像素數據執行算術運算,
(b)第二算術運算步驟,在第二算術運算步驟中,第二運算器基于根據第一算術運算步驟中的算術運算結果的第一中間數據執行第二算術運算,
(c)寄存器保存根據第二運算器的算術運算結果的第二中間數據的步驟,
(d)第三算術運算步驟,在第三算術運算步驟中,第三運算器基于第一中間數據執行第三算術運算,
(e)延遲元件延遲根據第三運算器的算術運算結果的第三中間數據的步驟,以及
(f)通過順序地改變周邊像素重復地執行步驟(a)至(e)的步驟。
在上面的描述中,將車輛的前監控系統中的圖像處理作為示例進行描述。然而,根據實施例的圖像處理裝置和圖像處理方法可以適用于除前監控系統以外的系統。根據實施例的圖像處理裝置和圖像處理方法可以適用于準確地執行物體識別的圖像識別。
盡管已經基于實施例具體地描述了由本發明人做出的本發明,但是,不用說,本發明不限于實施例,以及可以在不偏離本發明范圍的情況下不同地修改本發明。