專利名稱:數據預處理方法和裝置的制作方法
技術領域:
本發(fā)明涉及圖像處理技術,特別涉及一種圖像數據的預處理方法和裝置。
背景技術:
聯合圖像專家組(JPEG)是國際標準化組織(ISO)和國際電話與電報顧問委員會(CCITT)聯合制定的靜態(tài)圖像的壓縮編碼標準。與當前相同圖像質量的其它文件格式相比,JPEG是靜態(tài)圖像中壓縮比最高的圖像壓縮方式。
正是由于JPEG所具有的高壓縮比,使得它廣泛地應用于多媒體以及網絡程序中。比如,當前視頻傳輸過程中,首先通過JPEG壓縮方式對攝像機(PCcamera)獲取到的視頻進行壓縮,然后再進行傳輸。圖1為現有技術中的JPEG壓縮流程示意圖,如圖1所示,該流程主要包括預處理、離散余弦變換(DCT)、量化、熵編碼以及壓縮數據等幾個過程。
其中,預處理過程主要用于完成對原始圖像數據進行分塊(block)的操作,當然,還可以包括去除噪聲、圖像增強等等。由于原始視頻圖像的數據都是按行輸入的,為了滿足DCT變換的需求,需要首先將這些按行輸入的數據轉換成8*8的離散余弦變換塊(dct block)。這一過程通常采用一組互成乒乓結構且分別包括8行行緩沖(line buffer)的行緩沖區(qū)(LBUF)來實現。在圖像處理領域中,互成乒乓結構的LBUF是指兩個LBUF中包括相同數目的line buffer,且這兩個LBUF不能同時執(zhí)行寫入的操作。也就是說,其中一個LBUF執(zhí)行寫入操作時,另一個LBUF處于讀出或空閑狀態(tài)。如果LBUF執(zhí)行寫入和讀出的速度一樣,那么就需要兩組完全獨立的緩沖區(qū)。圖2為現有一組成乒乓結構的LBUF結構示意圖。如圖2所示,當LBUF1中寫入數據時,LBUF2就只能處于讀出或空閑狀態(tài)。通常情況下,在讀出LBUF1中的數據的同時,向LBUF2中寫入數據,然后在LBUF2中寫滿數據并讀出時,再向LBUF1中寫入數據。
但是,采用圖2所示LBUF完成圖像數據預處理時,LBUF的利用率會比較低。比如,在最初開始向LBUF中寫數據時,由于這一組LBUF中只能有一個LBUF處于寫入狀態(tài),所以此時LBUF2或LBUF1中的一個必然處于空閑狀態(tài);當全部待處理數據寫入完畢時,其中的一個LBUF執(zhí)行讀出操作時,另外一個LBUF也必然處于空閑狀態(tài)??梢?,現有技術預處理過程中,LBUF的利用率是比較低的,某些時候只能達到50%。
發(fā)明內容
有鑒于此,本發(fā)明提供一種數據預處理方法,能夠有效地提高LBUF的利用率。
在本發(fā)明的數據預處理方法中,預先設置共享行緩沖區(qū)LBUF以及成乒乓結構的第一LBUF和第二LBUF,該方法包括將待處理數據依次寫入到第一LBUF以及共享LBUF中;當所述共享LBUF中寫滿數據時,依次將所述第一LBUF/第二LBUF以及共享LBUF中的數據讀出,同時,將后續(xù)待處理數據依次寫入到所述第二LBUF/第一LBUF以及共享LBUF中;其中,數據讀出速度設置為高于數據寫入速度,且所述數據讀出速度的設置需要使得在向所述第二LBUF/第一LBUF中寫滿數據之前,已經完成對所述第一LBUF/第二LBUF以及共享LBUF的讀操作。
所述數據讀出速度的設置為設置所述數據讀出速度R滿足R≥A+CBW;]]>其中,A為所述第一LBUF/第二LBUF中包括的行緩沖line buffer數目;B為所述第二LBUF/第一LBUF中包括的line buffer數目;C為所述共享LBUF中包括的line buffer數目;W為所述數據寫入速度。
較佳地,所述依次將第一LBUF/第二LBUF以及共享LBUF中的數據讀出為以兩倍于所述寫入速度的速度將所述第一LBUF/第二LBUF以及共享LBUF中的數據依次讀出。
所述預先設置的第一LBUF、第二LBUF以及共享LBUF為所述第一LBUF以及第二LBUF中包括相同數目的line buffer;所述第一LBUF中包括的line buffer數目大于或等于所述第一LBUF和共享LBUF中共同包括的line buffer數目的一半。
所述待處理數據為按行順序輸入的圖像數據。
本發(fā)明還提供一種數據預處理裝置,能夠有效地提高LBUF的利用率。
在本發(fā)明的數據預處理裝置中,包括共享行緩沖區(qū)LBUF、第一LBUF、第二LBUF、數據寫入單元以及數據讀出單元,所述第一LBUF與所述第二LBUF成乒乓結構;所述數據寫入單元,用于將待處理數據依次寫入到所述第一LBFU/第二LBUF以及共享LBUF中,并在所述數據讀出單元讀出所述第一LBFU/第二LBUF以及共享LBUF中數據的同時,將后續(xù)預處理數據依次寫入到所述第二LBUF/第一LBUF以及共享LBUF中;所述數據讀出單元,用于在所述第一LBUF/第二LBFU以及共享LBUF中均寫滿數據時,以高于寫入速度,且能夠確保在所述第二LBUF/第一LBUF中被寫滿數據之前,所述共享LBUF中的數據已經被讀出完畢的速度,依次將所述第一LBUF/第二LBFU以及共享LBUF中的數據讀出。
所述數據寫入單元進一步用于,接收按行順序輸入的待處理數據。
較佳地,所述第一LBUF以及第二LBUF由五行行緩沖line buffer組成;所述共享LBUF由三行l(wèi)ine buffer組成。
或者,所述第一LBUF、第二LBUF以及共享LBUF均由四行l(wèi)ine buffer組成。
可見,采用本發(fā)明實施例的技術方案,在預先設置構成乒乓結構的第一LBUF以及第二LBUF的同時,設置共享LBUF;并且在讀出寫滿數據的第一LBUF以及共享LBUF中的數據的同時,向第二LBUF以及共享LBUF中寫入數據。由于本發(fā)明實施例對數據讀出速度進行了設置,使得在向所述第二LBUF中寫滿數據之前,已經完成對所述第一LBUF以及共享LBUF的讀操作,所以,當第二LBUF中寫滿數據時,共享LBUF中的數據就已經讀出完畢,可以用來接收新的數據。與現有技術相比,本發(fā)明實施例所述方案中最多只會出現一個LBUF處于空閑的狀態(tài),而本發(fā)明所述的無論是第一LBUF、第二LBUF還是共享LUBF所包括的line buffer數目均小于現有技術的一個LBUF中所包括的line buffer數目,所以,提高了LBUF的利用率。
而且,由于共享LBUF能夠分別和第一LBUF以及第二LBUF組成通常意義上的八行LBUF來接收數據,所以節(jié)省了緩沖空間。比如,在本發(fā)明一實施例中,第一LBUF、第二LBUF以及共享LBUF均設置為由四行l(wèi)ine buffer組成,這樣,相比于現有技術,本發(fā)明實施例中只需12行l(wèi)ine buffer就能完成現有技術中需要16行l(wèi)ine buffer才能完成的功能,很大程度上節(jié)省了緩沖空間。
圖1為現有技術中的JPEG壓縮流程示意圖。
圖2為現有一組乒乓結構的LBUF結構示意圖。
圖3為本發(fā)明數據預處理方法的總體流程圖。
圖4為本發(fā)明實施例的數據預處理方法流程圖。
圖5為本發(fā)明實施例的數據預處理裝置組成結構示意圖。
圖6為本發(fā)明實施例的一種緩沖單元組成結構示意圖。
圖7為本發(fā)明實施例的另一種緩沖單元組成結構示意圖。
具體實施例方式
本發(fā)明實施例中,預先設置共享LBUF以及成乒乓結構的第一LBUF和第二LBUF。在較佳情況下,第一LBUF和第二LBUF中分別包括的linebuffer數目大于或等于第一LBUF或第二LBUF和共享LBUF中包括的linebuffer數目的一半。
為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明作進一步地詳細說明。
圖3為本發(fā)明數據預處理方法的總體流程圖。如圖3所示,數據預處理方法包括以下步驟步驟301將待處理數據依次寫入到第一LBUF以及共享LBUF中。
步驟302當共享LBUF中寫滿數據時,以高于寫入速度的速度依次將第一LBUF以及共享LBUF中的數據讀出,同時,將后續(xù)待處理數據依次寫入到第二LBUF以及共享LBUF中。
本步驟中所提到的數據讀出速度R需要滿足R≥A+CBW;]]>其中,A為第一LBUF中包括的line buffer數目;B為第二LBUF中包括的line buffer數目;C為共享LBUF中包括的line buffer數目;W為數據寫入速度。
本步驟中的數據讀出速度設置方式保證了在向第二LBUF中寫滿數據之前,已經完成對第一LBUF以及共享LBUF的讀操作。
步驟303當共享LBUF中再次寫滿數據時,以高于寫入速度的速度依次將第二LBUF以及共享LBUF中的數據讀出。
本步驟中所提到的數據讀出速度R的設置方式與步驟302中相同,只是對應步驟303來說,此時A表示第二LBUF中包括的line buffer數目,而B表示第一LBUF中包括的line buffer數目。通常情況下,第一LBUF以及第二LBUF中包括相同數目的line buffer,即A=B。
上述步驟301~303中,待處理數據為按行順序輸入的圖像數據。通常情況下,步驟302和303中將以兩倍于寫入速度的速度將第一LBUF或第二LBUF以及共享LBUF中的數據讀出,那么,對應地,需要設置第一LBUF和第二LBUF中包括的line buffer數目大于或等于第一LBUF或第二LBUF和共享LBUF中包括的line buffer數目的一半。
這樣,由于針對LBUF的讀出速度是寫入速度的兩倍,即讀出八行l(wèi)inebuffer中的圖像數據只需使用寫入四行l(wèi)ine buffer所用時間,所以,為實現現有技術圖像預處理過程中將按行順序輸入的數據轉換成8*8的dct block的目的,理想情況下,本發(fā)明實施例中的第一LBUF、第二LBUF以及共享LBUF均分別包括四行l(wèi)ine buffer即可。因為在向第二LBUF中寫入了四行數據時,第一LBUF以及共享LBUF中的數據就已經讀出完畢,這樣,共享LBUF就可以和第二LBUF組成通常意義上的包括八行l(wèi)ine buffer的LBUF來接收新的數據。
但是,考慮到一些特殊情況,比如輸入的各行圖像數據之間沒有空格(BLANK)。這種情況下,由于數據寫入速度比較快,所以有可能在共享LBUF中的數據還沒有讀出完的情況下,新的數據就已經到達。或者,也可能因為系統(tǒng)自身的原因,如延時等,讀出第一LBUF/第二LBUF以及共享LBUF中的數據所需要的時間要稍大于寫入四行數據的時間。所以,為了在這些特殊情況下仍然能夠順利地實現數據的預處理,可以將第一LBUF/第二LBUF中所包括的line buffer設置為五行,相應地,將共享LBUF中包括的line buffer設置為三行。換句話說,用寫入五行數據的時間,來讀出八行數據。顯然,在本申請讀出速度為寫入速度二倍的前提下,向一端的LBUF中寫入五行數據的時間已足夠完成另一端八行數據的讀出。
圖4為本發(fā)明實施例的數據預處理方法的流程圖。本實施例中,假設輸入的各行圖像數據之間存在BLANK,且第一LBUF、第二LBUF以及共享LBUF中均包括四行l(wèi)ine buffer。為便于描述,將第一LBUF、第二LBUF以及共享LBUF分別簡稱為LBUF1、LBUF2以及LBUF3。如圖4所示,包括以下步驟步驟401接收輸入的圖像數據,并將輸入的圖像數據依次寫入到LBUF1以及LBUF3中。
本步驟中,LBUF1以及LBUF3組成通常意義上的包括八行l(wèi)ine buffer的LBUF,來接收寫入的數據。并且,在執(zhí)行寫入操作時,首先將數據寫入到LBUF1中,待LBUF被寫滿后,再將數據寫入到LBUF3中??梢约僭O本步驟中的數據寫入速度為Akbps。
步驟402當LBUF1以及LBUF3中均寫滿圖像數據時,以兩倍于寫入速度的速度依次將LBUF1以及LBUF3中的圖像數據讀出。
步驟401中已經假設圖像數據寫入LBUF1以及LBUF3的速度為Akbps,那么,本步驟中,將以2Akbps的速度將LBUF1以及LBUF3中的圖像數據讀出。
步驟403在讀出LBUF1以及LBUF3中的圖像數據的同時,將后續(xù)接收到的圖像數據依次寫入到LBUF2以及LBUF3中。
本步驟中,首先將接收到的圖像數據寫入到LBUF2中,然后,再寫入到共享LBUF中。由于針對LBUF的讀出速度是寫入速度的兩倍,即讀出八行l(wèi)inebuffer中的圖像數據只需使用寫入四行l(wèi)ine buffer的所用時間,所以,在向LBUF2中寫入了四行數據后,LBUF1以及LBUF3中的數據就已經讀出完畢,這樣,LBUF3就可以用來接收新的數據了。
步驟404當LBUF2以及LBUF3中均寫滿圖像數據時,以兩倍于寫入速度的速度依次將LBUF2以及LBUF3中的圖像數據讀出。
步驟403以及步驟404中所提到的數據寫入和讀出速度分別與步驟401以及步驟402相同。
后續(xù)過程將不斷重復執(zhí)行上述步驟401~404,即,在讀出LBUF2以及LBUF3中的圖像數據的同時,將接收到的圖像數據依次寫入到LBUF1以及LBUF3中,之后的過程不再贅述。
當然,本領域技術人員應該知道,以上所介紹的僅為本發(fā)明的較佳實施例,實際應用中,第一LBUF、第二LBUF以及共享LBUF也可以由其它數目的line buffer組成,比如第一LBUF和第二LBUF分別包括6行l(wèi)inebuffer,共享LBUF包括2行l(wèi)ine buffer,只要相應地更改數據讀出速度,使得在向第二LBUF中寫滿數據之前,已經完成對第一LBUF以及共享LBUF的讀操作即可。
基于上述方法,圖5為本發(fā)明實施例的數據預處理裝置組成結構示意圖。如圖5所示,該數據預處理裝置包括共享LBUF、第一LBUF、第二LBUF、數據寫入單元以及數據讀出單元。
其中,第一LBUF與第二LBUF成乒乓結構。
數據寫入單元,用于將待處理數據依次寫入到第一LBFU/第二LBUF以及共享LBUF中,并在數據讀出單元讀出第一LBFU/第二LBUF以及共享LBUF中數據的同時,將后續(xù)待處理數據依次寫入到第二LBUF/第一LBUF以及共享LBUF中。
數據讀出單元,用于在第一LBUF/第二LBFU以及共享LBUF中均寫滿數據時,以高于寫入速度,且能夠確保在第二LBUF/第一LBUF中被寫滿數據之前,共享LBUF中的數據已經被讀出完畢的速度,依次將第一LBUF/第二LBFU以及共享LBUF中的數據讀出。
數據寫入單元可進一步用于,接收按行順序輸入的待處理數據。
通常情況下,對LBUF的數據讀出速度是寫入速度的兩倍,那么,第一LBUF和第二LBUF中包括的line buffer數目需要大于或等于第一LBUF或第二LBUF和共享LBUF中包括的line buffer數目的一半。比如,理想情況下,第一LBUF、第二LBUF以及共享LBUF均設置為由四行l(wèi)ine buffer組成。但是,考慮到方法部分提到的特殊情況,為以防萬一,也可以將第一LBUF以及第二LBUF設置為由五行l(wèi)ine buffer組成,相應地,共享LBUF由三行l(wèi)ine buffer組成。
這樣,如果將第一LBUF、第二LBUF以及共享LBUF組成的單元稱為緩沖單元的話,那么,該緩沖單元可以有兩種較佳組成方式,這兩種組成方式分別被示于圖6和圖7之中。
可見,采用本發(fā)明實施例的技術方案,在預先設置構成乒乓結構的第一LBUF以及第二LBUF的同時,設置共享LBUF;并且在讀出寫滿數據的第一LBUF以及共享LBUF中的數據的同時,向第二LBUF以及共享LBUF中寫入數據。由于本發(fā)明實施例對數據讀出速度進行了設置,使得在向所述第二LBUF中寫滿數據之前,已經完成對所述第一LBUF以及共享LBUF的讀操作,所以,當第二LBUF中寫滿數據時,共享LBUF中的數據就已經讀出完畢,可以用來接收新的數據。與現有技術相比,本發(fā)明所述方案中最多只會出現一個LBUF處于空閑的狀態(tài),而且本發(fā)明所述的無論是第一LBUF、第二LBUF還是共享LUBF所包括的line buffer數目均小于現有技術的一個LBUF中所包括的line buffer數目,所以,提高了LBUF的利用率。
而且,本發(fā)明實施例所述方案中由于引入了共享LBUF,所以節(jié)省了緩沖空間。比如,在本發(fā)明一實施例中,第一LBUF、第二LBUF以及共享LBUF均設置為由四行l(wèi)ine buffer組成。這樣,相比于現有技術,本發(fā)明實施例中只需12行l(wèi)ine buffer就能完成現有技術中需要16行l(wèi)ine buffer才能完成的功能,很大程度上節(jié)省了緩沖空間。此外,本發(fā)明實施例所提出的這種結構在邏輯功能上同現有技術基本沒有區(qū)別,而且,為實現此結構所需要在原來控制邏輯上所作的修改也非常微小甚至根本無需改動。
綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種數據預處理方法,其特征在于,預先設置共享行緩沖區(qū)LBUF以及成乒乓結構的第一LBUF和第二LBUF,該方法包括將待處理數據依次寫入到第一LBUF/第二LBUF以及共享LBUF中;當所述共享LBUF中寫滿數據時,依次將所述第一LBUF/第二LBUF以及共享LBUF中的數據讀出,同時,將后續(xù)待處理數據依次寫入到所述第二LBUF/第一LBUF以及共享LBUF中;其中,數據讀出速度設置為高于數據寫入速度,且所述數據讀出速度的設置需要使得在向所述第二LBUF/第一LBUF中寫滿數據之前,已經完成對所述第一LBUF/第二LBUF以及共享LBUF的讀操作。
2.根據權利要求1所述的方法,其特征在于,所述數據讀出速度的設置為設置所述數據讀出速度R滿足R≥A+CBW;]]>其中,A為所述第一LBUF/第二LBUF中包括的行緩沖line buffer數目;B為所述第二LBUF/第一LBUF中包括的line buffer數目;C為所述共享LBUF中包括的line buffer數目;W為所述數據寫入速度。
3.根據權利要求2所述的方法,其特征在于,所述依次將第一LBUF/第二LBUF以及共享LBUF中的數據讀出為以兩倍于所述寫入速度的速度將所述第一LBUF/第二LBUF以及共享LBUF中的數據依次讀出。
4.根據權利要求3所述的方法,其特征在于,所述預先設置的第一LBUF、第二LBUF以及共享LBUF為所述第一LBUF以及第二LBUF中包括相同數目的line buffer;所述第一LBUF中包括的line buffer數目大于或等于所述第一LBUF和共享LBUF中共同包括的line buffer數目的一半。
5.根據權利要求1所述的方法,其特征在于,所述待處理數據為按行順序輸入的圖像數據。
6.一種數據預處理裝置,其特征在于,該預處理裝置包括共享行緩沖區(qū)LBUF、第一LBUF、第二LBUF、數據寫入單元以及數據讀出單元,其中,所述第一LBUF與所述第二LBUF成乒乓結構;所述數據寫入單元,用于將待處理數據依次寫入到所述第一LBFU/第二LBFU以及共享LBUF中,并在所述數據讀出單元讀出所述第一LBFU/第二LBFU以及共享LBUF中數據的同時,將后續(xù)待處理數據依次寫入到所述第二LBUF/第一LBFU以及共享LBUF中;所述數據讀出單元,用于在所述第一LBUF/第二LBFU以及共享LBUF中均寫滿數據時,以高于寫入速度,且能夠確保在所述第二LBUF/第一LBUF中被寫滿數據之前,所述共享LBUF中的數據已經被讀出完畢的速度,依次將所述第一LBUF/第二LBFU以及共享LBUF中的數據讀出。
7.根據權利要求6所述的裝置,其特征在于,所述數據寫入單元進一步用于,接收按行順序輸入的待處理數據。
8.根據權利要求6或7所述的裝置,其特征在于,所述第一LBUF以及第二LBUF由五行l(wèi)ine buffer組成;所述共享LBUF由三行l(wèi)ine buffer組成。
9.根據權利要求6或7所述的裝置,其特征在于,所述第一LBUF、第二LBUF以及共享LBUF均由四行l(wèi)ine buffer組成。
全文摘要
本發(fā)明實施例公開了一種數據預處理方法,預先設置共享行緩沖區(qū)(LBUF)以及成乒乓結構的第一LBUF和第二LBUF;該方法包括將待處理數據依次寫入到第一LBUF/第二LBUF以及共享LBUF中;當共享LBUF中寫滿數據時,依次將第一LBUF/第二LBUF以及共享LBUF中的數據讀出,同時,將后續(xù)待處理數據依次寫入到第二LBUF/第一LBUF以及共享LBUF中;其中,數據讀出速度設置為高于數據寫入速度,且所述數據讀出速度的設置需要使得在向第二LBUF/第一LBUF中寫滿數據之前,已經完成對第一LBUF/第二LBUF以及共享LBUF的讀操作。本發(fā)明實施例同時公開了一種數據預處理裝置,應用該方法和裝置,能夠有效地提高LBUF的利用率,并且能夠節(jié)省緩沖空間。
文檔編號G06T9/00GK101087419SQ20071011764
公開日2007年12月12日 申請日期2007年6月20日 優(yōu)先權日2007年6月20日
發(fā)明者吳大畏 申請人:北京中星微電子有限公司