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