專利名稱:顯示源圖像的變形版本的設備和方法
技術領域:
本發明涉及顯示源圖像的變形版本的設備和方法。
背景技術:
由計算機或專用視頻處理硬件處理的視頻可以看作單獨的靜止圖像的序列。每個圖像由多個像素形成,所述多個像素典型地以矩形陣列或矩陣布置。可以通過識別任意給定像素位于圖像中哪個水平線(或行)和哪個垂直線(或列)上來確定該像素在圖像中的坐標。大多數視頻縮放器(scaler)架構以組成該圖像的單獨的像素到達的次序將輸入視頻信號存儲到存儲器中。因此,存儲組成視頻的第一圖像的整個最上面一行,從該行的最左面像素移動到最右面像素。然后,將這些像素存儲在存儲器中作為一個單元。對于第二行等重復該操作,直到已經存儲了組成圖像的所有像素為止。對于組成視頻的所有圖像重復該操作。同步動態隨機存取存儲器(SDRAM)芯片特別適于以該方式存儲視頻數據。在 SDRAM中,以庫(bank)、行和列存儲數據。可視化SDRAM芯片的布置的一種方式是想象SDRAM 存儲器中的每個庫是具有大量抽屜的行和列的大型檔案柜。每個抽屜存儲某個量的信息, 并且可以通過指定其位于特定檔案柜的特定行和列中來識別。為避免在用作到SDRAM中的地址的行和列與組成圖像的行和列之間的混淆,在這里通常將后者分別稱為“水平線”和“垂直線”。在一個實現方式中,每個像素包括二十四位信息。這意味著每個像素可以表示224 =16,777,216種顏色值之一。48位寬數據總線可以存儲48位,這等同于相當于兩個像素的信息,因為每個像素是M位長。該二像素信息段通常被稱為“數據字”。雙倍數據速率同步動態隨機存取存儲器(DDR2SDRAM)芯片每時鐘周期傳送兩個數據字。這意味著每個時鐘周期可以存儲相當于四個像素的信息。因此,占用四個時鐘周期來存儲十六個像素,其等同于八個數據字。圖1是從Micron 256Mb DDR2數據表取得的時序圖,該數據表可從總部在80002, Federal Way, P. 0. Box 6, Boise, ID 83707-006, USA ^ Micron Technology Inc
經由他們在 http://download, micron. com/pdf/datasheets/dram/ddr2/256MbDDR2. pdf 的網站獲得。圖1示出典型DDR2SDRAM中的順序列存取。順序列存取意味著存取SDRAM存儲器中特定行中的任意列。在時間T0,發布READ (讀)命令以從SDRAM存儲器中的特定庫中的特定行讀取列η。在之后的時間Τ2,發布另外的READ命令以讀取相同庫和行的不同列b。 在時間T3,返回列η中包括的所有數據。如在圖1中可以看到的那樣,在從列η返回數據之前在TO和Τ3之間存在三個時鐘周期的延遲。這些對SDRAM的READ命令中的每一個導致在兩個時鐘周期中從SDRAM的相關列中檢索到的四個數據字或“DQ”。因此,數據傳送的兩個周期檢索四個DQ,這等同于圖像數據的八個像素。
在實際檢索到前四個DQ之前,在T2發布第二 REAM命令。這被稱為“流水線操作”, 并保證即使沒有繼續發布READ命令,在從一行存取的數據流中也沒有間隙。從時間T3起,每個時鐘周期可以檢索兩個數據字。這一點意味著一旦打開相同行,從該行的不同列讀取兩個數據字就占用一個時鐘周期。圖2是從相同Micro 256Mb DDR2數據表得到的時序圖。圖2示出了典型 DDR2SDRAM中的順序行存取。圖2不同于圖1在于,代替順序存取相同行中的不同列,順序存取不同行。例如,順序行存取需要90°旋轉。通過在時間Tl發布ACT (“激活”)命令來激活要存取的第一行(這里是行A)。然后,通過在時間T4發布READ命令來讀取行A中的所需列(列η)。如果需要從不同行讀取數據,則無論其是否也來自相應列,行A必須首先“預充電”或關閉。在時間Τ6發布PRE命令,并且在三個時鐘周期(tKP)之后,關閉行A且可以在時間T9發布另一 ACT命令。與順序讀取一行的順序列相對比,因為在可以讀取下一行之前必須打開和關閉每個行,所以從不同行順序讀取占用八個時鐘周期。總而言之,讀取順序行比讀取相同行中的順序列慢八倍的時間。在一些數據存儲布置,特別是圖像處理布置中,需要頻繁的順序行存取以處理數據,這導致長的數據處理時間和系統資源的密集使用。圖像變形需要隨機行存取,由此將輸入圖像映射到非矩形形狀。基于視頻的數據存取的這些和其它特性已經對視頻數據的處理和使用提出了挑戰。
發明內容
以多個實施例和應用示范了本發明,其中一些總結如下。本發明的各種實施例解決了包括如上所述的那些問題,以及包括特別適于處理視頻或圖像數據的其它問題。在各種實施例中,本發明解決了當需要對行的順序存取時數據的處理負擔。根據本發明的第一方面,提供用于顯示源圖像的變形版本的設備,包括線存儲器,布置為將源圖像劃分為來自源圖像的多個像素行;塊貯存控制器,布置為將像素行組合為像素塊,每個像素塊包括來自源圖像的相鄰水平和垂直像素,其中每個像素塊存儲在存儲器中的順序存儲位置(sequential memory location)中;輸出坐標發生器,布置為產生與顯示器上的輸出像素位置對應的輸出坐標(0X,0Y);變形引擎,布置為將輸出坐標(0X, 0Y)映射到變形坐標(WX,WY),變形坐標對應于源圖像中的像素位置;塊請求轉換器,布置為識別在其中存儲包含具有變形坐標(WX,WY)的像素的像素塊的存儲位置;塊請求發生器,布置為請求識別出的像素塊;存儲控制器,布置為從存儲器檢索請求的像素塊;和顯示器控制器,布置為在相應輸出像素位置(0Χ,0Υ)上輸出具有變形坐標(WX,WY)的像素的值用于顯示。該設備允許通過將陣列劃分為塊而更有效地使用處理能力。這可以特別有益于需要數據的映射或變換的情況。術語“塊”在這里用于指與位于相同水平或垂直線的全部像素相對比,位于輸入圖像中相鄰水平和垂直線中的相鄰像素的任意組或子單元。例如,為了方便,塊可以是矩形陣列,或者簡單的L型,但其它形狀的塊也在該術語的范圍內。存儲器可以包括SDRAM,可以跨越在SDRAM中的順序列地存儲每個像素塊,并且塊請求轉換器可以布置為識別在其中存儲所需像素塊的庫、行和列地址。SDRAM存取典型地忍受需要順序行存取來映射輸入圖像。當以塊存儲組成輸入圖像的像素時,可以減少SDRAM
存取量。可以將源圖像的相鄰像素塊一起聚合為仍留在單一行中的更大像素塊,并且每個較大的像素塊可被存儲在相同SDRAM行中。以該方式交織庫允許對該較大的像素塊中的像素的快速存取。該設備還可以包括垂直偏移發生器引擎,布置為接收由輸出坐標發生器產生的輸出坐標(0X,0Y),并產生多個偏移輸出坐標(0X,0Y+1), (OX, 0Y+2)...),每個偏移輸出坐標從非偏移輸出坐標(ox,0Y)垂直地偏移,并提供輸出坐標((0X,0Y),(OX, 0Y+1), (0X, 0Y+2)...)到變形引擎。可以以該方式產生變形坐標的多條線。該設備還可以包括移位寄存器布置,布置為存儲多個變形坐標(WX,WY)項,每個變形坐標項具有用于其各自數據值(D)的字段以及組裝器(populator),該組裝器布置為將移位寄存器布置中的變形坐標與任意檢索到的像素塊中像素的變形坐標比較,并且在肯定比較時,完成用于匹配的變形像素的數據值(D)的字段。移位寄存器布置可以用于解釋 (account for)從存儲器中檢索所需像素值時的延遲。該設備還可以包括ID發生器,布置為從塊請求轉換器接收識別出的存儲位置, 并從識別出的存儲位置產生內部像素塊ID ;ID延遲線,布置為從ID發生器接收并延遲像素塊ID ;和查找引擎,布置為從延遲線接收像素塊ID和從高速緩存中檢索具有匹配的像素塊 ID的像素塊。ID發生器提供方便的引擎以識別特定像素塊,并且ID延遲可以用于解釋在從存儲器檢索像素信息時的延遲。該設備還可以包括ID列表,布置為存儲未正在使用的像素塊ID的列表;讀指針,布置為指向可以使用的下一可用塊ID值;和寫指針,布置為指向再利用塊(recycled block) ID。ID列表可用于保證將正確的ID分配給正確的像素塊。該設備還可以包括塊ID比較器,布置為從塊請求轉換器接收識別出的存儲位置,將它們與新近識別出的塊的存儲位置比較,如果發現匹配,則重新使用具有匹配的存儲位置的像素塊的塊ID,而如果發現不匹配,則對于識別出的像素塊使用新的塊ID。塊ID比較器負責管理簡化該設備的操作的塊ID的使用。該設備還可以包括塊請求高速緩存,布置為存儲新近的像素塊檢索請求,由此存儲控制器布置為如果其剛剛請求或從存儲器檢索了請求的像素塊,則不檢索該請求的像素塊。以該方式最小化不需要的存儲器存取。存儲控制器可布置為在高速緩存中存儲檢索到的像素塊。以該方式最小化不需要的存儲器存取。存儲控制器可布置為在高速緩存的不同區域中存儲像素塊中的相鄰像素。這便利雙線性內插。該高速緩存可以包括內容可尋址存儲器。這允許在像素的讀回期間使用更少的存儲器。輸出坐標發生器可以包括同步脈沖發生器,布置為以輸出像素頻率產生輸出坐標。該設備還可以包括內插器,布置為當變形引擎將輸出坐標(0X,0Y)映射到非整數變形坐標(wx,WY)時執行雙線性內插,并且塊請求轉換器可布置為識別在源圖像中對非整數變形像素坐標(wx,WY)作貢獻的像素的變形坐標(WX,WY),并識別其中存儲包括貢獻像素的像素塊的存儲位置,塊請求發生器可布置為請求識別出的像素塊,存儲控制器可布置為從存儲器檢索請求的像素塊,內插器可布置為確定與非整數變形坐標(wx,WY)對應的輸出像素(0Χ,0Υ)的內插輸出值,并且顯示控制器可布置為在相應輸出像素位置(0Χ,0Υ)上輸出內插值用于顯示。這便利提供更精確的輸出的雙線性內插。根據本發明的第二方面,提供用于顯示源圖像的變形版本的方法,該方法包括將源圖像劃分為來自源圖像的多個像素行;將像素行組合為像素塊,每個像素塊包括來自源圖像的相鄰水平和垂直像素,并且在存儲器中的順序存儲位置上存儲每個像素塊;產生與顯示器上的輸出像素位置對應的輸出坐標(ΟΧ,0Υ);將輸出坐標(ΟΧ,0Υ)映射到變形坐標 (WX,WY),變形坐標對應于源圖像中的像素位置;識別在其中存儲包含具有變形坐標(WX, WY)的像素的像素塊的存儲位置;請求識別出的像素塊;從存儲器檢索請求的像素塊;和在相應輸出像素位置(0Χ,0Υ)上輸出具有變形坐標(WX,WY)的像素的值用于顯示。根據本發明的其它方面,提供包括指令的計算機程序,當執行該指令時,其使得數據處理設備執行這種方法,還提供包括計算機程序的計算機可讀介質或攜帶計算機程序的信號。結合模范實施例,用于處理數據的設備包括接收器電路、存儲控制器電路和組裝器(populator)電路。接收器電路以數據元素的陣列的形式接收數據,數據元素以水平和垂直線布置。存儲控制器電路在存儲位置中存儲(例如,通過控制存儲器)包括來自陣列的相鄰水平和垂直線中每條線的數據元素的子集的陣列的子單元。組裝器電路從存儲位置檢索子單元用于處理。這些各自電路例如可實現為編程以執行專用功能的計算機,下面示例也可實現為該應用。結合另一模范實施例,用于處理視頻數據的設備包括接收器電路、多個線緩沖器電路、存儲控制器電路和組裝器電路。接收器電路以水平和垂直線布置的像素陣列的形式接收視頻數據,該像素陣列表示圖像。線緩沖器電路分別保存所接收到的陣列的像素的不同線。存儲控制器電路在單一存儲位置中存儲包括來自至少兩個線緩沖器的像素的子集的陣列的子塊,每個像素的子集包括少于每條線的所有像素的像素,每個像素塊表示圖像的一個子部分。組裝器電路從存儲位置檢索子塊用于處理。另一模范實施例涉及用于通過執行指令以便可編程計算機執行以下步驟的可編程計算機的實現的方法以數據元素的陣列形式接收數據,該數據元素以水平和垂直線布置;在存儲位置中存儲包括來自陣列的相鄰水平和垂直線中每條線的數據元素的子集的陣列的子單元;和從存儲位置檢索子塊以用于處理。根據本發明的另一示例方面,用于處理數據的設備包括接收器,布置為以數據元素的陣列形式接收數據,該數據元素以水平和垂直線布置;存儲控制器,布置為在存儲位置中存儲包括來自陣列的相鄰水平和垂直線的數據元素的子集的陣列的子單元;和組裝器, 布置為從存儲位置檢索子塊以用于處理。該設備允許通過將陣列劃分為包括來自陣列的相鄰水平和垂直線的數據元素、而不是來自僅一條水平線的所有數據要素的子單元,來有效地使用處理能力。這可以特別適用于需要數據的映射或變換的情況。
該設備可以包括縮減器(downscaler),布置為減小由接收器接收到的陣列中的數據元素的數目。例如,如果某些數據元素實際不需要處理,則下縮放器可用于減小關于數據的總處理需求的開銷。該設備可以包括多個線緩沖器,每個布置為保存陣列的數據元素的不同水平線。該設備可以包括貯存控制器,布置為使得存儲控制器在彼此相同的存儲位置中存儲來自兩個或多個線緩沖器中的不同水平數據元素線的數據元素作為子單元。該設備可以包括輸出坐標發生器,布置為產生輸出坐標。該輸出坐標發生器可以是同步脈沖發生器。該設備可以包括映射器,布置為將輸出坐標轉換為所需數據元素的初始數據坐標,該所需數據元素是對相應輸出坐標貢獻信息的在存儲器中存儲的數據元素。該映射器可布置為使用查找表用于轉換。當難以或不可能定義用于轉換的數學變換時查找表時可以特別有用。替代地,映射器可布置為使用用于轉換的數學變換。該設備可以包括轉換器,布置為接收所需數據元素的初始數據坐標并確定包含所需數據元素的在存儲器中存儲的數據元素的子單元的存儲位置。該設備可以包括布置為高速緩存新近請求的子單元的存儲位置的高速緩存。該設備可以包括移位寄存器,布置為存儲具有相應的數據字的所需數據元素的初始數據坐標。該設備可以包括組裝器,布置為通過匹配在移位寄存器中保存的初始數據坐標與在檢索到的子單元中的初始數據坐標,來使用從存儲器檢索到的數據元素子單元填充數據值。該設備可以包括多個移位寄存器和內插器,由此,當初始數據坐標是非整數值坐標時,組裝器布置為檢索具有整數值初始數據坐標的相鄰數據元素的數據值,并且內插器布置為提供包括來自整數初始數據坐標的每個檢索到的數據值的加權貢獻的輸出。例如在可能是非整數值坐標的情況下,這提供數據的復雜映射或變形。代替包括同步脈沖發生器的輸出坐標發生器,其可以包括布置為以存儲器頻率產生輸出數據坐標集的存儲器側輸出數據坐標發生器和布置為以顯示頻率產生輸出顯示坐標的顯示器側輸出坐標發生器。該設備可以包括偏移布置,布置為從存儲器側輸出數據坐標發生器接收輸出數據坐標,并產生與輸出數據坐標的另一條線對應的另外輸出數據坐標集。該設備可以包括映射器,布置為接收該輸出數據坐標集和另外輸出數據坐標集, 并將它們翻譯為初始數據坐標。該設備可以包括轉換器,布置為接收初始數據坐標,并將它們轉換為到存儲器中的地址,該地址指示包含在初始數據坐標下的數據元素的子單元或多個單元位于的存儲位置。該地址可以包括子單元位于其中的存儲器中的庫、行和列以及指示需要的那個子單元中的特定數據元素的偏移值。該設備可以包括ID發生器,布置為使用地址產生內部ID值。該內部ID值可以包括每個庫、行和列地址每一個的低位。這可能導致對于有效數目的數據元素唯一有效的小尺寸ID值。該設備可以包括布置為存儲新近請求的子單元的高速緩存。
該設備可以包括布置為保存初始坐標的延遲器。該設備可以包括布置為使用ID值瀏覽高速緩存并檢索具有相同ID值的數據元素的相關子單元并填充線緩沖器中的相應初始數據坐標的數據項的查找引擎。該設備可以包括多個線緩沖器,其中由存儲器側輸出坐標發生器產生的輸出坐標被寫到某些線緩沖器,并且可以從其它線緩沖器讀取相應數據值。該設備可以包括視頻縮放器。該設備可以包括存儲器,該存儲器包含存儲位置。該存儲位置可以包括SDRAM中的位置。SDRAM可能比其它形式的存儲器(諸如SRAM)稍微便宜,減少設備的總成本。SDRAM 可以包括DDR2SDRAM。要處理的數據可以包括視頻數據,數據元素的陣列可以包括圖像且數據元素可以包括圖像的像素。該設備特別適于處理視頻數據。根據本發明的另一方面,提供用于處理數據的方法,包括接收在數據元素陣列形式下的數據,該數據元素以水平和垂直線布置;在存儲位置中存儲包括來自陣列的相鄰水平和垂直線的數據元素的陣列的子單元;和從存儲位置檢索子單元以用于處理。具體地說,如果存儲器是SDRAM存儲器,則該方法可以包括在SDRAM存儲器的一個庫中的存儲位置中存儲子陣列,并在SDRAM存儲器中的不同庫中存儲陣列的相鄰子單元。 這可以用于交織SDRAM中的庫,這可以減少數據的處理需求。根據本發明的另一方面,提供包括指令的計算機程序,當執行指令時,使得用于處理數據的設備執行用于處理數據的方法。計算機可讀介質可以包括計算機程序。信號可以包括計算機程序。上述總結不意在描述每個所示的實施例或本發明的每個實現方式。
結合附圖來考慮本發明各種實施例的具體描述,可以更全面地理解本發明,在附圖中圖1是在存取包括相鄰列中的數據元素的子陣列時各種模范實施例的各方面可應用到的DDR2SDRAM中的順序列存取的時序圖;圖2是在存取包括相鄰行中的數據元素的子陣列時各種模范實施例的各方面可應用到的DDR2SDRAM中的順序行存取的時序圖;圖3是根據本發明的一個或多個模范實施例的第一數據處理布置的示意圖;圖4是根據本發明的一個或多個模范實施例交織SDRAM的庫的可視表示;圖5是根據本發明的一個或多個模范實施例的輸入圖像的表示;圖6是根據本發明的一個或多個模范實施例的基于線存儲的輸入圖像的表示;圖7是根據本發明的一個或多個模范實施例的基于塊存儲的輸入圖像的表示;圖8是根據本發明的一個或多個模范實施例的、與圖5所示的輸入圖像對應的 90°順時針旋轉的輸出圖像的表示;圖9是根據本發明的一個或多個模范實施例的第二數據處理布置的示意圖;圖10是根據本發明的一個或多個模范實施例的第三數據處理布置的示意圖;圖11是根據本發明的一個或多個模范實施例的第四數據處理布置的示意圖12是根據本發明的一個或多個模范實施例的圖11所示的第四數據處理布置的子布置的示意圖;圖13是根據本發明的一個或多個模范實施例的輸出條的可視表示;圖14是根據本發明的一個或多個模范實施例的輸入條的可視表示;圖15是根據本發明的另一模范實施例的用于抗混疊(anti-aliasing)或平滑的圖11中的第四數據處理布置的子布置的示意圖;圖16示出根據另一模范實施例在SDRAM中存儲數據的布置;圖17示出其中使用內容可尋址存儲器(CAM)增強的、根據另一模范實施例的布置;圖18是根據本發明的一個或多個模范實施例的第五數據處理布置的示意圖;圖19是根據另一模范實施例的塊ID的可視表示;圖20是根據另一模范實施例的ID列表的可視表示;圖21是根據另一模范實施例的雙線性內插的可視表示;圖22是根據另一模范實施例的在不同高速緩存區域中存儲相鄰像素的可視表示;禾口圖23是根據本發明的一個或多個模范實施例的第六數據處理布置的示意圖。
具體實施例方式相信本發明可應用于多種不同類型的數據處理裝置、布置和方法,并且已經發現對于涉及諸如視頻數據之類的數據的處理的應用特別有用。但是本發明不需要限于這種方法,通過使用這些和其它內容討論多種示例,可以認可本發明的各種方面。結合各種模范實施例,術語“子單元”在這里用于指位于相鄰水平和垂直線(例如,好像可以是與位于相同水平或垂直線中的全部相關的)相鄰數據元素(諸如像素)的任意組。例如,為了方便,子單元可以是矩形陣列或者簡單L型,但是其它形狀的子單元也在該術語的范圍內。子單元可以包括數據元素的塊。塊提供關于子單元的方便的形狀,這允許在所有方向上對數據元素的幾乎隨機的存取。結合各種模范實施例,存取這種子單元可能因此涉及僅一次存取相鄰水平和垂直線中的數據元素,而這些元素不總是可經由水平線存取或垂直線存取一起存取的(在沒有子單元聚合的情況下)。在各種實施例中,子單元包括來自陣列的相鄰垂直和水平線的數據元素的四乘四陣列。這使得可以以特別有效的方式處理十六個數據元素。現在轉到附圖,圖3示出用于了存儲和存取數據(在該示例中是視頻或圖像數據) 的數據處理布置300。該布置300具有輸入視頻信號接收器302,其從諸如因特網的通信網絡或從記錄了視頻的源直接接收輸入視頻信號。然后,輸入視頻信號可選地經歷借助于縮減器(downscaler)的縮減。縮減器304 減少要由布置300處理的像素數目。縮減有利于通過減少正在處理的像素的總數來限制由布置300的后級需要的處理量。如果輸入視頻比在其上顯示視頻的裝置支持的分辨率(像素數目)顯著高,這是有幫助的。在該情況下,不需要處理輸入視頻信號的所有像素。在布置300中,在線緩存器306中保存輸入視頻信號的幾條像素線,直到累積了預定數目的線為止。在該示例中,存在四個線緩存器306,其每個存儲來自輸入視頻信號的完整像素線。當完全填充了四個線緩沖器306時,從線緩沖器306讀取十六個像素,并且傳遞到在SDRAM存儲器的順序列中將來自該四條線的像素存儲為十六個像素的4X4塊的塊貯存控制器308。這與其中沒有這種塊貯存控制器308的存儲圖像的常規方法相對。然后,將像素塊發送到SDRAM控制器310,用于在特定庫中以及在SDRAM存儲器312中該庫的特定行和多個列地址處的貯存。為了存取圖像數據的存儲塊用于顯示,布置300包括同步脈沖發生器 (“SPG”)314。SPG以水平和垂直脈沖的形式產生標準識視頻時序信號。其用于產生要在屏幕上顯示的輸出圖像中的像素的輸出X和Y坐標或位置(0Χ,0Υ)。換句話說,SPG產生與顯示屏幕上的左上角像素(0Χ,0Υ) = (0,0)對應的脈沖,然后產生與緊接在其右邊的像素 (ΟΧ,ΟΥ) = (1,0)對應的脈沖并以相同方式掃描到屏幕上右下角像素。用于識別顯示屏幕上的像素位置的坐標(0Χ,0Υ)在這里被稱為“輸出”坐標或位置。這與現在將描述的輸入或源圖像中的“初始”或“變形”坐標或位置(wx,WY)相對。注意到,即使輸出圖像也可以被稱為“變形”,術語“變形”也用于指初始圖像而不是輸出圖像。這是因為輸出坐標(0Χ, 0Υ)被變換或映射回對該輸出像素(0Χ,0Υ)作貢獻的相同圖像中的坐標(WX,WY)。將輸出坐標(顯示坐標(0X,OY))饋送到映射器或變形映射引擎316中。映射器 316負責確定輸出視頻信號中的哪些像素對應于輸入視頻中的哪些像素,S卩,需要檢索來自輸入圖像中的哪些像素來在顯示器上顯示輸出圖像。為了這樣做,映射器316可以使用數學變換來將輸出坐標(0X,0Y)映射到變形坐標(WX,WY)。替代地,映射器316可使用查找表來產生變形坐標(WX,WY)。在后一方法中,例如,在數學變換難以或不能定義的情況下, 該表可以指示輸出(0Χ,0Υ)和初始(WX,WY)像素之間的對應或映射關系。這可能是映射包括“混雜(jumbling up)”初始圖像的情況。在常規視頻縮放器中,因為以來自輸入圖像的水平像素線為單位存儲像素的事實限制了對存儲的像素的所有存取,所以復雜映射不是很有效。容易可用唯一“映射”是水平或垂直“翻轉”。水平翻轉(或關于垂直軸的旋轉)是在常規縮放器的延伸(remit)內,因為輸出圖像的第一水平線中的所有像素處于初始圖像的第一水平線內,僅僅處于相反的順序。類似地,垂直翻轉是在常規縮放器的延伸內,因為輸出圖像的第一水平線中的所有像素處于輸入圖像中的像素的底部水平線中相應的位置。當然,常規縮放器適于“正常”輸入以輸出存在受限數學變換或查找表使用的映射,并且縮放器僅輸出與輸入到其的坐標(WX, WY)相同的坐標(0X,0Y),或將簡單的縮放因子應用于輸出坐標(0Χ,0Υ)以確定初始或變形坐標(WX,WY)。如上所述,由映射器316確定的初始或變形坐標(WX,WY)指定輸入視頻信號中的相關像素坐標,其用于從SDRAM存儲器312檢索相關像素。初始坐標(WX,WY)被傳遞給塊請求轉換器318,其將變形坐標(WX,WY)轉換為在在其中存儲包含該像素的塊的SDRAM存儲器中的相應庫、行和列地址。換句話說,塊請求轉換器312將初始像素坐標(WX,WY)翻譯為其中以單一塊存儲包括期望像素的多個像素的SDRAM 312中的地址。因為像素的順序存取通常導致來自正在從SDRAM 312要求的初始圖像中相鄰水平和垂直線的像素,所以采用塊請求高速緩存320來記住新近請求的塊。高速緩存320不存儲塊本身的內容,僅存儲它們已經被存取的事實。如果剛剛檢索了請求的塊,則塊請求高速緩存320消除發布存儲控制器310從SDRAM存儲器312檢索特定塊的另一命令的需要,因為其將要么已經打開要么處于正在由SDRAM控制器310獲取的過程中。當從SDRAM存儲器312檢索特定塊時,來自該塊的像素信息用于組裝輸出圖像中的空像素。為了這樣做,組裝器或匹配和填充引擎322與移位寄存器3M通信以組裝輸出圖像的像素。采用移位寄存器324以存儲從映射器316輸出、將從SDRAM存儲器312檢索的初始或變形坐標(WX,WY)。移位寄存器3M是任意長度的,以允許來自輸入視頻的所需初始像素通過映射器316的相關初始坐標(WX,WY)的最初計算與從SDRAM存儲器312實際接收到該像素之間的延遲。該延遲將處于請求了相關初始像素之后的某個半隨機點上。在正在請求的特定像素或塊與實際從SDRAM存儲器312檢索到的那個塊之間存在較長延遲的情況下,可以使用更長的移位寄存器。當由映射器316產生新的變形坐標(WX,WY)時,移位寄存器324向前(along)移位。移位寄存器3M包括用于像素值或那種像素的數據值(D)的字段,其最初是空的,因為那個像素的值不是已知的。當完成了塊請求且從SDRAM存儲器312檢索了像素的塊時, 將塊與每個移位寄存器項比較以查看是否塊中的任意像素信息可用于填充移位寄存器324 中的任意空項。這將是檢索到的塊中像素的變形坐標(WX,WY)是否匹配在移位寄存器324 中已經存在的另一變形坐標(WX,WY)的情況。因為在每個塊中檢索幾個像素(在該示例中是十六個),所以如果已經產生了多個移位寄存器位置,則可以從檢索到的單一塊填充多個移位寄存器位置。當發現匹配時,換句話說,當移位寄存器324中的變形坐標(WX,WY)對應于從 SDRAM存儲器312檢索到的塊中的相同像素(WX,WY)時,在相應的移位寄存器3M數據位置(WX,WY)中存儲相應像素數據D。利用移位寄存器3M從開始到結束的移位時間,其每個變形坐標(WX,WY)應該借助于組裝器322存儲了數據值D。該數據值D是對于給定輸出像素坐標(0X,0Y)輸出的、 延遲了移位寄存器324的長度的所需像素值。通過提前SPG產生的輸出坐標(0X,0Y),可以允許該延遲。一旦已經完全組裝了移位寄存器324,就輸出相應圖像(3 ),例如,輸出到諸如 TV、PC監視器或投影儀之類的顯示裝置。可以通過交織SDRAM 312中的庫來加速整個過程。這是因為SDRAM中的不同庫可用于存儲來自初始圖像的像素的相鄰塊。如圖4所示,輸入圖像中的每個像素塊因此由在 SDRAM的庫0、1、2和3中存儲的塊包圍。因為可以讀取一個庫同時打開或關閉另一個庫,所以這減少了整個數據處理所需要的時間量。圖5示出十六個像素或數據元素{aQ(l、ail.....a33}的四乘四陣列,其共同表示來
自輸入視頻信號的初始圖像。每個數據元素^1Oj11.....a33對應于十六像素初始圖像的一
個像素,并且具有相關聯的值D,D11.....D330數據元素或像素 」處于初始圖像的第i行
和第j列(j = 0、1、...)。實際上,大多數圖像包含多于十六個像素,但是這里使用少量像素來幫助本發明的最初理解。圖6示出將初始圖像劃分為四條水平像素線{a00、a01,a02, a03}、{a10、an、a12、a13}、 {a20,a21,a22,a23}、{a3(1、a31、a32、知},每條水平線包含四個像素的常規方式。在常規情況下, 這些線將被順序存儲在例如SDRAM 312中(圖3)。為了從存儲器檢索特定像素,常規情況下,將請求并從SDRAM存儲器檢索包含該像素的水平線。常規情況下,該操作檢索該水平線中的所有像素。因此,例如,常規情況下, 檢索像素知的命令將檢索包含像素 。、a21, a22和知的第三水平線。相對地,圖7示出通過將陣列劃分為四個二乘二的子單元或塊{aQQ、a01, a10, an}、
ia02、a03、ai2、ai3J、ta20、a21、a30、a31
}、{a22 、a23、a32、a33 }來存儲陣列的改進方式。每個子單元包含四個像素,其是與圖6的方法相同的數目,但是存儲的像素的特定劃分是不同的。圖8示出作為以順時針方向旋轉90° (或π/2弧度)的圖5的初始圖像的變形或映射版本的輸出圖像。使用與上述相同的術語,圖5的陣列被稱為“初始”或“變形”陣列,而圖8的旋轉陣列被稱為“輸出陣列”。這是因為SPG產生輸出像素位置(0Χ,0Υ)用于顯示,其然后變形回初始源圖像中的相應像素位置(WX,WY)。在輸出陣列中最左上方的像素或“初始像素” 。,(ΟΧ,ΟΥ) = (0,0)是在初始圖像中具有坐標(WX,WY) = (3,0)的初始陣列中的最左下方像素;在輸出陣列中緊接在初始像素右邊的像素具有輸出坐標(0X, 0Y) = (1,0),緊接在初始陣列中最左下方像素之上,并且具有初始或變形坐標(WX,WY)= (2,0);依此類推。從初始像素(OX,0Y) = (0,0)開始,沿著最上面的水平線(0X,0Y) = (1,0), (2, 0)、(3,0)水平進行,然后移動到第二水平線(0X,0Y) = (0,1)中最左邊的像素,直到作為最右下方像素(0X,0Y) = (3,3)的最后像素的輸出坐標被呈現(render)并產生為止,從SPG 314(圖3)輸出用于顯示的像素的輸出坐標(0Χ,0Υ)。輸出圖像中的初始像素坐標(0Χ,0Υ) = (0,0)被傳遞到映射器316(圖3),其將該輸出坐標映射到初始或變形坐標(WX,WY) = (3,0) 0因此,a3(l是需要從存儲器讀取的第一像素。存儲控制器310 (圖幻從SDRAM存儲器312 (圖幻請求包含像素a3(l的特定像素塊。這是包括像素 。、a21, a30> a31的塊。從SDRAM存儲器312 (圖3)檢索整個塊并可以存
取像素ho。輸出圖像需要的下一像素具有輸出坐標(0X,0Y) = (1,0)。該輸出坐標被饋送到映射器316(圖3),該映射器316將其翻譯為變形坐標(WX,WY) = (2,0) 0這意味著需要像素 0。該像素也位于與像素 0相同的塊,其是剛剛從SDRAM存儲器312(圖3)檢索到的。 因此,該像素是立即可用的,并且不需要從SDRAM存儲器312 (圖3)檢索另一個塊來獲得像
素 a20°輸出圖像需要的下面兩個像素a1Q和aQQ不位于之前檢索到的塊中,所以必須檢索另一個塊。然而,它們均位于包含像素 %、 %、Ac^a11的塊中。因此,一旦已經檢索到該第二個塊,就可以基本上同時呈現像素a1Q和知。輸出圖像中的像素的第二水平線具有輸出坐標(0X,0Y) = (0,1) > (1,1)、(2,1)、 (3,1),并且表示ii31、a21, an,如,其也位于剛剛檢索到的兩個塊中,并且類似的過程繼續通過僅存取兩個像素塊來呈現該像素。這與當以水平線而不是塊為單位以常規方式存儲像素時執行90°順時針旋轉的常規過程相對。呈現具有輸出像素位置(0X,0Y) = (0,0), (1,0), (2,0), (3,0)的輸出圖像需要的前四個像素,即,像素 。、 。、 Q、aQQ將全部在SDRAM存儲器312(圖3)中的不同位置,因為它們全部在初始圖像中的不同水平線中(參看圖6)。因此,在可以呈現輸出圖像的第一水平線之前,需要從SDRAM存儲器312(圖幻順序檢索組成初始圖像的全部四條水平像素線。
13
然后,為了呈現輸出圖像中的第二水平線,需要從SDRAM存儲器312 (圖3)檢索像 *a31>a21, an,a01o再一次參考圖6,它們位于SDRAM存儲器312 (圖3)中的不同位置。從該示例可以看到,基于塊的處理方法使得執行90°順時針旋轉兩次與常規基于線的方法一樣快。該兩倍的增加意味著僅需要常規存儲器存取速度的一半。在經歷90°順時針旋轉的包括256個像素的十六乘十六圖像(未示出)的情況下,常規基于線的方法將需要在可以呈現輸出圖像的第一水平線之前從SDRAM存儲器 312(圖幻讀取十六個像素的全部十六條水平線(的第一像素)。總計,在完全組裝輸出圖像之前,需要存取256個存儲位置。然而,如果將初始圖像存儲為每個包括十六個像素的十六個四乘四的塊,則僅需要檢索四個像素塊(包含初始圖像的第一垂直線的像素的塊)以組裝輸出圖像的第一水平線。將需要再次檢索該同樣四個塊以組裝輸出圖像的第二水平線。總計,在完全組裝輸出圖像之前將僅需要檢索64個塊。在該示例中,意味著基于塊的方法比常規基于線的存儲方法快四倍。事實上,常規情況下,將占用十個時鐘周期來檢索十六個像素的線以僅使用來自該線的一個像素,因為 (參考圖2)占用八個時鐘周期來檢索四個DQ (在Tl與T9之間)且將需要另外兩個時鐘周期(在T9與Tll之間)來檢索另外的四個DQ,以便已經檢索等同于十六個像素的八個DQ。在基于塊的方法中,占用十個時鐘周期來檢索十六個像素的整個塊,其中將基本上同時使用其四個像素。雖然以塊為單位存儲像素的優點是塊內像素的順序讀取在水平或對角進行時與垂直進行時占用一樣長的時間,但是可以看到,在該方法中存在一定程度的低效率。這是因為對于大多數視頻處理,僅順序存取來自相同行的像素,這意味著將可能不使用十六個像素中的十二個。然而,在需要某種形式的映射的情況下,基于塊的方法相對來說更有效。上述布置300適于在具有整數坐標值的變形位置(WX,WY)處檢索單獨像素。然而,通常例如在以非尋常角度旋轉時,映射器316(圖幻將給出初始輸入圖像中的的變形坐標位置(WX,WY)的非整數值。圖9示出可用于這種情況的改進型布置900。圖9類似于圖5,但是為了簡明僅示出了布置900的存取側。除前綴“9 ”而不是“ 3 ”外,類似組件被賦予了與圖3中的附圖標記對應的附圖標記。像從圖9可以看到的那樣,SPG 914產生用于顯示和用于映射器916的輸出坐標 (0X,0Y),映射器916將輸出坐標(0X,0Y)轉換為來自輸入視頻的所需像素的初始或變形坐標(WX,WY)。然后,塊請求轉換器918將變形坐標(WX,WY)轉換為到SDRAM存儲器(圖 9中未示出)的相應庫、行和列地址。從存儲器檢索包含在那個變形位置(WX,WY)上的像素的相關塊,并由如圖3那樣的組裝器922使用,經歷檢查塊請求高速緩存920以確定是否已經請求了該塊。然而,代替存在單一移位寄存器(圖3中的3M),采用多個移位寄存器924。為允許檢索初始圖像中的非整數變形位置(WX,WY),可以使用來自初始圖像中多個相鄰整數像素位置的貢獻(contribution)以產生輸出圖像中的相應像素值。可以通過對初始圖像中每個相關相鄰像素的貢獻進行加權并將各個貢獻加在一起來產生這些貢獻。例如,如果請求初始圖像中的非整數變形坐標(WX,WY) = (0. 5,2),好像可能是當
14輸出像素位置是(0X,0Y) = (2,1)時正在將初始圖像垂直地放大二倍的情況,與來自在變形位置(WX,WY) = (2,1)處的像素的50%的貢獻相加的來自在變形位置(WX,WY) = (2, 0)處的像素的50%的貢獻可用于給出相關輸出像素值。這給出了在初始圖像中的兩個可用整數位置之間的內插像素。因此,使用圖5的術語,如果在垂直方向上將該輸入圖像放大二倍(使得輸出圖像是八乘四陣列),則在輸出圖像中在(0X,0Y) = (2,1)處的像素可以是O.SXDbJ+O.SXDOiJ,其中D(aij)是在初始圖像中的位置(i,j)處的項a的值D。因為兩個貢獻像素非常可能位于存儲器中存儲的相同像素塊中,所以不需要附加 SDRAM存取來便利該內插。事實上,使用上述示例,兩個像素如和知位于相同塊{a2Q、a3Q、 hphiK參看圖7)中,因此在存儲器中的相同位置中。常規情況下,它們存儲在不同的水平線中(參看圖6),因此在存儲器中的不同位置中。內插將需要初始圖像中的最多四個相鄰像素。例如,如果尋找諸如(WX,WY)= (2.2,6. 9)之類的非整數變形位置,則可以使用來自在(WX,WY) =2,6)、(WX,WY) = (2,7), (WX, WY) = (3,6)和(WX,WY) = (3,7)處的像素的貢獻,以及根據某種預定方案確定的各個貢獻的加權。該加權理想地可由非整數坐標位置與正在對其貢獻的初始圖像中的整數位置的鄰近度確定。因此,在該示例中,在(WX,WY) = (2,7)處的初始像素將比在(WX,WY)= (3,6)處的初始像素顯著地貢獻更多。因為將對非整數像素作貢獻的初始圖像中的整數像素是相鄰的,所以很可能它們要么全部位于相同像素塊使得對于內插不需要進一步的SDRAM存取,要么位于相鄰塊中, 該相鄰塊要么剛剛從SDRAM存儲器存取,要么正好將要存取。這減少了增大了的SDRAM活動性的可能性。為了迎合非整數位置布置,在移位寄存器擬4和用于輸出視頻926的顯示器之間提供內插器928。內插器9 確定加權因子,將來自每個貢獻像素的像素值信息D乘以其各自的加權因子,然后執行這些值的總和,以獲得最終的輸出像素值。在上述描述中,映射器316、916對于由SPG產生的每個輸出像素位置(0Χ,0Υ),產生單一變形像素位置(wx,WY)(無論是整數還是非整數位置)。然而,參考圖10,修改的映射器1016也可以布置為響應于正在由SPG產生的單一輸出像素位置(0Χ,0Υ),對于輸出圖像中的下一條或多條線產生初始圖像中的變形坐標(WX,WY)。因為從存儲器檢索到的每個像素塊包含來自初始圖像的幾條像素線(在該示例中為四條),可以基本上同時組裝多條輸出線。這是因為輸出圖像中的后續線將具有相應的初始位置(W X,W Y),其在一條輸出線與下一條之間僅略微不同,這使得很可能它們位于存儲器中的相同像素塊中。因此,如果SPG 1014產生輸出坐標(0Χ,0Υ),則映射器1016可以對于該輸出坐標 (0Χ,0Υ)產生相應的變形坐標(WX,WY),但是也可以對于表示具有相同水平輸出坐標值但是具有偏移的垂直輸出坐標值的輸出坐標的輸出坐標(0Χ,0Υ+1)、(0Χ,0Υ+2)和(0Χ,0Υ+3) 產生相應變形坐標(WX,,WY,)、(WX”,WY”)和(WX”,,WY”,),其。例如,當SPG 1014產生初始輸出坐標(0Χ,0Υ) = (0,0)時,也產生偏移輸出坐標(0Χ,0Υ+1) = (0,1), (ΟΧ, 0Υ+2) =(0,2)且(0X,0Y+3) = (0,3),以便也同時產生各自的變形坐標(OX, 0Y) = (0,0) — (WX, WY);(OX, OY+1) = (0,1) — (WXMY');(OX, 0Y+2) = (0,2) — QfiX", WY");禾口
(OX, 0Y+3) = (0,3) — (WX”,,WY”,)。在使用四乘四像素塊的示例中,可以由如圖10所示的映射器1016與相應地擴展的組裝器1022和移位寄存器IOM—起同時產生四條水平輸出線。因此,從SDRAM存儲器 (圖10中未示出)檢索到的四乘四像素的單一塊可以用于一次填充全部四條輸出線0Y, OY+1, 0Y+2, 0Y+3的像素數據。在移位寄存器IOM之后提供另外的線緩沖器1030以保證當準備輸出視頻信號時可以以正確的次序處理另外的線。該布置將大大地降低產生輸出信號或圖像所需要的SDRAM負荷。然而,這造成了增加的電路復雜性的代價,因為需要四個變形或映射引擎1016。雖然上述布置300、900和1000大大地降低了某些圖像映射的處理時間,但是組裝器322、922和1022可以由下面將描述的替代布置代替。圖11和圖12示出用于處理圖像數據的替代布置1100。輸出X,Y產生器1102以 SDRAM頻率操作以產生輸出坐標(0X,0Y),這是以從最左上方像素到緊接在其右邊的像素掃描并行進經過所有水平線直到已經產生最右下方像素的坐標為止的常規方式。盡管SPG 314、914和1014以顯示器的頻率,即輸出像素頻率操作,但輸出X,Y發生器1102以SDRAM
頻率運行。Y偏移發生器1104對于輸出圖像中預定數目的水平坐標線產生Y偏移。在該示例中,預定數目是四。因此,Y偏移發生器1104產生與四條水平線對應的Y偏移號0、1、2和 3。Y偏移發生器1104提供偏移值給從X,Y發生器1102接收單一輸出坐標(0X,0Y)的Y 偏移加法器。因此,對于從發生器1102輸出的每個輸出坐標(0X,0Y),產生另外的三個坐標(OX, 0Y+1)、(OX, 0Y+2)和(OX, 0Y+3)。來自布置1100的該部分的輸出可以是{(0,0), (0,1), (0,2), (0,3)}, {(1,0), (1,1), (1,2), (1,3)}、· · ·。這些輸出坐標掃描輸出像素從左到右的四個像素寬條,然后掃描輸出圖像包含的從水平線4到7向下的下一個條。單一映射器1108接收這些條輸出坐標(0Χ,0Υ),并產生關于初始輸入圖像中的像素位置的變形坐標(WX,WY)的相應條。因為這些變形坐標(WX, WY)由于以塊存儲的像素而共享SDRAM存儲器中的類似位置,所以非常有可能后續映射的坐標(WX,WY)處在貯存器中的相同或相鄰塊。圖13和圖14分別示出水平跨越輸出圖像的“輸出條”掃描和對角地跨越初始輸入圖像的“初始條”掃描。可以看到,當輸出視頻是初始視頻的旋轉版本時,初始像素位置 (WX,WY)掃過存取通常非常靠近之前位置的像素的像素的該組存儲的塊。因為以像素塊而不是水平線為單位存儲了初始圖像,所以需要更不頻繁地存取SDRAM存儲器,因此增大了整個處理速度。返回到圖11和圖12,一旦已經由映射器1108產生了初始坐標(WX,WY),則將其傳遞到BRC轉換器1110。BRC轉換器1110將每個初始或變形坐標(WX,WY)轉換為SDRAM 存儲器中的庫、行、列和偏移地址。換句話說,庫、行、列地址指向包含所需像素的塊位于其中的SDRAM存儲器的特定庫中的行和列位置。一旦存取了特定庫中的行和列,就可以檢索十六個像素塊用于處理。偏移值指示該特定塊中的特定像素。因此,像素的四乘四的塊的偏移值將具有在零和十五之間的值。優選地使用零和十五之間的值,而不是一和十六之間的值,因為十五可以由四位表示,而十六需要五位。
因為在SDRAM存儲器中的每個庫中可以有大量行和列,例如每個庫中8192個行和 1 個列,所以可能需要BRC值(具有偏移)非常大來唯一地識別SDRAM存儲器中存儲的獨立像素。為了克服該問題,塊請求和ID發生器1112產生用于庫、行和列值的內部ID值。 例如,這僅僅是放在一起形成六位地址的庫、行和列地址的兩個最低有效位。取決于特定情況可以使用不同數目的低位,諸如一個、三個等。這使得SDRAM存儲器中的26( = 64)個存儲位置能夠基于它們位于其中的庫及其在該特定庫中的行和列來識別。因為初始坐標(WX,WY)意在掃過四乘四存儲器塊或跨越四乘四存儲器塊掃描,所以如參考圖14討論的那樣,在出現具有相同ID的新BRC值之前,至少四個庫與四行或四列將交叉。這等同于大約64個像素,意味著ID值對于至少64個像素將是唯一有效的。然后濾除行和列請求的重復種類以減少工作量。很可能存在這些請求的重復項,因為給定變形坐標(WX,WY)的掃過特性,將從存儲器中的相同塊請求像素。新近塊請求的本地高速緩存用于檢測新塊請求。如果請求了新BRC值,則SDRAM 控制器1116從SDRAM存儲器檢索該特定塊。要注意,六位ID值不由SDRAM控制器1116使用,因為其是不由SDRAM控制器1116認作SDRAM存儲器中的地址的內部值。SDRAM控制器 1116需要完整BRC地址來使得其能夠唯一地識別存儲像素塊的SDRAM中的正確位置。僅是該示例中64個值之一的ID值用作到存儲完整BRC值的64個位置存儲器中的地址。因此, 如果檢測到具有相同ID的新BRC值,則請求仍到達SDRAM控制器以從存儲器獲得該塊。對于該特定變形位置(WX,WY)產生的ID值(與偏移值一起,在該情況下為在十六像素塊內的特定像素的零和十五之間的值)被傳遞到延遲發生器1118,以保證SDRAM控制器1116具有足夠的時間來從SDRAM存儲器檢索所需要的像素塊。同時,SDRAM控制器1116 已經存儲請求的BRC數據(在相關BRC地址處的塊中包含的數據)到64項高速緩存中。查找引擎1120使用延遲的ID值和偏移來瀏覽高速緩存1114,并在大型線緩沖器存儲器IlM中存儲檢索到的值。在該示例中,存在可以寫入信息的至少四個線緩沖器 1124。檢索到的數據值可經歷如上所述的內插。已經由位于布置1100的輸出坐標(0Χ,0Υ) 和變形坐標(WX,WY)產生部分1102、1104、1106與線緩沖器IlM之間的延遲器1122保持延遲的輸出像素坐標(0Χ,0Υ)。延遲的輸出坐標(0Χ,0Υ)用作在線緩沖器IlM中哪里存儲數據的指針。在布置1100的像素時鐘側上,以輸出像素頻率計時且對輸出位置(0Χ,0Υ)正常計數而不是增大用于條的Y偏移的另一輸出X,Y發生器IlM從線緩沖器IlM讀出像素,并發送以用于進一步的使用。像素時鐘側和SDRAM時鐘側需要部分同步,以便剛好在正在存取之前填充線緩沖器11Μ。可以使用雙緩沖器方案來保證在像素時鐘側正在存取前一線時,SDRAM時鐘側存取下一數據線。換句話說,SDRAM和像素時鐘邏輯需要同步,以便像素側輸出Χ,Υ邏輯1125 從線緩沖器11 的另一半讀取時,SDRAM側輸出Χ,Υ發生器1102寫到線緩沖器IlM的一半。然后交換線緩沖器IlM的這兩個半部分,形成單一雙緩沖器系統以避免對線緩沖器 1124的寫超越(overtake)對其的讀的情況。還可以使用塊請求器-延遲-高速緩存布置1112、1114、1118、1120(在圖11中以圖案背景標記)的多個實例來實現輸出圖像的抗混疊(anti-aliasing)或平滑。從輸出坐標(0X,0Y)的小數部分創建的數據可用于引入將合并在一起的額外變形坐標(WX,WY)。塊請求器1112將需要多對一先入先出(FIFO) 1502(參看圖15),以便僅需要單一 BRC高速緩存1504。來自SDRAM控制器1116的數據將存儲在多個高速緩存項中或具有從塊請求器 1112發送的延遲ID檢索到的數據的單一多端口存儲器中。然后,以與上述內插類似的方式使用小數值將該數據一起合并為單一像素以存儲在線緩沖器1122中。如果使用多個輸入源,則它們可以存儲在SDRAM存儲器1116中的不同位置中。可以在映射器1108之前或之后實現源映射函數以重新產生所需要的變形坐標(WX,WY)以指向存儲器1116中的不同源。在變形映射之前的源映射將允許可能通過不同的變形函數分別映射獨立窗口。在變形映射之后的源映射將允許將變形映射一次性應用于多個窗口。圖16示出了根據另一模范實施例的、用于在SDRAM中存儲數據的布置。參考圖4, 在相同SDRAM存儲器中的不同庫中存儲相鄰的4X4像素塊。然而,如圖16所示,在SDRAM 存儲器中的一個庫的相同行中存儲4X4像素的64個塊。典型地,SDRAM行由512個列地址組成,并且如前所述,每個列地址可以存儲相當于2個像素的圖像數據。因此,可以在每個SDRAM行中存儲相當于IOM個像素的信息。因為十六個像素的每個4X4塊需要8個列地址,這意味著可以在每個SDRAM行中存儲64個4X4塊。這64個塊存儲為16個像素塊的8X8陣列。這給出了 SDRAM存儲器的單一庫中的單一 SDRAM行中總共32X 32 ( = 1024) 個像素。與相同庫中的不同行相反,在SDRAM存儲器中的不同庫中存儲相鄰的32X32像素陣列,每個需要單一 SDRAM行。因為可以快速存取不同庫,所以這允許相鄰像素陣列之間的快速移動。通過以該方式存儲像素,當從SDRAM檢索像素時,相同SDRAM行在較長時間段內保持激活(例如,與圖4所示的布置相比)。這是因為更大數目的相鄰像素位于相同SDRAM行中。如前所述,因為需要更不頻繁地打開和關閉SDRAM行,所以導致了更快的處理時間。因為可以同時打開SDRAM存儲器中的所有庫,所以該貯存器布置基本上給出了等同于4,096 個單獨像素的16X16,4X4像素塊的即時存取。圖17示出了根據另一模范實施例的布置,其中使用內容可尋址存儲器(CAM)增強。CAM增強允許在像素的讀回期間使用更少的存儲器。這是因為CAM可以保存新近使用的4X4像素塊的隨機存取高速緩存。可以在高速緩存中存儲相當于整個顯示線的塊。如前所述,標準SDRAM需要存儲器地址以從其檢索數據。內容可尋址存儲器確定哪個位置存儲需要的特定數據。因為旋轉圖像變形需要從SDRAM獲得幾乎隨機地址(它們是不可預測的),所以新近塊請求1114的高速緩存(圖11)將需要與最終顯示分辨率一樣大。如果顯示寬度是2048像素,則例如在使用90°旋轉的情況下,將需要2048 X 2048像素緩存。在該實施例中,CAM存儲塊位置(例如,作為初始源圖像中左上塊的位置的(0,0), 作為其右邊的塊的位置的(1,0)等)以及4X4像素數據。當進行塊請求時,為匹配塊的特定塊位置詢問CAM。如果在CAM中不存在該塊,那么將請求發送到SDRAM以檢索該塊。否貝1J,因為CAM位置總是已知的且其也總在其中具有4X4像素數據,所以可以通過使用CAM 中的地址從CAM容易地獲得所需要的塊。在一個實現方式中,CAM如上地存儲初始塊位置,其中CAM地址成為包含該塊的 4X4像素的正常存儲器高速緩存地址(ID)。這意味著CAM可以更小,好像它存儲更少數據,這解決了復雜性和成本問題。在使用CAM時,不再從庫、行和列地址的最低2個有效位產生ID(高速緩存位置) 值,如參考圖12解釋的那樣。作為替代,其是在搜索CAM中的特定塊之后所發現的CAM位置;具有匹配BRC地址作為ID值的存儲位置。如果在CAM中任何地方都沒有發現塊位置 (庫、行、列),即,如果之前沒有檢索到具有該塊位置的塊,則使用計數器產生具有后續位置ID的新和后續CAM存儲位置,并在其中存儲請求的BRC地址。然后相同BRC的將來請求將產生該CAM地址,其形成在延遲線之后傳遞到圖11所示的4X4像素高速緩存1114的 ID。使用該方法,可以以獨立于方向或角度的方式或根據哪種變形函數讀取SDRAM存儲器。CAM記住當前塊請求而無論SDRAM位置如何。圖12所示的相關方法在矩形柵格中存儲相鄰像素的本地高速緩存,而CAM方法可以任意形狀存儲像素。作為示例,因為每個CAM位置可以存儲相當于4個像素的信息,2048 X 2048像素輸出分辨率將需要至少512個CAM位置來覆蓋整條像素線。每個CAM位置的地址可以是18 位寬O位用于庫、6位用于列而10位用于行)。因此,按位的CAM大小將是等于9216位的 512X18。雖然這可能是相對小的數字,但是其將需要FPGA中的大約10,000個以上的邏輯單元來定位所需數據。在典型FPGA上,這將占用邏輯單元的總數多達大約20,000,這可能高到不實際了。因此,該方法更適于ASIC應用,除非使用外部CAM。在涉及使用CAM的某些實施例中,消除圖11所示的多個線緩沖器1124,并且在任意一次中處理單一線(例如,而不是多線)。在上述示例中(除了 CAM方法,因為其在每條線的末端保存數據),使用單一大型多塊高速緩存。該大型多塊高速緩存包含較小的塊(典型為4X4或4X2像素大小),以便每個較小的塊可以在單一 SDRAM脈沖中存取。高速緩存僅用于其“窗口”跨越源圖像移動的圖像的相對小的部分。不基于線保存高速緩存,只要輸出掃描過一條輸出線并到下一條上,必須重新組裝高速緩存,通常具有與之前輸出線相同的數據。為提高效率,可以一次變形多條輸出線,同時由于Y偏移發生器ref而在輸出側從左到右掃描。因為從相鄰源線產生多條輸出線,所以相同高速緩存數據重新使用多于一次, 由此從相同SDRAM存取給出更多像素。對于以上示例性架構的進一步改進存在三個主要領域。首先,如果在顯示器上彼此鄰近地變形多個圖像,則對于每個源圖像需要分離的高速緩存,因為上述示例性大型高速緩存不能區分一個圖像的數據與另一圖像的數據。這意味著需要額外的高速緩存來縮放屏幕上示出的窗口數目,增加了所需要的FPGA資源。第二,需要多個線緩沖器以將一次產生的多條線分割為分離的線。這增大了 FPGA 尺寸和復雜性。第三,分割系統跨越兩個頻率,即輸出像素頻率和SDRAM頻率,這使得設計略微復
ο另夕卜,再次參考圖16,較小的4X4像素塊存儲在SDRAM中,以使得容易在一個 SDRAM脈沖中存取它們。取決于SDRAM數據寬度,這可能是4X4、4X2、2X4、2X2、8X4等。 多個較小的塊(在圖16所示的示例中為十六個)形成較大的32X32像素塊,并且這些塊全部存儲在相同SDRAM行中。這允許快速存取在任意方向上在初始或源圖像中的像素,而不需要SDRAM過于頻繁地“預充電”(關閉)和“激活”(打開)不同行。這可以導致更快的數據處理時間。相鄰的32X32塊存儲在不同SDRAM庫中,以便當回到初始圖像的像素存取跨過行邊界時,即,當尋找來自不同的較大的32X32像素塊的源像素時,SDRAM存取在其切換到新SDRAM庫時仍然保持很快。圖18示出了替代架構1800。在該替代架構1800中,高速緩存不存儲大量多塊的較小像素塊,而是代之記住新近使用的塊。每個新近使用的塊存儲在分離的塊高速緩存項中。一次僅掃描一條輸出線, 這簡化了架構。結果,不再需要線緩沖器塊。另外,除SDRAM控制器外,所有其它組件以輸出像素頻率而不是以SDRAM頻率運行。SPG 1802產生一對輸出坐標(0X,0Y)。這些掃描從左到右并且從上到下,如在所有標準視頻系統中并如上所述。由變形引擎1804變形輸出坐標(0Χ,0Υ)以產生變形坐標(WX,WY)。如上,變形坐標(WX,WY)指示初始源圖像中所需像素位置。在進行變形像素(WX,WY)計算時,由塊請求轉換器1806將它們轉換為源塊SDRAM 位置,存儲位置為塊BRC(庫、行和列)的形式。這是包括所需像素(WX,WY)的4X4像素塊的存儲位置。該塊SDRAM位置由比較器1808對照從相鄰輸出像素產生的變形坐標的SDRAM位置比較相同線上的之前像素(OX-1,0Y)與緊接在之前的線中的相鄰像素(ox-i,0Y-1), (OX, 0Y-1)和(0Χ+1,0Υ-1)。這些是從將在以下詳細描述的線延遲獲得的。因為當前SDRAM位置正在與對應于在輸出屏幕上僅離一個像素的輸出像素位置 (ΟΧ,ΟΥ)的其它SDRAM位置比較,所以非常可能存在匹配。換句話說,這意味著當前尋找的像素可能在已經從SDRAM檢索到的像素塊中找到。結果,系統將不需要再次從SDRAM請求該數據,因為新近剛剛檢索了該數據。如果發現BRC匹配,則復制該之前匹配塊的ID并傳遞到線延遲器1810。如果沒有發現匹配,則使用下一可用ID號并傳遞到線延遲器1810。將請求發送到SDRAM控制器1812以從SDRAM檢索所需要的像素塊,并在那個位置(ID)上將其存儲在像素塊高速緩存1814中。將ID和當前變形位置(WX,WY)傳遞到線延遲器1810中的目的是雙重的。首先, 其向SDRAM控制器1812提供充足的時間來檢索所需要的像素塊。第二,其允許在之前步驟中提到的比較,其中將與變形位置(WX,WY)對應的BRC與來自之前輸出線中的BRC對照。然后將來自線延遲器1810的輸出反饋到上述塊比較器1808中,以便其可以在變形下一條輸出像素線時用于比較。該輸出還用于使用ID值從塊高速緩存檢索當前需要的像素。使用ID值并基于來自(WX,WY)值的低位從塊高速緩存1814檢索正確的像素。然后,將其輸出到顯示器。在該示例中,僅當確實需要時才發生SDRAM存取。在典型變形或旋轉圖像中,在輸出圖像(0Χ,0Υ)中相鄰源像素(WX,WY)仍彼此接近,因此可能處于SDRAM存儲器中存儲的相同像素塊中。上述比較或“相鄰”檢查保證在像素塊高速緩存中從SDRAM檢索到的任意之前塊盡可能多地重新使用。圖19示出在正在重新使用的像素塊高速緩存中存儲的像素塊的示例。圖19中的箭頭指示初始源圖像中的像素的掃描路徑。箭頭具有小的角度,并且對于每條輸出線向下遞增一條線。如預期的那樣,第一輸出線需要從SDRAM存儲器自身存取所有需要的像素塊,因為像素塊高速緩存將為空并且在線延遲中將沒有變形位置(wx,WY)。然而,每個后續輸出線需要從SDRAM檢索更少的塊,因為箭頭跨過已經在之前線中使用了的相同塊。事實上,對于該示例中的第二、第三和第四輸出線,僅從SDRAM檢索一個新塊,而從其尋找像素的其它五個像素塊已經存儲在像素塊高速緩存中。上述塊高速緩存應該大到足以保存僅多于一條線的視頻數據。這是由于在一條輸出線所需要的塊用在下一條輸出線上的情況下,需要將一條輸出線所需要的塊準備好。例如,對于1920X1080輸出分辨率,非旋轉的映射將需要能夠存儲近似512個 4X4塊的像素塊高速緩存。這是因為4X512 = 2048,這足以覆蓋水平輸出線中的1920個像素。對于90度旋轉,因為僅水平跨越顯示器輸出1080個像素,所以需要較小數目的塊。對于45度旋轉,可能需要更多塊來顯示一條水平輸出線,原因是因為1920X1080 三角的斜邊是2202像素,所以跨越顯示器輸出的對角像素的數目可能更高。數據高速緩存通常直接實現。然而,在該情況下,ID發生器需要跟蹤哪個ID可用和哪個當前正在使用因而不可用。在該實現中,ID對應于像素塊高速緩存地址,即,高速緩存的像素塊存儲在哪里。在一整個幀上,某些像素塊相比其它更多地重新使用。特別是具有奇特變形的情況,甚至是具有某些旋轉的情況。因此,ID發生器不能簡單地依次發布ID 號,然后一旦已經分配了最大ID值就再次卷繞(wrap around)到開始(例如,0到511,0到 511,等等)。要么像素塊高速緩存必須大到足以處理可以跨越很多條線(甚至可能整個圖像) 伸展的、ID得到重復使用的最大次數,要么其需要知道哪個ID可以重新使用而哪個不能。因此,塊高速緩存必須足夠智能以知道不重寫使用中的塊高速緩存(ID)項(即, 當前輸出線所需要的),并重新使用不再需要的塊高速緩存(ID)項(即,用于輸出之前線, 但是不用于當前輸出線)。在FPGA中實現此相對困難。圖20示出借助其可以在FPGA中實現該智能的一個布置。在存儲器中存儲ID列表2000。該ID列表對于高速緩存的每個像素塊具有一個位置,對應于存儲器地址。該ID列表理想地在每個幀的頂部復位,以在512-塊高速緩存,即, 具有512個存儲位置的高速緩存的情況下順序列出所有ID (0,1,2,3,4,...,510,511)。創建讀指針2002和寫指針2004,都從0開始。讀指針指向可以使用的下一可用 ID值。寫指針指向寫回任意釋放(freed-up)或回收的ID值的地方。當需要新ID值時,因為讀指針指向可以使用的下一可用ID值,所以根據讀指針讀取。對于第一輸出線,因為下一可用ID值可使用,所以讀指針按一遞增。然后,讀指針準備好從ID列表輸出下一可用ID值。因為第一線輸出需要從SDRAM檢索新數據,所以讀指針現在將指在相當大的值。例如,在1920X1080輸出分辨率的情況下,其可以指在數目CN 102460503 A說明書19/21 頁
480。這是因為可能已經請求了 480個4-像素寬塊,每個具有其自己的唯一 ID值。在這時, 指向寫回任意釋放或回收的ID值的地方的寫指針仍然是0,因為還沒有釋放或回收ID值。當正在計算來自第二輸出線的像素時,雖然沒有由第一輸出線使用的某些ID仍然可用,但某些將具有匹配來自第一輸出線的SDRAM塊位置的SDRAM塊位置。在發現重新使用第一條線的ID值的情況下,因為ID仍在循環中,所以不進行對ID 列表的改變。然而,在發現不重新使用第一條線的ID值的情況下,將ID值在寫指針位置處寫回到ID列表中,并遞增寫指針。這將該ID拉出循環并將其放回準備將來使用的ID列表中。因此,來自在第二條線上不重新使用的第一條線的任意ID值將寫回到ID列表中。 ID值通常以將其讀出的相同順序寫回到ID列表中,雖然這取決于涉及的變形或旋轉。該處理對于每個后續輸出線繼續,其中ID列表具有正在從其讀出的下一可用ID值,并且讀指針遞增,在與寫回任意不使用的ID相同的時間,寫指針遞增。這保證了無論多頻繁地重新使用特定ID,都不會重寫,因為頻繁重新使用的ID不寫回ID列表。作為替代,其保留在一線延遲的循環中,直到不再需要為止,在這時才寫回到 ID列表中。在某些變形的情況下,可能關于從上到下的每個輸出線使用一個ID值。(可用ID)的ID列表加上一線延遲中“在循環”的ID在被組合時,應該總是給出沒有重復或省略的完整ID列表。用于創建并保持該列表的邏輯必須保證一旦在像素號N 中已經重新使用ID,其也可用于像素N+l、N+2、N+3等的重新使用,但是僅在它們都不預先需要不同ID,S卩,來自ID列表中的新ID,或來自之前線的不同ID的情況下。例如,假定第一像素線使用下列ID 線1 :00001111222...且下一條線嘗試重新使用其如下,其中‘50’是新ID的請求線20000150501222...可以看到,ID#1已經由新ID請求分割。一旦產生下面的線,其可以是線3000050505050222...在來自線2的兩個ID#1都被放回ID列表的情況下,這樣形成在ID列表中的副本并引起最終圖像的損壞。針對其的解決方案是僅允許繼續使用來自之前線的ID。所以,代替上述,出現下列線100001111222...線200001505051222...線3000050505050222...已經防止了 ID “1”的第二次使用,因為在其使用中存在中斷。因此,因為其不能重新使用,所以代之以產生新ID 51,并這引起來自SDRAM的相同像素塊的更新請求。換句話說,在ID 1和51中保存相同像素塊。這種輕微無效只有很少發生,并且是防止ID列表損壞需要的。圖21示出雙線性內插。雙線性內插用于將非整數源像素位置(WX,WY)轉化為一組整數源像素位置值和乘法值。該思想熟知為基于其周圍像素內插居間像素值應該是的值方式。
圖21中的實心圓圈指示具有在SDRAM存儲器中出現的已知值的整數像素坐標。空心圓圈指示非整數像素位置(wx,WY) = (fx, fy),基于周圍整數像素的值的加權貢獻來確定其值。可以使用簡單的熟知計算來產生該非整數像素值D (fx, fy) =P (0,0)* (1-fx) * (1-fy) +P (1,0) *fx* (1-fy) +P (0,1) * (1-fx) *fy+P (1, l)*fx*fy因此,在其中(WX, WY) = (fx, fy) = (0. 25,0. 5)的所示示例中,非整數像素的值 D可以由下式求得D(0. 25,0. 5) = P (0, 0)氺(1_0· 25)氺(1_0· 5)+P (1, 0)氺 0· 25 氺(1_0· 5)+P (0, 1)*(1-0. 25)*0. 5+Ρ(1,1)*0. 25*0. 5 = Ρ(0,0)*0. 375+Ρ(1,0)*0. 125+Ρ(0,1)*0. 375+Ρ(1, 1)*0· 125為執行雙線性內插,需要同時存取四個相鄰像素。從上述可以回憶起可以通過使用雙線性內插來處理非整數變形坐標(WX,WY)。圖 22示出通過將像素塊高速緩存分割為可以同時從其讀取的多個部分來使用像素高速緩存實現的一個可能方式。如圖22所示,在像素塊高速緩存中存儲數據,以使得在四個不同的高速緩存區域(0,1,2,;3)之一中存儲相鄰像素。在圖22中,示出四個不同的4X4像素塊,每個包含十六個像素。四個不同的存儲器區域用于存儲像素,像素上示出的數字指示其存儲在其中的區域。以該方式,存儲器區域 0映射到偶數WX和偶數WY坐標(例如(0,0)),存儲器區域1映射到奇數WX和偶數WY坐標(例如(1,0)),存儲器區域2映射到偶數WX和奇數WY坐標(例如(0,1)),而存儲器區域3映射到奇數WX和奇數WY坐標(例如(l,l))o每個4X4像素塊仍具有分配給其的相同ID值,好像是僅存在單一高速緩存區域那樣分配。然而,每個4X4塊中的十六個像素跨越四個不同存儲器存儲區(0,1,2,;3)散布。 這使得能夠同時存取任意四個相鄰像素(其每一個來自存儲器0,1,2或3中的每個)。即使所需要的像素是圖22中所示的中心四個像素(跨越4個不同的4X4塊和ID 值),相同4個存儲器區域仍提供上述優點,但是因為四個中心像素處于不同的4X4像素塊和高速緩存位置,所以每個接收不同ID值。圖23示出數據處理架構2300怎樣適于以該方式允許雙線性內插。由轉換器2302將非整數(WX,WY)值轉換為所需要的四個相鄰整數坐標以允許雙線性內插。轉換這些整數坐標中的每個以識別整數坐標值位于其中的像素塊的SDRAM位置 (庫、行和列)。由比較器將這些BRC值對照四個BRC值的之前輸出像素集以及用于上述輸出線中的三個相鄰像素的四個BRC值集比較。如果發現匹配,即,如果已經請求了 BRC值,則重新使用相應ID。如果未發現匹配,即,如果沒有請求BRC,則四個ID列表之一產生所需要的下一 ID,并且相應地進行SDRAM請求以從其存儲器得到相關的像素塊。如在雙線性內插電路的4個所需像素跨越4個塊之間的邊界的情況中那樣,將每個ID列表分配給不同的塊模式,以使得可以一次存取多達4個不同塊。將四個ID和變形(WX,WY)坐標饋送到一線延遲器2306。將這些值反饋到比較器用于在處理后續輸出線時比較,并傳遞到高速緩存讀部分以從它們各自的高速緩存存儲器區域(0,1,2,;3)檢索所需要的四個整數坐標像素。然后,可以由內插器2308使用四個整數像素值來執行雙線性內插以產生最終內插單一像素。 雖然已經參考幾個特定模范實施例描述了本發明的某些方面,但本領域技術人員將認識到,可以對其進行很多改變,而不脫離本發明的精神和范圍。例如,可以結合多種不同方法實現各種電路、存儲器和相關組件,這寫方法可能涉及計算機、可編程電路、包含使得計算機在運行時執行步驟的指令的處理器可讀介質和其它中的一個或多個。本發明的各方面在以下權利要求中提出。
權利要求
1.一種用于顯示源圖像的變形版本的設備,包括線存儲器,布置為將源圖像劃分為來自源圖像的多個像素行; 塊貯存控制器,布置為將像素行組合為像素塊,每個像素塊包括來自源圖像的相鄰水平和垂直像素,其中每個像素塊存儲在存儲器中的順序存儲位置上;輸出坐標發生器,布置為產生與顯示器上的輸出像素位置對應的輸出坐標(0Χ,0Υ); 變形引擎,布置為將輸出坐標(0Χ,0Υ)映射到變形坐標(WX,WY),變形坐標對應于源圖像中的像素位置;塊請求轉換器,布置為識別包含具有變形坐標(wx,WY)的像素的像素塊存儲在其中的存儲位置;塊請求發生器,布置為請求識別出的像素塊; 存儲控制器,布置為從存儲器檢索所請求的像素塊;和顯示控制器,布置為在相應輸出像素位置(0Χ,0Υ)上輸出具有變形坐標(WX,WY)的像素的值用于顯示。
2.如權利要求1所述的設備,其中所述存儲器包括SDRAM,其中跨越SDRAM中的順序列存儲每個像素塊,并且其中所述塊請求轉換器布置為識別在其中存儲所需像素塊的庫、行和列地址。
3.如權利要求2所述的設備,其中所述源圖像的相鄰像素塊被一起聚合為較大的像素塊,并且每個較大的像素塊存儲在相同SDRAM行中。
4.如任意之前權利要求所述的設備,進一步包括垂直偏移發生器引擎,布置為 接收由輸出坐標發生器產生的輸出坐標(0X,0Y),并產生多個偏移輸出坐標((0X,0Y+1),(OX, 0Y+2)...),每個偏移輸出坐標從非偏移輸出坐標(0X,0Y)垂直偏移;和將輸出坐標((OX, 0Y),(OX, 0Y+1),(OX, 0Y+2). . ·)提供到所述變形引擎。
5.如任意之前權利要求所述的設備,進一步包括移位寄存器布置,布置為存儲多個變形坐標(wx,WY)項,每個變形坐標項具有用于其各自數據值⑶的字段;和組裝器,布置為將移位寄存器布置中的變形坐標與任意檢索到的像素塊中的像素的變形坐標比較,在肯定比較時完成用于匹配的變形像素的數據值(D)的字段。
6.如任意之前權利要求所述的設備,進一步包括ID發生器,布置為從塊請求轉換器接收識別出的存儲位置,并從識別出的存儲位置產生內部像素塊ID;ID延遲線,布置為從ID發生器接收并延遲像素塊ID ;和查找引擎,布置為從延遲線接收像素塊ID,并從高速緩存檢索具有匹配像素塊ID的像素塊。
7.如權利要求6所述的設備,進一步包括ID列表,布置為存儲未使用的像素塊ID的列表;讀指針,布置為指向能夠使用的下一可用塊ID值;和寫指針,布置為指向回收塊ID。
8.如權利要求6或7所述的設備,進一步包括塊ID比較器,布置為從所述塊請求轉換器接收識別出的存儲位置,將它們與新近識別出的塊的存儲位置比較,并且如果發現匹配, 則重新使用具有匹配存儲位置的像素塊的塊ID,而如果未發現匹配,則使用用于識別出的像素塊的新塊ID。
9.如任意之前權利要求所述的設備,進一步包括塊請求高速緩存,布置為存儲新近像素塊檢索請求,由此所述存儲控制器布置為如果剛剛從存儲器請求或檢索了請求的像素塊則不檢索該請求的像素塊。
10.如任意之前權利要求所述的設備,其中所述存儲控制器布置為在高速緩存中存儲檢索到的像素塊。
11.如權利要求10所述的設備,其中,所述存儲控制器布置為在高速緩存的不同區域中存儲像素塊中的相鄰像素。
12.如權利要求10或11所述的設備,其中所述高速緩存包括內容可尋址存儲器。
13.如任意之前權利要求所述的設備,其中所述輸出坐標發生器包括同步脈沖發生器, 布置為以輸出像素頻率產生輸出坐標。
14.如任意之前權利要求所述的設備,包括內插器,布置為當所述變形引擎將輸出坐標(0X,0Y)映射到非整數變形坐標(WX,WY) 時執行雙線性內插,并且其中塊請求轉換器布置為識別所述源圖像中對非整數變形像素坐標(WX,WY)作貢獻的像素的變形坐標(wx,WY),并識別在其中存儲包含貢獻像素的像素塊的存儲位置; 所述塊請求發生器布置為請求識別出的像素塊; 所述存儲控制器布置為從存儲器檢索所請求的像素塊;所述內插器布置為確定與非整數變形坐標(WX,WY)對應的輸出像素(0Χ,0Υ)的內插輸出值;和所述顯示控制器布置為在相應輸出像素位置(0Χ,0Υ)上輸出內插值用于顯示。
15.一種用于顯示源圖像的變形版本的方法,所述方法包括 將源圖像劃分為來自源圖像的多個像素行;將像素行組合為像素塊,每個像素塊包括來自源圖像的相鄰水平和垂直像素,其中在存儲器中的順序存儲位置上存儲每個像素塊;產生與顯示器上的輸出像素位置對應的輸出坐標(0Χ,0Υ);將輸出坐標(οχ,0Υ)映射到變形坐標(WX,WY),所述變形坐標對應于源圖像中的像素位置;識別包含具有變形坐標(WX,WY)的像素的像素塊存儲在其中的存儲位置; 請求識別出的像素塊; 從存儲器檢索所請求的像素塊;和在相應輸出像素位置(0Χ,0Υ)上輸出具有變形坐標(WX,WY)的像素的值用于顯示。
16.一種包含在運行時使得數據處理設備執行如任意之前權利要求所述的方法的指令的計算機程序,包含該計算機程序的計算機可讀介質或攜帶該計算機程序的信號。
17.一種基本上在這里參考圖3、4、7、9到20、22和23描述的設備或方法。
全文摘要
處理輸入視頻數據。根據模范實施例,根據組成視頻的相應圖像的像素塊存儲以像素行呈現的視頻數據。當從存儲器讀取特定像素時,檢索(例如,以單純讀)像素塊,便于(同時)對相鄰行或列中的像素的存取,而不需要存取全部行和列。
文檔編號G06T3/60GK102460503SQ201080028663
公開日2012年5月16日 申請日期2010年6月4日 優先權日2009年6月25日
發明者R.P.D.馬利特 申請人:Tv One有限公司