專利名稱:用于使用圖像條和循環尋址排列進行圖像數據處理的方法和裝置的制作方法
技術領域:
本發明涉及一種存儲器管理,并且特別地,本發明涉及提高圖形處理系統內的存儲器效率。
背景技術:
在現代計算機系統眾多的優點當中,其之一就是其制造逼真的圖表顯示的能力。因此,計算機系統已成為多種圖形領域中廣泛應用的工具,如攝影和圖形設計。然而,為此目的而增強的計算機應用具有提高了設計復雜程度并且相應地也提高了制造圖像軟件復雜程度的效果。
現有技術通過計算機系統增加更多處理能力來響應于該需求。例如,許多計算機系統有專用圖形處理器,該專用圖形處理器被專門設計用于減少主處理器上的計算負荷。因此,許多這種計算機具有超過其他計算機元件(如主存儲器(即RAM)或高速緩沖存儲器)速度的處理速度。實際上,許多傳統的個人計算機具有其獨自超過主存儲器和高速緩沖存儲器速度的主處理器。相應地,盡管處理器的速度提高了,但主存儲器和高速緩沖存儲器會在計算機系統內制造處理瓶頸,不合需要地阻礙圖像光柵化過程。
發明內容
根據本發明一方面,一種相對高速循環存儲設備,其結合其他的過程,提高圖像處理效率。為達到此目的,一種處理存儲在初始存儲器內的圖像數據的方法和裝置將圖像邏輯分成多個相鄰的條。第一多條存儲在具有循環尋址布置的工作存儲器內,其中該工作存儲器快于初始存儲器速度并且有多個順序的地址位置。該第一多條是相鄰的,并具有起始地址。此外,該第一多條以相鄰方式存儲在工作存儲器內,并通過工作存儲器相對于起始地址進行處理。
在一些實施例中,當不同條的相鄰部分(在多條內)存儲在工作存儲器的相鄰地址位置時,該第一多條被認為是以相鄰方式存儲的。為維持循環性,工作存儲器可具有第一存儲位置和最新存儲位置,其中第一存儲位置邏輯上與最新存儲位置相鄰。而且,在處理過程中,可計算從起始地址開始的偏移量。
在其他一些實施例中,當該第一多條被處理時新的條被存儲在工作存儲器內。該新的條與第一多條相鄰。因此,來自該第一多條的至少一個條與新的條一起處理。工作存儲器可劃分為給定數量的條區域,并且每個條中的圖像數據包括多個圖像數據行。在這些實施例中,根據條區域的給定數量,可通過移位用于存儲在工作存儲器內的多個行來存儲條。
根據本發明的其他方面,一種用于處理存儲在被邏輯地分成多個相鄰條的初始存儲器內的圖像數據的裝置包括用于以循環方式訪問工作存儲器的地址管理器。工作存儲器快于初始存儲器并有多個順序的地址位置。該裝置還包括數據傳輸設備,其將第一多條存儲于工作存儲器,其中該第一多條是相鄰的并有起始地址。該第一多條以相鄰方式存儲在工作存儲器內。該裝置還包括處理器,用于通過工作存儲器相對于起始地址處理第一多條。
本發明的說明性實施例實現為計算機程序產品,該產品具有在其上帶有計算機可讀程序代碼的計算機可用介質。根據傳統的過程,計算機系統可以讀取和使用該計算機可讀編碼。
通過下面結合附圖進行更詳細的說明,將會更加全面地理解本發明的上述內容和優勢,在附圖中 圖1示意性地示出了能實現說明性實施例的示例計算機系統。
圖2示意性地示出了根據本發明說明性實施例可進行處理的圖形圖像幀。
圖3顯示可用來處理圖像的兩個存儲設備 圖4A顯示圖3中所示的第二存儲器(高速緩沖存儲器)配置的附加細節。
圖4B是圖4A中所示的第二存儲器另一個邏輯視圖。
圖5顯示圖2中所示的處理圖像的說明性方法。
圖6顯示圖3、4A和4B所示的跨越通過第二存儲器的說明性方法。
具體實施例方式 在本發明的說明性實施例中,計算機系統內的圖像數據從較慢存儲器向較快、循環配置的存儲器傳輸以進行處理。下面將討論示例性 實施例的細節。
圖1是在其上能實現說明性實施例的示例計算機系統的示意圖。圖1中的示例計算機系統100僅用于說明的目的,不應被認為是對本發明的限制。盡管下面的說明會參考常用來描述特定計算機系統的術語,但所描述的概念同樣可應用于其他的計算機系統,包括具有與圖1所示結構不相似構造的系統。
計算機100包括具有傳統微處理器的中央處理單元(CPU)105,用于暫時存儲信息的主存儲器110(例如隨機訪問存儲器,本領域通常被叫做“RAM”),和用于永久存儲只讀信息的只讀存儲器(ROM)115。此外,計算機100還具有用于控制系統RAM110的存儲器控制器120,和用于控制至系統RAM110直接存儲器訪問的直接存儲器訪問(DMA)控制器160。計算機100還包括用于聯接多種內部元件的主總線130。
可由眾所周知的非易失性存儲介質提供大容量存儲,例如磁盤142,數字通用磁盤(在本領域通常叫做“DVD”,圖中未顯示),CD-ROM147,和硬盤152。而且,數據和軟件可通過諸如磁盤142和CD-ROM147的可移除介質或通過網絡連接與計算機系統100進行交換。
至計算機100的用戶輸入可由若干設備提供。例如,鍵盤156和鼠標157可通過鍵盤和鼠標控制器155連接至總線130。對于本領域的技術人員來說,其他輸入設備如數碼相機、筆和/或寫字板以及語音輸入的麥克風,可通過總線130和合適的控制器連接至計算機100,這是顯而易見的。
計算機系統100優選地由諸如WINDOWS NT操作系統(由Microsoft Corp.,of Redmond,Washington發行)的操作系統軟件控制和協調。在其他計算機系統控制功能中,操作系統控制系統資源的分配,并執行系統任務,如過程調度、存儲器管理、聯網以及I/O業務。除此之外,說明性實施例(其與存儲器管理相關)可實現為為操作系統的一部分或作為獨立的程序。
圖2是根據本發明的說明性實施例可進行處理的圖形圖像162的幀示意圖。圖形圖像162可以是從諸如數碼相機或視頻輸入的任何已知源產生的數字化圖像。例如,圖像162可要求一些處理,如符合傳統的MPEG標準的壓縮操作的應用。
為達到上述目的,圖形圖像162被邏輯分成多個相鄰的數據條(以下簡稱“條”),這些條在邏輯上被視為形成多個相鄰的數據單元(以下簡稱“單元”)。每個條由像素的二維陣列組成,該陣列構成圖像162的其各自部分。在圖2所示的例子中,圖像162被分成七條的兩行。該每個七條的行形成六個單元。這些條被標識成條A-N,而這些單元被標識成單元1-12。一個單元由兩個相鄰的條組成。例如,條A和B形成單元1。下表表示圖2中單元和其相應的條 單元條 1 A,B 2 B,C 3 C,D 4 D,E 5 E,F 6 F,G 7 H,I 8 I,J 9 J,K 10 K,L 11 L,M 12 M,N 單元形成于每行中,從而每個中間的單元(即每行中既不是第一個單元也不是最后一個單元)與前一個和其后的單元重疊。例如,單元2由條B和條C形成,而單元3由條C和條D形成。因此,單元2和單元3共享條C。同樣,單元1和單元2共享條B。如下面所進行的更詳細的描述,該重疊通過在計算機100內部存儲器系統內允許流水線操作,促進了并行處理。對本領域的技術人員來說,條的邏輯分配的優勢,如提高處理速度,是顯而易見的。
不過應當注意到,圖2中所示的邏輯條和單元僅作為示例,并非建議只有該數量的條和單元才足夠。在一些實施例中,例如,單元可以由三個條或一個條組成。相應地,對于特定的條和單元的大小/數量的闡述并不限制本發明各種實施例的范圍。
圖2所示的圖像162的條和單元說明性地在圖像162在快速存儲器內被處理之前邏輯地形成。圖3顯示兩個可用來處理這種邏輯劃分的圖像162的存儲設備。在高級,圖像162最初被存儲在初始存儲設備中(初始存儲器164),然后以逐條方式傳輸至工作存儲設備(工作存儲器166)。工作存儲器166具有快于初始存儲器164的速度的速度。當圖像162在工作存儲器166中時,CPU處理該圖像162。
更為具體地,參考圖3,初始存儲器164可以是外部SDRAM(同步動態隨機訪問存儲器),其儲存全部圖像162。DMA控制器將圖像162的條傳輸至工作存儲器166,在本例中,該工作存儲器166是內部高速緩沖存儲器。下面參照圖5和圖6對傳輸和處理圖像162的方法作更詳細的說明。不過應當注意到,盡管已經討論了SDRAM和高速緩沖存儲器,但也可以使用能達到此相對速度的其他類型的存儲器。相應地,在許多實施例中,任何將數據傳輸給較快存儲器用于處理的較慢存儲器應是足夠的。
圖4A顯示圖3中所示的第二存儲器(高速緩沖存儲器)配置的附加細節。工作存儲器166配置為具有地址位置(也叫做“存儲位置”)集編號,該每個地址位置存儲用于圖像162內一個像素的數據。例如,圖4A所示的工作存儲器166具有用于96個像素數據的地址位置。每個地址位置的大小適當,以用來存儲從初始存儲器164接收到的未處理的圖像數據。相應地,每個地址位置應有足夠的空間存儲色彩(如紅、綠和藍)、透明度、深度以及其他給定像素所需的數據。
在處理過程中,每個地址位置可被連續地跨越。例如,如果要讀取的第一個地址位置為0,則要讀取的第二個地址位置為1,并且其后讀取的地址位置為2等等…。在替代的實施例中,地址位置不是被連續處理。但是,在上述任一個實施例中,選擇一個基地址(下面將進行討論,通常叫做“起始地址”),并且處理是相應于該基地址進行。更具體地,處理是以相對于該基地址的偏移來進行。例如,如果基地址是地址位置4,然后到處理地址位置6-8,則邏輯規定處理距離基地址的地址位置偏移2-4。
根據說明性實施例,工作存儲器166配置為循環存儲器。相應地,當地址位置95被讀取、跳過或另外被跨越之后,處理回到地址位置0。而且,工作存儲器166被邏輯分成兩個或更多的對應于圖像162中的條的組。更具體地,如圖4A所示的工作存儲器166被劃分成三個相等大小的塊。這些塊以下簡稱為第一塊166A,第二塊166B和第三塊166C。每個存儲塊配置為具有與圖像數據條的地址位置相同總數量的地址位置。在說明性實施例中,每個存儲塊因此被配置成具有與圖像162的條完全相同的二維大小。
圖4B是圖4A所示的工作存儲器166的另一個邏輯視圖。具體地說,對于指針或其他存儲器跨越裝置,工作存儲器166出現作為地址位置的一維陣列。在所示的例子中,當跨越地址位置95之后,就讀取/跳過或跨越地址位置0。然而相鄰的圖像數據存儲在該地址位置內,如圖4A所示。
按照與本發明其他要素類似的方式,圖4A和圖4B所示的地址位置的總數量僅作示例。可相應地使用不同數量的地址位置和分區,并可使用不同大小的存儲器。對于特定大小的討論并不限制本發明的范圍。
圖5是圖2所示的處理圖像162的方法。該方法從步驟500開始,其中,圖像162被邏輯劃分成多個條。例如,可按圖2所示劃分圖像162。根據圖像162的大小,該圖像162可被劃分成一行或更多行的條,如上所述,每行形成多個重疊單元。對于在圖像162內的每行執行剩余步驟。
具體地,然后將相鄰條的第一多集從初始存儲器164(即較慢存儲器,如2級存儲器)傳輸至工作存儲器166(即較快存儲器,如1級存儲器)。在說明性實施例中,條A和條B(即單元1)可首先裝載進工作存儲器166的第一和第二塊166A和166B。如圖所示,這些條被連續地裝載進工作存儲器166。更具體地,在兩個相鄰條之間的相鄰像素被存儲在工作存儲器166內相鄰的地址位置中。在所示的例子中,該兩個相鄰的條在相同的行內有相同的像素。
為實現此目的,DMA控制器被配置成2D-DMA。除此之外,它說明性地執行兩個操作即1)“裝載”操作,用于將單元(即條集)裝載到FIFO(先入先出)管上;以及2)“存儲”操作,用于將圖像數據陣列從FIFO管作為像素二維陣列(即作為條或單元)存儲在工作存儲器166中。注意如上所述,每個條是形成圖像162一部分的像素數據的二維陣列。相應地,這些操作確保當被存儲到初始存儲器164內時維持該條數據格式。
在說明性實施例中,用于兩個所述DMA操作的軟件語義如下 //The DMA_LOAD semantics movtofifo(short *in,int xc,int xs,int ye,int ys) { while(yc){ for(x=0;x<xc;x++){ *fifo_write++=*in; in+=XS; } in+=ys; yc--; } } //The DMLA_STORE semantics; movfromfifo(short *out,int xc,int xs,int yc,int ys) { while(yc){ for(x=0;x<xc;x++){ *out=*fifo_read++; out+=xs; } out+=ys; yc--; }<!-- SIPO <DP n="8"> --><dp n="d8"/> } //Parameters xs-the x stride xc-the x count ys-the y stride yc-the y count sz-the element size 8bit,16bit,32bit 當第一條集裝載之后,然后在步驟504設置一對指針。更具體地,該系統配置成具有指向給定單元第一地址位置(在工作存儲器166內)的基指針和指向相對于該基指針的偏移的地址位置(也在工作存儲器166內)的讀取指針。最初,該兩個指針都指向相同的地址位置。例如,該指針最初設置成指向條A內的第一地址位置。如圖6所示(如下所述),每當處理一個新的單元,基指針就遞增地址位置集編號,而當每個單元被跨越后讀取指針在該單元內連續遞增一次(用于每個地址位置)。
相應地,該方法進行到步驟506,其中,根據如下參考圖6所述的方法,處理當前的條集(即,當前被處理的單元)。然后在步驟508確定被處理的行是否有附加的條用于處理。如果該行的附加條不需要處理,則過程結束(針對該行)。
相反,如果附加的條需要處理,則過程繼續到步驟510,其中,下一個條集存儲在工作存儲器166內。在圖2所示的例子中,單個數據條(如條C)存儲在工作存儲器166的下一個隨后塊,在此情形下,該下一個隨后塊就是工作存儲器166的第三塊166C。過程循環回到步驟504,指針被重新設置。為達到此目的,基指針和讀取指針設置成指向下一個單元的第一地址位置(如條B的第一存儲位置)。相應地,處理下一個單元(由條B和條C組成),因此允許重新使用數據(即條B)。迭代此方法,直到整行被處理。如果圖像162有附加行,則對下一行重復該方法。
在說明性實施例中,圖5所示方法的多個步驟可以不同的順序或基本同時進行。例如,處理當前條集時(步驟506),CPU105可確定是否要處理附加的條(步驟508),并且如果是,它將這些條存儲在工作存儲器166的下一個塊中(步驟510)。相應地,一些實施例將這些步驟組合進一個基本并行的操作中。
圖6顯示了步驟506所引用的處理當前條集的方法。該方法從步驟600開始,其中,基指針和讀取指針被定位。該步驟可以隱含在過程中,因而它在多種實施例中不是必需的步驟。該過程然后繼續到步驟602,其中,讀取地址位置集用于處理。為達到此目的,讀取指針遞增,以從基指針讀取地址位置集編號。在本文討論的示例中,讀取指針遞增八次,以讀取在其當前單元內的第一八個地址位置中的每一個。相應地,該步驟允許讀取具有單元數據的工作存儲器166的兩個相鄰塊的一部分。
當地址位置集被讀取后,然后讀取指針跳過下一個隨后的地址位置集(步驟604)。在所示的例子中,讀取指針跳過隨后的四個地址位置。該步驟允許該方法跳過沒有單元數據的工作存儲器166的那一個塊。然后在步驟606確定讀取指針是否指向與由基指針所指向的地址相同的地址(即基地址)。如果是,則該方法結束,因為整個單元已經存儲在工作存儲器166內。相反,如果讀取指針指向不同的地址位置,則過程循環回到步驟602,其中,讀取下一個地址位置集編號。相應地,迭代此方法直到整個單元存儲在工作存儲器166內。如上所述,在讀取地址位置后,CPU105會執行一些處理功能,如壓縮圖像數據。
相應地,圖5和圖6中所描述的方法允許將像素數據的二維陣列存儲在工作存儲器166內。從基指針讀取/存儲過程開始和配置工作存儲器作為循環存儲器,使得該方法能有效地完成。
下面例子說明圖4A所示的工作存儲器166內的所述方法的九個迭代。更具體地,該例子從圖像處理的九個迭代來顯示工作存儲器166的內容。圖像162像素可按行順序地尋址。換句話說,每行有64個可順序尋址的像素位置。該例子的參數如下 圖像大小64×64 條大小4×8 條數每行16條,8個條行,總共128條 單元大小8×8(2條) 循環尋址大小3*4*8 在下面的例子中,圖像162內的每個像素以下列格式標識“a(行,列)”。因此,如標記“a(0,1)”表示用于位于圖像162的0行和列1中的像素的像素數據。此外,工作存儲器166第一列內的每個存儲位置的地址編號在緊挨工作存儲器166第一列的左端列出。當然,參照圖4A,可確定所有在示例工作存儲器166內的地址。最后,每個迭代的基地址大寫并加下劃線,而接收圖像數據的存儲部分用加粗。
模擬輸出 迭代(1),基地址=0。A
a
a
a
a
a
a
a
N/A N/A N/A N/Aa[1,0]a[1,1]a[1,2]a[1,3]a[1,4]a[1,5]a[1,6]a[1,7] N/A N/A N/A N/Aa[2,0]a[2,1]a[2,2]a[2,3]a[2,4]a[2,5]a[2,6]a[2,7] N/A N/A N/A N/Aa[3,0]a[3,1]a[3,2]a[3,3]a[3,4]a[3,5]a[3,6]a[3,7] N/A N/A N/A N/Aa[4,0]a[4,1]a[4,2]a[4,3]a[4,4]a[4,5]a[4,6]a[4,7] N/A N/A N/A N/Aa[5,0]a[5,1]a[5,2]a[5,3]a[5,4]a[5,5]a[5,6]a[5,7] N/A N/A N/A N/Aa[6,0]a[6,1]a[6,2]a[6,3]a[6,4]a[6,5]a[6,6]a[6,7] N/A N/A N/A N/Aa[7,0]a[7,1]a[7,2]a[7,3]a[7,4]a[7,5]a[7,6]a[7,7] N/A N/A N/A N/A000000048006000720084 迭代(2),基地址=4。
a
a
a
a
A
a
a
a
a
a
a
a
a[1,0]a[1,1]a[1,2]a[1,3]a[1,4]a[1,5]a[1,6]a[1,7]a[1,8]a[1,9]a[1,10]a[1,11]a[2,0]a[2,1]a[2,2]a[2,3]a[2,4]a[2,5]a[2,6]a[2,7]a[2,8]a[2,9]a[2,10]a[2,11]a[3,0]a[3,1]a[3,2]a[3,3]a[3,4]a[3,5]a[3,6]a[3,7]a[3,8]a[3,9]a[3,10]a[3,11]a[4,0]a[4,1]a[4,2]a[4,3]a[4,4]a[4,5]a[4,6]a[4,7]a[4,8]a[4,9]a[4,10]a[4,11]a[5,0]a[5,1]a[5,2]a[5,3]a[5,4]a[5,5]a[5,6]a[5,7]a[5,8]a[5,9]a[5,10]a[5,11]a[6,0]a[6,1]a[6,2]a[6,3]a[6,4]a[6,5]a[6,6]a[6,7]a[6,8]a[6,9]a[6,10]a[6,11]a[7,0]a[7,1]a[7,2]a[7,3]a[7,4]a[7,5]a[7,6]a[7,7]a[7,8]a[7,9]a[7,10]a[7,11]000000048006000720084 迭代(3),基地址=8。a[7,12]a[7,13]a[7,14]a[7,15]a
a
a
a
A
a
a
a
a
a
a
a
a[1,4]a[1,5]a[1,6]a[1,7]a[1,8]a[1,9]a[1,10]a[1,11]a[1,12]a[1,13]a[1,14]a[1,15]a[2,4]a[2,5]a[2,6]a[2,7]a[2,8]a[2,9]a[2,10]a[2,11]a[2,12]a[2,13]a[2,14]a[2,15]a[3,4]a[3,5]a[3,6]a[3,7]a[3,8]a[3,9]a[3,10]a[3,11]a[3,12]a[3,13]a[3,14]a[3,15]a[4,4]a[4,5]a[4,6]a[4,7]a[4,8]a[4,9]a[4,10]a[4,11]a[4,12]a[4,13]a[4,14]a[4,15]a[5,4]a[5,5]a[5,6]a[5,7]a[5,8]a[5,9]a[5,10]a[5,11]a[5,12]a[5,13]a[5,14]a[5,15]a[6,4]a[6,5]a[6,6]a[6,7]a[6,8]a[6,9]a[6,10]a[6,11]a[6,12]a[6,13]a[6,14]a[6,15]a[7,4]a[7,5]a[7,6]a[7,7]a[7,8]a[7,9]a[7,10]a[7,11]000000048006000720084 迭代(4),基地址=12。a[7,12]a[7,13]a[7,14]a[7,15]a[7,16]8[7,17]a[7,18]a[7,19]a
a
a
a
A
a
a
a
a
a
a
a
a[1,8]a[1,9]a[1,10]a[1,11]a[1,12]a[1,13]a[1,14]a[1,15]a[1,16]a[1,17]a[1,18]a[1,19]a[2,8]a[2,9]a[2,10]a[2,11]a[2,12]a[2,13]a[2,14]a[2,15]a[2,16]a[2,17]a[2,18]a[2,19]a[3,8]a[3,9]a[3,10]a[3,11]a[3,12]a[3,13]a[3,14]a[3,15]a[3,16]a[3,17]a[3,18]a[3,19]a[4,8]a[4,9]a[4,10]a[4,11]a[4,12]a[4,13]a[4,14]a[4,15]a[4,16]a[4,17]a[4,18]a[4,19]a[5,8]a[5,9]a[5,10]a[5,11]a[5,12]a[5,13]a[5,14]a[5,15]a[5,16]a[5,17]a[5,18]a[5,19]a[6,8]a[6,9]a[6,10]a[6,11]a[6,12]a[6,13]a[6,14]a[6,15]a[6,16]a[6,17]a[6,18]a[6,19]a[7,8]a[7,9]a[7,10]a[7,11]000000048006000720084 迭代(5),基地址=16。a[7,12]a[7,13]a[7,14]a[7,15]a[7,16]a[7,17]a[7,18]a[7,19]a[7,20]a[7,21]a[7,22]a[7,23]a
a
a
a
A
a
a
a
a
a
a
a
a[1,12]a[1,13]a[1,14]a[1,15]a[1,16]a[1,17]a[1,18]a[1,19]a[1,20]a[1,21]a[1,22]a[1,23]a[2,12]a[2,13]a[2,14]a[2,15]a[2,16]a[2,17]a[2,18]a[2,19]a[2,20]a[2,21]a[2,22]a[2,23]a[3,12]a[3,13]a[3,14]a[3,15]a[3,16]a[3,17]a[3,18]a[3,19]a[3,20]a[3,21]a[3,22]a[3,23]a[4,12]a[4,13]a[4,14]a[4,15]a[4,16]a[4,17]a[4,18]a[4,19]a[4,20]a[4,21]a[4,22]a[4,23]a[5,12]a[5,13]a[5,14]a[5,15]a[5,16]a[5,17]a[5,18]a[5,19]a[5,20]a[5,21]a[5,22]a[5,23]a[6,12]a[6,13]a[6,14]a[6,15]a[6,16]a[6,17]a[6,18]a[6,19]a[6,20]a[6,21]a[6,22]a[6,23]000000048006000720084 迭代(6),基地址=20。a[6,24]a[6,25]a[6,26]a[6,27]a[7,16]a[7,17]a[7,18]a[7,19]a[7,20]a[7,21]a[7,22]a[7,23]a[7,24]a[7,25]a[7,26]a[7,27]a
a
a
a
A
a
a
a
a
a
a
a
a[1,16]a[1,17]a[1,18]a[1,19]a[1,20]a[1,21]a[1,22]a[1,23]a[1,24]a[1,25]a[1,26]a[1,27]a[2,16]a[2,17]a[2,18]a[2,19]a[2,20]a[2,21]a[2,22]a[2,23]a[2,24]a[2,25]a[2,26]a[2,27]a[3,16]a[3,17]a[3,18]a[3,19]a[3,20]a[3,21]a[3,22]a[3,23]a[3,24]a[3,25]a[3,26]a[3,27]a[4,16]a[4,17]a[4,18]a[4,19]a[4,20]a[4,21]a[4,22]a[4,23]a[4,24]a[4,25]a[4,26]a[4,27]a[5,16]a[5,17]a[5,18]a[5,19]a[5,20]a[5,21]a[5,22]a[5,23]a[5,24]a[5,25]a[5,26]a[5,27]a[6,16]a[6,17]a[6,18]a[6,19]a[6,20]a[6,21]a[6,22]a[6,23]000000048006000720084 迭代(7),基地址=24。a[6,24]a[6,25]a[6,26]a[6,27]a[6,28]a[6,29]a[6,30]a[6,31]a[7,20]a[7,21]a[7,22]a[7,23]a[7,24]a[7,25]a[7,26]a[7,27]a[7,28]a[7,29]a[7,30]a[7,31]a
a
a
a
A
a
a
a
a
a
a
a
a[1,20]a[1,21]a[1,22]a[1,23]a[1,24]a[1,25]a[1,26]a[1,27]a[1,28]a[1,29]a[1,30]a[1,31]a[2,20]a[2,21]a[2,22]a[2,23]a[2,24]a[2,25]a[2,26]a[2,27]a[2,28]a[2,29]a[2,30]a[2,31]a[3,20]a[3,21]a[3,22]a[3,23]a[3,24]a[3,25]a[3,26]a[3,27]a[3,28]a[3,29]a[3,30]a[3,31]a[4,20]a[4,21]a[4,22]a[4,23]a[4,24]a[4,25]a[4,26]a[4,27]a[4,28]a[4,29]a[4,30]a[4,31]a[5,20]a[5,21]a[5,22]a[5,23]a[5,24]a[5,25]a[5,26]a[5,27]a[5,28]a[5,29]a[5,30]a[5,31]a[6,20]a[6,21]a[6,22]a[6,23]000000048008000720084 迭代(8),基地址=28。a[6,24]a[6,25]a[6,26]a[6,27]a[6,28]a[6,29]a[6,30]a[6,31]a[6,32]a[6,33]a[6,34]a[6,35]a[7,24]a[7,25]a[7,26]a[7,27]a[7,28]a[7,29]a[7,30]a[7,31]a[7,32]a[7,33]a[7,34]a[7,35]a
a
a
a
A
a
a
a
a
a
a
a
a[1,24]a[1,25]a[1,26]a[1,27]a[1,28]a[1,29]a[1,30]a[1,31]a[1,32]a[1,33]a[1,34]a[1,35]a[2,24]a[2,25]a[2,26]a[2,27]a[2,28]a[2,29]a[2,30]a[2,31]a[2,32]a[2,33]a[2,34]a[2,35]a[3,24]a[3,25]a[3,26]a[3,27]a[3,28]a[3,29]a[3,30]a[3,31]a[3,32]a[3,33]a[3,34]a[3,35]a[4,24]a[4,25]a[4,26]a[4,27]a[4,28]a[4,29]a[4,30]a[4,31]a[4,32]a[4,33]a[4,34]a[4,35]a[5,24]a[5,25]a[5,26]a[5,27]a[5,28]a[5,29]a[5,30]a[5,31]a[5,32]a[5,33]a[5,34]a[5,35]000000048006000720084 迭代(9),基地址=32。a[5,36]a[5,37]a[5,38]a[5,39]a[6,28]a[6,29]a[6,30]a[6,31]a[6,32]a[6,33]a[6,34]a[6,35]a[6,36]a[6,37]a[6,38]a[6,39]a[7,28]a[7,29]a[7,30]a[7,31]a[7,32]a[7,33]a[7,34]a[7,35]a[7,36]a[7,37]a[7,38]a[7,39]a
a
a
a
A
a
a
a
a
a
a
a
a[1,28]a[1,29]a[1,30]a[1,31]a[1,32]a[1,33]a[1,34]a[1,35]a[1,36]a[1,37]a[1,38]a[1,39]a[2,28]a[2,29]a[2,30]a[2,31]a[2,32]a[2,33]a[2,34]a[2,35]a[2,36]a[2,37]a[2,38]a[2,39]a[3,28]a[3,29]a[3,30]a[3,31]a[3,32]a[3,33]a[3,34]a[3,35]a[3,36]a[3,37]a[3,38]a[3,39]a[4,28]a[4,29]a[4,30]a[4,31]a[4,32]a[4,33]a[4,34]a[4,35]a[4,36]a[4,37]a[4,38]a[4,39]a[5,28]a[5,29]a[5,30]a[5,31]a[5,32]a[5,33]a[5,34]a[5,35]000000048006000720084 如上所示,該過程以及相關過程有這樣一種效果以預選的次數在條內邏輯移位行。具體地,該移位是根據工作存儲器166內的塊的數量而執行的。在上述例子中,當存儲第一三個條集后,在被存儲在工作存儲器中時,第二條集向下移位一行。當下面三個隨后的條集存儲在工作存儲器166中時,然后它們往下移位兩行。通過每三個集一行的方式(在所討論的例子中)迭代此過程,直至在圖像的行中的所有單元被處理。
本領域的技術人員應該明白根據單元行對說明性實施例進行討論僅作范例。也可使用單元的其他配置。例如,相似的原理可應用于單元列。相應地,多種實施例限于單元行。
除了上述的優勢,說明性的實施例并不要求CPU105保留指針的跟蹤。相反,可使用簡單的模命令和計數器來遞增指針直到滿足一定的條件(例如,讀取指針指向與由基指針所指向的地址位置相同的地址位置)。相應地,優化了CPU的使用。此外,當裝載其他條時處理一個圖像數據單元(即流水線作業)也改善了系統的性能。
本發明的多種實施例可以至少部分實現在任何傳統的計算機程序語言內。例如,一些實施例可在過程程序語言(如“C”語言)或面向目標程序語言(如“C++”語言)內實現。本發明的其他實施例可以實現為編程的硬件元件(如專用集成電路、FPGA以及數字信號處理器)或其他相關的元件。
在替代的實施例中,所公開的裝置和方法可實現為用于與計算機系統結合使用的計算機程序產品。這種實現可包括一系列的計算機指令,這些指令可固定在有形介質上,如計算機可讀介質(如磁盤,CD-ROM,ROM或硬盤),或通過調制解調器或其他接口設備(如通過介質連接至網絡的通信適配器)可向計算機系統傳送。該介質既可以是有形介質(如光纜或模擬通信線路)也可以是使用無線技術實現的介質(如微波、紅外線或其他傳輸技術)。
該一系列的計算機指令包含本文前面所描述的所有或部分關于系統的功能。本領域的技術人員會理解,這種計算機指令可被寫入到許多程序語言中,用于與許多計算機構造或操作系統結合使用。而且,這種指令可存儲在任何存儲設備內,如半導體、磁性的、光學的或其他的存儲設備,并可使用任何通信技術進行傳輸,如光纜、紅外線、微波或其他傳輸技術。
期望這種計算機程序產品可作為帶附屬打印或電子文檔(如緊縮套裝軟件)的可移除介質銷售,預裝載進計算機系統(如在系統ROM上或硬盤上),或通過網絡從服務器或電子公告板(如,因特網或萬維網)進行銷售。當然,可執行本發明的一些實施例可實現為為軟件和硬件的組合(如計算機程序產品)。本發明的其他實施例可實現為完全的硬件或完全的軟件(如計算機程序產品)。
盡管已公開了本發明各種示例實施例,但對本領域的技術人員來說,作各種修改以實現本發明的優勢而不超出本發明的范圍,這是顯而易見的。這些和其他明顯的修改將包括在所附的權利要求內。
權利要求
1.一種處理存儲在初始存儲器內的圖像數據的方法,該方法包括
將圖像邏輯地劃分成多個相鄰的條;
將第一多條存儲在具有循環尋址布置的工作存儲器中,該工作存儲器快于初始存儲器速度并具有多個順序的地址位置,
該第一多條是相鄰的并具有起始地址,該第一多條以相鄰方式存儲在工作存儲器內;以及
通過工作存儲器相對于起始地址處理該第一多條。
2.如權利要求1所述的方法,其中以相鄰方式存儲第一多條包括將該多條中不同條的相鄰部分存儲在工作存儲器相鄰的地址位置中。
3.如權利要求1所述的方法,其中工作存儲器有第一存儲位置和最新存儲位置,該第一存儲位置邏輯上與該最新存儲位置相鄰。
4.如權利要求1所述的方法,其中該處理計算距離起始地址的偏移。
5.如權利要求1的所述方法,進一步包括當該第一多條被處理時,在工作存儲器內存儲新的條,該新的條與該第一多條相鄰。
6.如權利要求5所述的方法,進一步包括將來自該第一多條的至少一個條與該新的條一起處理。
7.如權利要求1所述的方法,其中工作存儲器被劃分成給定數量的條區域,每個條中的圖像數據包括多個圖像數據行,所述存儲進一步包括根據條區域的給定數量移位用于工作存儲器內存儲的多個行。
8.一種用于用在計算機系統上用于處理存儲在初始存儲器內的圖像數據的計算機程序產品,該計算機程序產品包括在其上具有計算機可讀程序代碼的計算機可用介質,計算機可讀程序代碼包括
用于將圖像邏輯劃劃分成多個相鄰條的程序代碼;
用于將第一多條存儲在具有循環尋址布置的工作存儲器中的程序代碼,該工作存儲器快于初始存儲器并具有多個順序的地址位置,
該第一多條是相鄰的并有起始地址,該第一多條以相鄰方式存儲在工作存儲器內;
用于通過工作存儲器相對于起始地址處理該第一多條的程序代碼。
9.如權利要求8所述的計算機程序產品,其中以相鄰方式存儲第一多條的程序代碼包括用于將該多條中不同條的相鄰部分存儲在工作存儲器的相鄰地址位置中的程序代碼。
10.如權利請求8所述的計算機程序產品,其中工作存儲器具有第一存儲位置和最新存儲位置,該第一存儲位置邏輯上與該最新存儲位置相鄰。
11.如權利請求8所述的計算機程序產品,其中用于處理的程序代碼包括用于計算距離起始地址的偏移的程序代碼。
12.如權利請求8所述的計算機程序產品,進一步包括用于當該第一多條被處理時在工作存儲器內存儲新的條的程序代碼,該新的條與該第一多條相鄰。
13.如權利要求12所述的計算機程序產品,進一步包括將來自該第一多條的至少一個條與該新的條一起處理。
14.如權利要求8所述的計算機程序產品,其中工作存儲器被劃分成給定數量的條區域,每個條中的圖像數據包括多個圖像數據行,所述用于存儲的程序代碼進一步包括根據條區域的給定數量移位用于工作存儲器內存儲的多個行的程序代碼。
15.一種用于處理存儲在初始存儲器內的圖像數據的裝置,該數據圖像被邏輯劃分成多個相鄰的條,該裝置包括
用于以循環方式訪問工作存儲器的地址管理器,工作存儲器快于初始存儲器并有多個順序的地址位置;
用來將第一多條存儲在工作存儲器中的數據傳輸設備,該第一多條是相鄰的并具有起始地址,該第一多條以相鄰方式存儲在工作存儲器內;以及
處理器,用于通過工作存儲器相對于起始地址處理該第一多條。
16.如權利要求15所述的裝置,其中數據傳輸設備將該多條中不同條的相鄰部分存儲在工作存儲器的相鄰地址位置中。
17.如權利要求15所述的裝置,其中工作存儲器具有第一存儲位置和最新存儲位置,該第一存儲位置邏輯上與該最新存儲位置相鄰。
18.如權利要求15所述的裝置,其中處理器計算距離起始地址的偏移。
19.如權利要求15所述的裝置,進一步包括當該第一多條被處理時,在工作存儲器內存儲新的條,該新的條與該第一多條相鄰。
20.如權利要求19所述的裝置,進一步其中處理器將來自該第一多條的至少一個條與該新的條一起處理。
21.如權利要求15所述的裝置,其中工作存儲器被劃分成給定數量的條區域,每個條中的圖像數據包括多個圖像數據行,該數據傳輸設備根據條區域的給定數量移位用于工作存儲器內存儲的多個行。
全文摘要
一種相對高速循環存儲設備,其結合其他的過程,提高圖像處理效率。為達到此目的,一種處理存儲在初始存儲器內的圖像數據的方法和裝置將圖像邏輯分成多個相鄰的條。第一多條存儲在具有循環尋址布置的工作存儲器內,其中該工作存儲器快于初始存儲器速度并且有多個順序的地址位置。該第一多條是相鄰的并具有起始地址。此外,該第一多條以相鄰方式存儲在工作存儲器內,并通過工作存儲器相對于起始地址進行處理。
文檔編號G06T1/60GK1669051SQ03816690
公開日2005年9月14日 申請日期2003年4月23日 優先權日2002年6月13日
發明者寧可, 馬爾卡·霍夫曼, 加比·伊 申請人:模擬設備公司