TWI430655B - 一種顯示原圖扭曲版本之裝置及方法 - Google Patents
一種顯示原圖扭曲版本之裝置及方法 Download PDFInfo
- Publication number
- TWI430655B TWI430655B TW099118609A TW99118609A TWI430655B TW I430655 B TWI430655 B TW I430655B TW 099118609 A TW099118609 A TW 099118609A TW 99118609 A TW99118609 A TW 99118609A TW I430655 B TWI430655 B TW I430655B
- Authority
- TW
- Taiwan
- Prior art keywords
- pixel
- block
- output
- memory
- pixels
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 40
- 230000015654 memory Effects 0.000 claims description 200
- 238000012545 processing Methods 0.000 claims description 48
- 238000003780 insertion Methods 0.000 claims description 15
- 230000037431 insertion Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 239000000872 buffer Substances 0.000 description 29
- 238000013507 mapping Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 230000001934 delay Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 239000007853 buffer solution Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0051—Embedding of the watermark in the spatial domain
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0061—Embedding of the watermark in each block of the image, e.g. segmented watermarking
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
- Transforming Electric Information Into Light Information (AREA)
Description
本發明有關於顯示原圖扭曲版本之裝置及方法。
電腦或專門的視頻處理硬體所要處理的視頻可被想成是一連串個別的靜止圖像。各圖像由許多像素所形成,其一般以長方形陣列之矩陣來處理。圖像中任何給定像素之座標的決定,係確認其在影像中那一條水平線(或列)及那一條垂直線(或行)上。
大部份視頻定標器,係以圖像之個別像素到來之順序,將進來的視頻信號儲存入記憶體中。因此,組成視頻之第一個圖像的最上列全部被儲存時,係由最左像素移到最右像素。然後這些像素以一單位被儲存在記憶體中。依此步驟重複第二例,等等,直到儲存完此圖像的所有像素。並重複此步驟來儲存組成視頻的所有圖像。
同步動態隨機存取記憶體(SDRAM)晶片特別適合於依此方法來儲存視頻資料。在SDRAM中,資料被儲存於排組,列及行中。想像SDRAM晶片之排列的一個方法是,將SDRAM記憶體中的各排組看做是一個大的櫃子,櫃子內有很多的列與行的抽屜。各抽屜儲存一定量的資料,而且,可以指定位於那一個特定的櫃子中那一個特定的列與行來確認這些資料。
為了避免SDRAM位址所用的列與行與組成圖像的列與行之間的混用,本文分別以〝水平線〞及〝垂直線〞來稱呼圖像的列與行。
在一實施例中,各像素含有24位元之資料。此意謂各像素可表示224
=16777216個彩色值之一。一48位元寬之資料匯流排可儲存48位元,其等於二個像素的資料,因為各像素長24位元。此二像素之資料通常被稱為一〝資料字〞,雙資料速率同步動態隨機存取記憶體(DDR2 SDRAM)晶片每個時鐘周期可傳輸二個資料字。此意謂每個時鐘周期可儲存四個像素的資料,因此,儲存16個像素,等於八個資料字,需花費四個時鐘周期。
圖1係取自Micro 256 Mb DDR2資料單的定時圖,其可由微科技公司(Micro Technology Inc)取得,該公司之總部設於80002,Federal way,P.O. Box6,Boise,IO83707-006,USA,它們的網址是:http://download.micron.com/pdf/datasheets/dram/ddr2/256MbDDR2.pdf.
圖1顯示一般DDR2 SDRAM中連續行的存取。連續行的存取意謂存取SDRAM記憶體中特定列的任何行。在時間T0時,發出一讀取指令,由SDRAM記憶體之特定排組之特定列中讀取行n。在較後時間,T2時,發出另一讀取指令,讀取相同排組與列中之不同的行6。在時間T3時,行n中所有資料均回返。如圖1之所示,在資料由行n回返之前,在T0與T3之間有3個時鐘周期的延遲。這些讀取SDRAM的每一個指令,均會在二個時鐘周期內,由SDRAM相關的行中取得四個資料字或〝DQs〞。因此,二個時鐘的資料轉移可取得四個DQs,其等於八個像素的圖像資料。
在第一次四個DQs真正被取得之前,於T2時,第二個讀取指令被發出,此被稱為〝管道輸送〞以確保縱使在讀取指令沒有繼續被發出時,由列存取的資料流也不會間斷。
從時間T3開始,每一時鐘周期可取得二個資料字,此意謂一旦列打開時,則由相同列之不同行讀取二個資料字,需花費一個時鐘周期。
圖2係由相同的Micro 256 Micro 256Mb DDR2資料單取得的定時圖。圖2顯示在一般DDR2 SDRAM中連續列的存取。圖2不同於圖1,其並非連續存取相同列中不同的行,而是連續存取不同的列。例如,90°旋轉時需要連續列的存取。
在時間T1時,發出ACT(〝ACTivate〞)指令,其可活化要被存取的第一列,此處是列A。然後,在時間T4時發出讀取指令,由列A讀取所要的行,行n。若要由不同的列讀取資料,無論其是否來自對應的行,列A首先必需被〝先充滿〞或關閉。在時間T6時發出PRE指令,在三個時鐘周期(Trp)之後,列A被關閉,且在時間T9時,可發出另一個ACT指令。
對照連續讀取一列中連續的行,由不同列連續讀取要花費八個時鐘周期,因為在下一列可被讀取之前,各列必需被打開及關閉。總之,讀取連續的列比讀取同列中連續的行其速度慢了八倍。在某些資料處理裝置中,特別是圖像處理裝置,處理資料時常需要連續列的存取,使得資料處理時間變長且要密集使用系統資源。圖像的扭曲需要隨機的列的存取,使輸入圖像被映射成非長方形之形狀。視頻資料存取的這些及其它特性對視頻資料的處理與使用是一種挑戰。
本發明以許多實施及應用之例子來加以說明,其中一些被概述如下。
本發明之各種不同的實施例要對付前面所討論的問題,且特別適合處理視頻或圖像資料之其它問題。在各種不同之實施例中,本發明欲對付在資料處理時,因需要對列連續存取而所造成的過度負荷。
依據本發明的第一方面,提供一裝置,用來顯示原圖像的扭曲版本,該裝置包括:列記憶體,用來將原圖像分割成複數個像素列別;塊儲存控制器,用來將像素列組合成像素塊,各像素塊含有來自原圖像中鄰接的水平及垂直線上的像素,其中,各像素塊被儲存在記憶體之連續的記憶位置上;輸出座標產生器,用來產生對應顯示器上輸出像素位置的輸出座標(OX,OY);扭曲引擎,用來將輸出座標(OX,OY)映射到扭曲座標(WX,WY),該扭曲座標對應到原圖像中的像素位置;塊要求轉換器,用來確認像素塊儲存在哪一個記憶位置,該像素塊含有具有扭曲座標(WX,WY)之像素;塊要求產生器,用來要求經確認的像素塊;記憶體控制器,用來由記憶體取得被要求的像素塊;及,顯示控制器,用來將具有扭曲座標(WY,WY)之像素值輸出到對應的輸出像素位置(OX,OY)上以供顯示。
裝置將陣列分割成塊而使處理更有效率。在需要資料之映射或轉換之情形下,其特別有用。名詞〝塊〞此處被用來表示任何群組或次單位的鄰接像素,這些像素位於輸入圖像中鄰接的水平及垂直線上,此不同於均位在相同的水平線或垂直線上之像素。例如,塊可能是一長方形陣列,或是簡單的L形,而也有可能是其它形狀的塊。
記憶體可包括SDRAM,各像素可被儲存在跨越在SDRAM之連續的行中,而塊要求轉換器則用來確認被要求之像素塊儲存其中的排組,列及行的位址。SDRAM之存取一般需要連續列的存取以便映射輸入圖像。當輸入圖像之像素被儲存在塊中時,就可減少對SDRAM存取的次數。
原圖像中鄰接的像素塊可被組合成較大的像素塊,其仍然位於單一列中,而且,各較大的像素塊可被儲存在相同的SDRAM之列中。依此方式***的排組可以使較大像素塊中之像素能夠被快速地存取。
裝置可包含垂直偏移產生器,用來接收輸出座標產生器所產生的輸出座標(OX,OY),並產生複數個偏移輸出座標((OX,OY+1),(OX,OY+2)...),各偏移輸出座標在垂直方向上由非偏移輸出座標(OX,OY)偏移,且將輸出座標((OX,OY),(OX,OY+1),(OX,OY+2)...)提供給扭曲引擎。依此方式可產生多列的扭曲座標。
裝置可另包含移位暫存器,用來儲存複數個扭曲座標(WX,WY)項,各扭曲座標項有其各自資料值(D)的欄位;及,配置器;用來對移位暫存器中之扭曲座標與被取得之像素塊中像素的扭曲座標做比較,若比較結果是肯定的,則完成相符的扭曲像素資料值(D)的欄位。該移位暫存器會使由記憶體中取得所要像素值時產生延遲。
裝置可另包含ID產生器,其可接收來自塊要求轉換器之經確認的記憶位置,並由經確認的記憶位置來產生內部的像素塊IDs;ID延遲列,用來接收並延遲來自ID產生器的像素塊;以及,查詢引擎,用來接收來自延遲列之像素塊IDs,並由貯存器取得具有相符的像素塊IDs之像素塊。ID產生器提供一方便之工具,用來確認特定的像素塊,ID延遲列會使由記憶體取得像素資料時產生延遲。
裝置可另包含:ID表,用來儲存不在使用中的像素塊IDs;讀指示器;用來指示下一個可被用到的塊ID值;及,寫指示器,用來指示再循環的ID,ID表可被用來確保正確的IDs被分配到正確的像素塊上。
裝置可另包含塊ID比較器,用來接收來自塊要求轉換器之經確認的記憶位置,並將它們與新近經確認的塊的記憶位置做比較,若發現相符合,則再使用具有相符的記憶位置的像素塊的ID,若發現不符合,則經確認的像素塊要使用新的塊ID。塊ID比較器負責處理塊IDs之使用,可簡化裝置之操作。
裝置可另包含塊要求貯存器,用來儲存新近的像素塊擷取之要求,因此,在像素塊剛被要求或剛由記憶體取得時,記憶體控制器就不會擷取被要求的像素塊。依此方式可儘量減少不必要的記憶體之存取。
記憶體控制器可被用來將取得之像素塊儲存在貯存器中。依此方式可儘量減少不必要的記憶體之存取。
記憶體控制器可被用來將像素塊中鄰接的像素儲存在貯存器不同的區域內。此有助於雙線性***。
貯存器可包括內容-可定址記憶體。其可使得在讀回像素時使用到較少的記憶體。
輸出座標產生器可包含同步脈衝產生器,用來以輸出像素之頻率產生輸出座標。
裝置可另包含:***器,用來在扭曲引擎將輸出座標(OX,OY)映射到非整數扭曲座標(WX,WY)時執行雙線性***;塊要求轉換器,用來確認原圖像中之像素的扭曲座標(WX,WY),這些像素的扭曲座標對非整數扭曲像素座標(WX,WY)有貢獻,並且確認含有貢獻像素之像素塊儲存其中的記憶位置;塊要求產生器;用來要求經確認的像素塊;記憶體控制器,用來由記憶體取得被要求的像素塊;***器,用來決定輸出像素(OX,OY)之***輸出值,該輸出像素對應於非整數扭曲座標(WX,WY);以及,顯示控制器,用來將***值輸出到對應的輸出像素位置(OX,OY)上以供顯示。此可使雙線性***提供更精確的輸出的。
依據本發明的第二方面,提供一方法,用來顯示原圖像之扭曲版本,該方法包括:將原圖像分割成複數個像素列;將像素列組合成像素塊,各像素塊含有來自原圖像的鄰接的水平像素及垂直像素;將各像素塊儲存在記憶體之相繼的記憶位置上;產生對應於顯示器上輸出像素位置的輸出座標(OX,OY);將輸出座標(OX,OY)映射到扭曲座標(WX,WY),該扭曲座標對應到原圖像中的像素位置;確認含有扭曲座標(WX,WY)之像素的像素塊儲存於其中的記憶位置;要求經確認的像素塊;由記憶體取得被要求的像素塊;以及,將具有扭曲座標(WX,WY)之像素值輸出到對應的輸出像素位置(OX,OY)上以供顯示。
依據本發明之其它方面,提供含有指令之電腦程式,當其被執行時,可使資料處理裝置實施這樣的一種方法;並提供含有電腦程式之電腦-可讀的媒體或攜有電腦程式之信號。
有關一實施例,處理資料之裝置包括一接收器電路,一記憶控制器電路,及一配置器電路。該接收器電路接收資料元素陣列之資料,該資料元素位於水平線及垂直線上。該記憶體控制器電路將次單位陣列儲存(例如,藉控制記憶體)在記憶位置上,該次單位陣列含有來自陣列中鄰接的水平及垂直線上的資料元素。該配置器電路由記憶位置取出次單位以供處理。這些個別的電路可像程式化之電腦般執行所要之功能,下面之例子可做為其應用而被實施。
有關於另一實施例,處理視頻資料之裝置包括一接收器電路,複數個列緩衝器電路,一記憶體控制器電路,及一配置電路。該接收器電路接收像素陣列之視頻資料,該像素陣列以水平及垂直線排列,且代表一圖像。該列緩衝器分別持留被接收陣列中不同線上的像素。該記憶體控制器電路將陣列之次塊儲存在單一記憶位置上,陣列之次塊含有來自至少二個列緩衝器之次集合的像素,各次集合像素含有少於各列全部之像素,各塊之像素表示圖像的次部份。該配置器電路由記憶體位置取得次塊以供處理。
另一實施例係針對可程式電腦實施的一個方法,執行指令時,可使可程式電腦執行下面之步驟:接收資料元素陣列,該資料元素位於水平線及垂直線上;將陣列之次單元儲存在一記憶位置上,該陣列之次單位含有來自陣列鄰接中的水平線及垂直線上的次集合資料元素;以及,由記憶位置取得次單位以供處理。
依據本發明另一實施例,用來處理資料之裝置包括:一接收器,用來接收資料元素陣列,該資料元素位於水平線及垂直線上;一記憶體控制器,用來將陣列之次單位儲存在一記憶位置上,該陣列之次單位含有陣列中鄰接的水平線及垂直線上的資料元素;以及,─配置器,用來由記憶位置取得次單位以供處理。
裝置之處理會更有效率,其係將陣列分割成次單位,該次單位含有來自陣列中鄰接的水平線及垂直線上的資料元素,而非僅一水平線上之資料元素。此尤其可應用到資料需要映射或轉換之情況。
裝置可包括一向下定標器,其用來減少接收器所接收之陣列中資料元素的數目。該向下定標器可被用來減少處理資料所需的費用,例如,在一些資料元素實際上不需要被處理時。
裝置可包括複數個列緩衝器,用來持留陣列中不同的水平線上的資料元素。
裝置可包括一儲存控制器,用來使記憶體控制器儲存來自不同水平線上的資料元素,這些不同水平線上的資料元素來自二個或更多的列緩衝器,其係同一記憶位置中的次單位。
裝置可包括一輸出座標產生器,用來產生輸出座標。該輸出座標產生器可以是一個同步脈衝產生器。
裝置可包括一映射器,用來將輸出座標轉換成所需資料元素之原始資料座標,該所需資料元素係儲存於記憶體中且貢獻資料給對應的輸出座標。該映射器可使用轉換用之查詢表。當數學變換不容易或不可能時,查詢表特別有用,另可選擇,映射器也可使用數學變換來轉換。
裝置可包括一轉換器,用來接收所要資料元素之原始資料座標,並決定次單位之資料元素儲存在記憶體中的位置,該記憶體位置含有所要的資料元素。
裝置可包括一貯存器,用來貯存新近被要求之次單位的記憶位置。
裝置可包括一移位暫存器,用來儲存所要資料元素的原始資料座標,所要的資料元素具有對應的資料值。
裝置可包括一配置器,用來使取自記憶體之資料元素次單位填入資料值,其係利用持留在移位暫存器中之原始資料座標與取得的次單位中的原始資料座標間的匹配來達成。
裝置可包括複數個移位暫存器及一***器,藉此,在原始資料座標是非整數值座標時,配置器被用來取得具有整數值原始資料座標之鄰接的資料元素的資料值;而,***器被用來提供含有權重貢獻的輸出,這些權重貢獻來自每一個被取得的整數原始資料座標的資料值。此提供用於複雜的映射或資料的扭曲,例如,在非整數值座標是合適時。
取代包括同步脈衝產生器之輸出座標產生器,其可包括一記憶邊輸出資料座標產生器,用來以記憶體頻率產生一組輸出資料座標,及一顯示邊輸出座標產生器,用來以顯示頻率產生輸出顯示座標。
裝置可包括一偏移設備,用來接收來自記憶邊輸出資料座標產生器之輸出資料座標,並產生一組額外的輸出資料座標,該組額外的輸出資料座標對應於另一列的輸出資料座標。
裝置可包括一映射器,用來接收該組及額外組的輸出資料座標,並將它們轉換成原始資料座標。
裝置可包括一轉換器,用來接收原始資料座標,並將它們轉換成記憶體中之位址,該位址指出記憶位置,含有原始資料座標處之資料元素的次單位或單位位於該記憶位置。位址可包括記憶體中的排組,列,及行,以及偏移值,次單位位於該記憶體中,而偏移值指出在所要的次單位中特定的資料元素。
裝置可包括一ID產生器,其以位址來產生內部的ID值。內部的ID值可包括各排組,列,及行位址的較低位元。此可產生一小尺寸的ID值,對於大數目的資料元素,其是相當正確的。
裝置可包括一貯存器,用來儲存新近被要求的次單位。
裝置可包括一延遲器,用來持留原始座標。
裝置可包括一查詢引擎,其以ID值來調查貯存器,且擷取有關的具有相同ID值的次單位的資料元素,並填入列緩衝器中對應原始資料座標的資料項。
裝置可包括複數個列緩衝器,用來將記憶邊輸出座標產生器所產生的輸出座標寫入一些列緩衝器中,而由其它的列緩衝器讀取對應的資料值。
裝置可包括一視頻定標器。
裝置可包括一記憶體,該記憶體含有記憶位置。記憶位置可包括在SDRAM中之位置。SDRAM比其它形式的記憶體如SRAM較便宜,可減少裝置的總成本。SDRAM可包括DDR2 SDRAM。
要被處理之資料可包括視頻資料,資料元素之陣列可包括圖像,而資料元素可包括圖像之像素。裝置特別適合來處理視頻資料。
依據本發明之另一方面,提供用來處理資料之一方法,其包括:接收陣列的資料元素,該資料元素被排成水平線及垂直線;將來自陣列中鄰接的水平及垂直線的資料元素次單位陣列儲存在記憶位置中;以及,由記憶位置取得此單位以供處理。
尤其,若記憶體是SDRAM記憶體,該方法可包括將記憶位置中之次陣列儲存在SDRAM記憶體之一排組中,並將鄰接的次單位陣列儲存在SDRAM記憶體之不同的排組中。此可被用來將排組***到SDRAM中,其可減少處理資料的需要。
依據本發明之另一方面,提供一含有指令的電腦程式,其被執行時,可使處理資料之裝置實施處理資料之方法。一電腦-可讀之媒體可包括該電腦程式,一信號可包括該電惱程式。
上面之概述並非用來說明本發明各闡明用之例子或每一個實施例。
本發明可應用到各種不同的資料處理裝置,設備及方法上,尤其可應用於如影像資料之資料處理。本發明不被限制於這樣的方法,本發明之各種不同的觀點可經由說明書中各種不同的實施例來充份了解。
在各種不同的實施例中,所用的〝次單位(sub-unit)〞一詞係指任何位於鄰接的水平及垂直線上(此不同於位於相同水平線或垂直線上的)的鄰接的資料元件(如像素)。例如,次單位可以是一長方形陣列,或是一簡單的L型陣列,但此名詞也包括其它形狀的次單位。次單位可包含一塊的資料元素。該塊有適宜的形狀,可允許由各方向接近來隨機存取這些資料元素。在各種不同的實施例中,存取這種次單位可包括同時存取相鄰的水平線及垂直線上的資料元素,這些資料元素(若缺少次單位組合)則無法同時經由水平線存取或垂直線存取而被一起存取。
在各種不同的實施例中,次單位包括4×4的資料元素陣列,它們取自相鄰的垂直線及水平線的陣列。此可允許16個資料元素能特別有效率地被處理。
茲請參閱圖式,圖3顯示用來貯存及存取資料的資料處理裝置300,在此實施例中,資料是影像或圖像資料。裝置300有一輸入影像信號接受器302,用來接收輸入影像信號,這些影像信號來自像網際網路之通訊網,或是直接來自錄像源。
而後,輸入的影像可以選擇利用向下定標器304來縮小其尺寸,向下定標器304減少裝置300所要處理的像素的數目,向下定標可以減少要被處理的像素的總數目,故有助於減少裝置300之後續步驟所需要的處理總量。若輸入影像之解析度(像素數目)比顯示裝置高很多時,其是有幫助的。在此情況下,不需要處理輸入的影像信號的所有像素。
在裝置300中,幾列輸入影像信號的像素被持留在列緩衝器306中,一直到預定數目的列被持留為止。在此實施例中,有四個列緩衝器306,每一個列緩衝器貯存一整列的來自輸入影像信號的像素。當四個列緩衝器306全填滿時,16個像素由列緩衝器306中被讀取且傳輸到塊儲存控制器308,後者將這四個列的像素以4×4塊之方式儲存在SDRAM記憶體之相繼行中。此不同於傳統的儲存圖像的方法,後者沒有這種塊儲存控制器308。像素塊然後被傳送到SDRAM控制器310以便儲存在SDRAM記憶體312之排組中的一列與多行之位址上。
為了取得顯示所需的儲存塊影像資料,裝置300包含一同步脈衝器(SPG)314。SPG產生標準的水平的及垂直的脈衝的影像時序信號。其用來產生顯示於螢幕上之輸出影像的輸出X及Y座標或位置(OX,OY)。換言之,SPG所產生之脈衝先對應於顯示螢幕上最左上的像素(OX,OY)=(0,0),而後緊鄰其右邊之像素=(1,0),並以相同之方式掃描到螢幕最右下方的像素。用來確認顯示螢幕上之像素位置的座標(OX,OY)此處被稱為〝輸出〞座標或位置。此不同於輸入或原圖像中的〝原始的〞或〝扭曲的〞座標或位置(WX,WY),茲將說明如下。應注意到,〝扭曲的〞一詞習慣上係用於原始的影像,而非輸出影像,縱使輸出影像也可被說〝扭曲的〞。此乃因輸出座標(OX,OY)被轉變或映射回到相同影像中之座標(WX,WY),後者對輸出像素(OX,OY)有貢獻。
輸出座標─顯示座標(OX,OY)─被回饋到映射器316或扭曲映射引擎。映射器316用來決定輸出影像信號中之像素對應到輸入影像中那一個像素。亦即,輸入影像中那一個像素需要被取用以在顯示器上顯示輸出影像。為達成此作用,映射器316可利用數學來將輸出座標(OX,OY)映射到扭曲的座標(WX,WY)。或者,映射器316可利用查詢表來產生扭曲的座標(WX,WY)。在後面的方法中,表可指示輸出(OX,OY)及原始的(WX,WY)像素間的對應或映射,例如,在數學轉換困難或不可能時可利用此方法。在映射包括〝混雜〞原圖像時就是其中一例。
在傳統的影像定標器中,複雜的映射是沒有效率的,因為輸入影像的像素以水平線之方式被儲存,故對儲存像素的存取受到限制。唯一容易取得的〝映射〞是水平的或垂直的〝翻轉〞。水平的翻轉(或對垂直軸的旋轉)為傳統的定標器所允許,因為輸出影像之第一水平線的所有像素均在原始影像之第一水平線中;反之亦若是。同樣地,垂直的翻轉為傳統的定標器所允許,因為輸出影像之第一水平線的所有像素均位於輸入影像之底端水平線像素的對應位置上。當然,傳統的定標器適於具有受限的數學轉換或使用查詢表時的〝正常的〞輸入到輸出的映射,而且,定標器僅輸出與被輸入其內(WX,WY)一樣的座標(OX,OY),或是施加一簡單的定標因子到輸出座標(OX,OY)去決定原始的或扭曲的座標(WX,WY)。
如上所解釋的,被映射器316所決定的原始的或扭曲的座標(WX,WY)詳細說明輸入影像信號中的有關像素座標,其被用來由SDRAM記憶體312取回有關的像素。原始的座標(WX,WY)被傳送到塊要求轉換器318,後者將扭曲的座標(WX,WY)轉換成SDRAM記憶體中對應的排組,列,及行之位址,含有像素的塊被儲存在SDRAM記憶體中。換言之,塊要求轉換器318將原始的像素座標(WX,WY)轉移到SDRAM 312中之位址,包括所要像素之多個像素以單一塊之形式被儲存在SDRAM 312中。
因為像素的相繼存取經常會由SDRAM記憶體312產生所需的原始圖像中鄰接的水平及垂直線上的像素。塊要求貯存器320被利用來記住最近被要求的塊。貯存器320不能儲存塊本身的內容;正因為它們已被取出。如果被要求的塊已被取回,塊要求貯存器320則會消除發佈另一個指令的需要,該指令係要記憶控制器310由SDRAM記憶體312取回那特定塊,因為它將已經是空的或將在被SDRAM控制器310取出之過程中。
當特定塊由SDRAM記憶體312取出時,那一塊的像素資料被用來配置於輸出影像中空的像素。為了達成此作用,配置器或匹配且填補引擎322聯絡移位暫存器324以配置輸出影像之像素。移位暫存器324被用來儲存原始的或扭曲的座標(WX,WY),這些座標取自SDRAM記憶體312且由映射器316輸出。移位暫存器324具有任意的長度,使得在映射器316對輸入影像中所要的原始像素被之原始座標(WX,WY)實施初始計算與實際收到來自SDRAM記憶體312之像素之間得到延遲。此延遲將位在有關的原始像素被要求之後的某一半隨機的點上。在被要求的特定的像素或塊與實際由SDRAM記憶體312取來的塊之間有一較長的延遲時,需用到一較長的移位暫存器。
當新的扭曲座標(WX,WY)被映射器316產生時,移位暫存器324即向前移位。移位暫存器324含有像素值之欄位或空的像素之資料值(D),因為其像素的值尚不知道。當塊要求被執行且像素塊由SDRAM記憶體312取出時,塊與每一個移位暫存器的項做比較,看看是否塊中之任一像素資料可被用來填入移位暫存器324中任一空的項上。此情況可發生於下列之情形;若取回的塊中的一像素,其扭曲的座標(WX,WY)與另一個已存在於移位暫存器324中的扭曲的座標(WX,WY)相符時。因為數個像素被取回到各塊中(在我們的實施例中為16個),若它們已被產生,則可由被取回的單一塊來填補多個移位暫存器的位置。
當匹配被找到時,換句話說,當移位暫存器324中之扭曲的座標(WX,WY)符合取自SDRAM記憶體312之塊中相同像素(WX,WY)時,對應的像素資料D則被儲存在對應的移位暫存器324之資料位置(WX,WY)。
當移位暫存器324已經由起點移位到終點時,其各個扭曲的座標(WX,WY)應已經由配置器322儲存有資料值D。此資料值D係輸出一給定的輸出像素座標(OX,OY)所需要的,其已延遲了移位暫存器324之長度。為了推進SPG產生的輸出座標(OX,OY),此延遲可被允許。
一旦移位暫存器324已全部被配置了,對應的影像即是輸出影像326,其可提供給顯示裝置,諸如TV,PC監視器,或投影機。
全部過程可利用在SDRAM 312中***排組來加速。此乃因SDRAM中不同的排組可被用來儲存來自原始影像的鄰近塊的像素。如圖4所示。輸入影像中各像素塊因此被儲存在SDRAM之排組0,1,2及3之塊所圍繞。因為一個排組在另一個排組被打開或關閉之同時可被讀取,此減少了資料總處理所需之時間。
圖5顯示一個4×4陣列的16個像素或資料元素{a00
,a01
,…a33
},其共同代表來自輸入影像信號的原始影像,各資料元素a00
,a01
,…a33
對應16個像素之原始影像中的一個像素,且具有一關聯的值D00
,D01
,…D33
。資料元素或像素aij
,位於原始影像的第i列及第j行(j=0,1,…)。事實上,大部份影像含有多於16個之像素,而此處使用小數目的像素係用來幫助對本發明的了解。
圖6顯示傳統的方法,其用來將原始影像分隔成四個水平線{a00
,a01
,a02
,a03
},{a10
,a11
,a12
,a13
},{a20
,a21
,a22
,a23
},{a30
,a31
,a32
,a33
}之像素,各水平線含有四個像素。這些線傳統上相繼地被儲存在,例如,SDRAM 312中(圖3)。
為了由記憶體中取得各別的像素,傳統上含有那個像素的水平線要被要求且由SDRAM記憶中取得。此操作可取得那一個水平線中的所有四個像素。因此,例如,取得像素a21
之指令,傳統上會取得含有像素a20
,a21
,a22
及a23
的第三水平線。
做為對照,圖7顯示儲存陣列的改良方法,其將陣列分隔成四個2×2次單位或塊{a00
,a01
,a10
,,
a11
},{a02
,a03
,a12
,a13
},{a20
,a21
,a30
,a31
},{a22
,a23
,a32
,a33
}。各次單位含有四個像素,其數目相同於圖6之方法,但其所儲存的像素的分隔是不一樣的。
圖8顯示一輸出影像,其係圖5的原始影像的扭曲的或映射的版本經順時鐘方向旋轉90°(或π/2弳度)而成。使用上面所用的相同的專門用語,圖5之陣列將被稱為〝原始的〞或〝扭曲的〞陣列,而圖8被旋轉的陣列將被稱為〝輸出的〞陣列。此乃因SPG產生顯示用的輸出像素位置(OX,OY),其在後來被扭曲成原始之原影像中的對應像素位置(WX,WY)。輸出陣列中最左上之像素或〝原點像素〞,a30
,(OX,OY)=(0,0)是原始陣列中最左下之像素,其在原始影像中之座標為(WX,WY)=(3,0);輸出陣列中原點像素之右邊的像素,a20
,其輸出座標為(OX,OY)=(1,0),其在原始陣列中位於最左下之像素的正上方,且具有原始的或扭曲的座標(WX,WY)=(2,0)…等等。
顯示用之像素的輸出座標(OX,OY)由SPG 314(圖3)輸出,其由原點像素(OX,OY)=(0,0)開始,沿著最上面之水平線(OX,OY)=(1,0),(2,0),(3,0),而後移到第二水平線最左邊之像素(OX,OY)=(0,1),直到最右下像素(OX,OY)=(3,3)之最後像素之輸出座標被完成或產生為止。
輸出影像中之原點像素座標(OX,OY)=(0,0)被傳送到映射器316(圖3),後者將此輸出座標映射到原始的扭曲的座標(WX,WY)=(3,0)。因此,a30
是第一個需要由記憶體中讀取之像素。記憶體控制器310(圖3)要求SDRAM記憶體312中(圖3)含有像素a30
之特定塊。此塊含有像素a20
,a21
,a30
,a31
。一整塊由SDRAM記憶體312(圖3)取出,故像素a30
可被存取。
輸出影像所需之下一個像素具有輸出座標(OX,OY)=(0,1)。此輸出座標被回輸到映射器316(圖3),其將輸出座標轉換成(WX,WY)=(2,0)之扭曲座標。此意謂像素a20
是被需要的。此像素也被置放於像素a30
相同的塊中,像素a30
剛已由SDRAM記憶體312(圖3)被取出。因此,此像素可立即被使用,且不需要由SDRAM記憶體312(圖3)取出另一塊來得到像素a20
。
輸出影像所需的下列二個像素,a10
,a00
,沒有被置放於前面取回之塊中,故必需取出另一塊。然而,它們二個都位於含有像素a00
,a01
,a10
及a11
之塊中。因此,一旦此第二塊被取出,像素a10
及a00
實際上可同時被獲得。
輸出影像中第二水平線像素之輸出座標為(OX,OY)=(0,1),(1,1),(2,1),(3,1)且被標記為a31
,a21
,a11
及a01
,它們位於剛被取得的二塊中,依同樣的步驟,只要存取這二塊的像素,就可得到這些像素。
此可對照於傳統的步驟,當像素依傳統方法以水平線而非塊之方式被儲存時,如何可將它們依順時鐘方向旋轉90°輸出影像所需的最先四個像素具有輸出像素位置(OX,OY)=(0,0),(1,0),(2,0),(3,0),亦即,像素a30
,a20
,a10
及a00
,它們在SDRAM記憶體312(圖3)中有不同的位置,因為它們全部位於原始影像的不同的水平線上(參看圖6)。因此,輸出影像之第一水平線被獲得之前,組成原始影像之全部四個水平線的像素需要由SDRAM記憶體312(圖3)相繼被取出。
之後,為了得到輸出影像的第二水平線像素a31
,a21
,a11
及a01
需要由SDRAM記憶體312(圖3)中取出。請再參閱圖6,這些像素位於SDRAM記憶體312(圖3)中不同的位置上。
由此例可了解到,以塊為基楚的處理方法,其執行90°順時鐘旋轉的速度是傳統的以線為基礎的方法的二倍。此二倍的增加意謂著只需要傳統記憶體存取時間的一半。
在含有256個像素的16×16影像(未顯示)之情況下,其要受到90°順時鐘旋轉時,對於傳統的以線為基礎的方法其在輸出影像第一水平線能被得到之前,16個像素之全部16個水平線的第一個像素必須由SDRAM記憶體312(圖3)中被讀取。總體而言,在輸出影像全部被配置之前,需要存取256個記憶位置。
然而,原始影像若以16個4×4之塊被儲存,其中,各塊含有16個像素,則只有四個像素塊(這些塊含有原始影像第一垂直線的像素)需被取出來配置輸出影像的第一水平線。這些相同的四個塊需要再被取出來配置輸出影像的第二水平線。總之,在輸出影像完全被配置之前,只有64個塊需要被取出。
在此例中,其意謂以塊為基礎的方法,其速度是傳統的以線為基礎的方法的四倍快。的確,傳統上,其需花費10個時鐘周期來取出一線的16個像素,而各線僅要使用該線的一個像素,因為,請參看圖2,要花費8個時鐘周期來取得4個DQs(T1到T9之間),及另二個時鐘周期(T9及T11之間)來取得另外的4個DQs,使得等於16個像素的8個DQs被取出。
在以塊為基礎的方法中,要花費10個時鐘周期來取出一完整塊的16個像素,其中4個像素事實上將被同時使用。
雖然以塊來儲存像素有其優點,即,相繼讀取塊中的像素,無論以水平或對角方向均與垂直方向需要同樣長的時間。但可以了解到,在此方法中有某種程度的無效率。此乃因對於大部份的影像處理,只有來自相同線的像素被相繼存取,其意謂著16個像素中的12個可能不會被使用到。然而,在需要某一形式的映射時,以塊為基礎的方法更為有效。
上面所述之裝置300適合用來取得具有整數座標值的扭曲位置(WX,WY)的個別像素。然而,相當頻繁,例如在做不尋常角度之旋轉時,映射器316(圖3)會把非整數值之扭曲座標位置(WX,WY)給予原始的輸入影像中之像素。
圖9顯示一個改善的裝置900,其可用於此情況。圖9類似於圖5,但為了簡潔,只有顯示裝置900之存取邊。類似的元件給予對應圖3之元件的參考記號,但第一字是9而不是3。
如圖9之所示,SPG 914產生用於顯示並給予映射器916的輸出座標(OX,OY),映射器916將輸出座標(OX,OY)轉換成輸入影像所需像素之原始的或扭曲的座標(WX,WY)。而後,塊要求轉換器918將扭曲的座標(WX,WY)轉換成SDRAM記憶體(未顯示在圖9中)的對應的排組,列及行之位址。含有位於那個扭曲位置(WX,WY)上的像素的有關塊由記憶體中被取出,且被如圖3所示之配置器922用來核對塊要求貯存器920,以判定那個塊是否剛剛已被要求。
然而,取代單個移位暫存器(圖3之324),而可使用複數個移位暫存器924。
為了讓原始影像中非整數的扭曲位置(WX,WY)被取出,原始影像中的複數個鄰近的整數像素位置的貢獻,可被用來產生輸出影像中對應的像素值。這些貢獻係權重原始影像中各有關鄰近像素之貢獻並將它們加起來而得到。
例如,若原始影像中非整數的扭曲位置(WX,WY)=(0.5,2)被要求,此情形如下述之例子,若原始影像之垂直方向被增大二倍,當輸出像素座標是(OX,OY)=(2,1)時,50%的貢獻來自扭曲位置(WX,WY)=(2,0)之像素,50%的貢獻來自扭曲位置(WX,WY)=(3,1)之像素,二者加起來,得到有關的輸出像素值。此過程產生了在原始影像中二個可用到的整數位置之間的一個內插像素。因此,以圖5之專門術語來說;若輸出影像在垂直方向之尺寸向上增加了二倍(使得輸出影像成為8×4之陣列),則輸出影像中位於(OX,OY)=(2,1)之像素可能是0.5×D(a20
)+0.5×D(a21
),其中D(aij
)是位於原始影像中(i,j)位置之項a的值D。
因為二個貢獻像素均相當容易被置放於記憶體中相同的像素塊,故不需要額外的SDRAM存取來完成此內插。的確,以上例來說,像素a20
及a21
二者均位在相同的塊{a20
,a30
,a21
,a31
}(參看圖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之存取動作。
為了滿足非整數位置的排列,一***器928被安置在移位暫存器924及顯示用輸出影像926之間。***器928決定權重因子,且將各權重因子乘上各貢獻像素之像素值D,然後,將這些值加起來以得到最後的輸出像素值。
上述中,映射器316,916產生單一的扭曲像素位置(WX,WY)─無論是整數或非整數位置─響應SPG所產生的各輸出像素位置(OX,OY)。然而,請參看圖10,一修正的映射器1016也可被安置來響應SPG所產生的單一輸出像素位置(OX,OY),並為輸出影像的下一列產生原始影像中之扭曲座標(WX,WY)。因為取自記憶體之各像素塊含有數列(在我們的例子中為4列)來自原始影像的像素,故實際上可同時配置多個輸出列。此乃因輸出影像中後來的列將具有對應的原始位置(WX,WY),這些位置由一輸出列到下一列僅稍為不同,故它們可能被置放於記憶體中相同的像素塊中。
因此,若SPG 1014產生一輸出座標(OX,OY),映射器1016可產生對應的扭曲座標(WX,WY),也產生輸出座標(OX,OY+1),(OX,OY+2),及(OX,OY+3)所對應的扭曲座標(WX',WY'),(WX",WY")及(WX"',WY"'),這些輸出座標具有相同的水平輸出座標的值,但有偏移的垂直輸出座標的值。例如,當SPG 1014產生原點輸出座標(OX,OY)=(0,0)時,偏移的輸出座標(OX,OY+1)=(0,1),(OX,OY+2)=(0,2),及(OX,OY+3)=(0,3)也被產生,使得四個個別的扭曲座標也同時被產生:
(OX,OY)=(0,0)->(WX,WY);
(OX,OY+1)=(0,1)->(WX',WY');
(OX,OY+2)=(0,2)->(WX",WY");及
(OX,OY+3)=(0,3)->(WX"',WY"')。
在使用4×4像素塊之例子中,四個水平輸出列可同時被映射器1016產生,如圖10之所示,因此配置器1022及移位暫存器1024要被擴大。因此,取自SDRAM記憶體(未顯示於圖10中)單一塊的4×4像素可被用來同時將四個輸出列OY,OY+1,OY+2,OY+3所要之像素資料填入。
額外的列緩衝器1030被安置於移位暫存器1024之後面,以確保額外的列在製備輸出影像信號時可以正確的順序被處理。
此裝置將大大減少產生輸出信號或影像時所需的SDRAM的負荷。然而,此也會增加線路的複雜性,因為其需要四個扭曲或映射引擎1016。
雖然上面所述之裝置300,900,及1000大大減少了某些影像映射所需的處理時間,配置器322,922,及1022可被不同的裝置所取代,其將描述於下面。
圖11及12顯示不同的用來處理影像資料的裝置1100。輸出X,Y產生器1102運作於SDRAM頻率以產生輸出座標(OX,OY)。此係以傳統之方法來掃描,由最左上之像素,經其右邊之像素,再經全部之水平列,直到最右下之像素座標被產生。雖然SPGs314,914,1014操作於顯示之頻率,亦即,輸出像素之頻率,而輸出X,Y產生器1102則運作於SDRAM之頻率。
Y-偏移產生器1104對輸出影像中一預定數目的水平列的座標產生偏移。在此例中,該預定的數目是4。因此,Y-偏移產生器1104產生對應4個水平列的Y-偏移數,0,1,2,及3。Y-偏移產生器1104提供偏移值給Y-偏移加法器1106,後者接收來自X,Y產生器1102之輸出座標(OX,OY),而另有三個座標(OX,OY+1),(OX,OY+2),及(OX,OY+3)被產生。來自裝置1100此部份的輸出可以是{(0,0),(0,1),(0,2),(0,3)},{(1,0),(1,1),(1,2),(1,3)}…
這些輸出座標由左到右地掃描四個像素寬的輸出像素條帶,然後向下掃描鄰近的像素條帶,由包括輸出影像的水平列4到7。單一的映射器1108接收這些輸出座標(OX,OY)條帶,且產生對應的扭曲座標(WX,WY)條帶,後者有關於原始輸入影像中的像素位置。由於儲存在塊中之像素,這些扭曲座標(WX,WY)在SDRAM記憶體中擁有類似的位置,故隨後的映射座標(WX,WY)很有可能儲存在相同的或鄰近的塊中。
圖13及圖14分別顯示水平方向掃描橫過輸出影像的〝輸出條帶〞,及對角方向掃描橫過原始輸入影像的〝原始條帶〞。可以了解到,當輸出影像是原始影像的旋轉版本時,原始影像位置(WX,WY)擦經該組的存取像素的塊,這些像素一般非常靠近前面位置的像素。因為原始影像以像素塊而不是以水平列被儲存,故SDRAM記憶體被存取的頻率較小,因而提高了全面處理的速度。
請返回參看圖11及12,一旦原始座標(WX,WY)被映射器1108產生,則它們被傳送到BRC轉換器1110。BRC轉換器1110將每一原始或扭曲座標(WX,WY)轉換成SDRAM記憶體中之排組,列,行,及偏移之位址。換言之,排組,列,行之位址指向SDRAM記憶體之一特定排組中的列與行之位置,含有所要像素之塊被置放在此SDRAM記憶體中,一旦那特定排組中之那個列與行被存取,則16-像素塊可被取出來處理。偏移值指示在那特定塊中的特定像素。因此,4×4像素塊之偏移值具有0到15之間的值。使用0到15之間的值,比使用1到16之間的值較好,因為15可以4個位元來表示,而16則需5個位元。
因為在SDRAM記憶體之各排組之中有許多列與行,例如在各排組中有8192列及128行,故要唯一確定儲存在SDRAM記憶體中之個別像素,需要相當大的BRC值(具有偏移)。為了克服此點,塊要求及ID產生器112產生排組,列及行值之內部ID值,例如,取排組,列,及行位址較低的二個顯著的位元,合在一起形成一個6位元的位址。依特定之情況,可使用不同數目之較低的位元,例如1,3等等。依排組之基礎,此可使26
(=64)個記憶位置能夠在SDRAM記憶體中被確認,這些位置位於排組中,它們的列與行位於那個特定的排組。
因為原始座標(WX,WY)傾向掃描或橫過4×4之記憶塊,如參閱圖14之討論,在一新的具有相同ID之BRC值發生之前,至少四個排組且不是四列就是四行,會被掃描過。此等於64個像素左右,其意謂對於至少64個像素而言,ID值將是唯一正確的。然後過濾掉重覆的列與行的要求,以減少工作的負荷。由於扭曲座標之掃描特性,像素將由記憶體之相同的塊中被要求,故很有可能會有這些要求的重複的項。
新近塊之要求的區域貯存器被用來檢測新的塊的要求。若新的BRC值被要求,則SDRAM控制器1116由SDRAM記憶體取出那一個特定塊。應注意到,6位元ID值不被SDRAM控制器1116所用,因為它是一個內部值不會被SDRAM控制器1116當做SDRAM記憶體中之位址而被認出。SDRAM控制器1116需要完全的BRC位址,來使它能夠唯一地確認SDRAM中儲存像素塊的正確位置。在此例中,ID值僅是64個值中的一個,ID值被用來做為進入儲存全部BRC值之64個位置記憶的位址。因此,若一個新的具有相同ID的BRC值被檢測到,則一要求仍會送到SDRAM控制器以從記憶體得到那個塊。
為那個特定的扭曲位置(WX,WY)所產生的ID值(以及偏移值,在此情形中,其係16像素塊內特定像素的在0及15之間的值)被傳送到延遲產生器1118以確保SDRAM控制器1116已經有足夠的時間由SDRAM記憶體取得所需的像素塊。同時,SDRAM控制器1116已儲存進入64項貯存器的BRC資料,該資料包含在有關BRC位址上的塊中。
查尋引擎1120利用延遲的ID值及偏移來調查貯存器1114,並將取得的值儲存在大的列緩衝記憶體1124中。在此例中,至少有四個列緩衝器1124可讓資料寫入。被取得的資料值可受到***之運作,如上所述。一延遲輸出像素座標(OX,OY)已被延遲器1122持留,該延遲器1122位於輸出座標(OX,OY)-扭曲座標(WX,WY)-裝置1100之產生元件1102,1104,1106,及列緩衝器1124之間。被延遲的輸出座標(OX,OY)被當做一指示物以指示資料被儲存在列緩衝器1124中之位置。
在裝置1100之像素-時鐘邊,另一個輸出X,Y產生器1126以輸出像素之頻率來計時,其計數輸出位置(OX,OY)而非增加線條的Y-偏移,該產生器1126由列緩衝器1124讀取輸出像素,並將它們送出以供另外的用途。
像素-時鐘邊及SDRAM-時鐘邊需要部份同步,使得列緩衝器1124剛好在被存取之前被填滿。一種雙重-緩衝方法可被用來確保SDRAM-時鐘邊存取下一列之資料之同時,像素-時鐘邊正存取前面一列的資料。換句話說,SDRAM-及像素-時鐘邏輯需要同步,使得SDRAM-邊之輸出X,Y產生器1102寫到一半的列緩衝器1124時,像素邊之輸出X,Y邏輯1125由列緩衝器1124之另一半讀取。然後,列緩衝器1124之二半互換,形成一簡單的雙重-緩衝系統,以避免寫到列緩衝器1124之動作超越由它們之中讀取的情況,輸出影像的抗混疊或平滑化也可利用很多種的塊要求器-延遲-貯存裝置1112,1114,1118,1120(在圖11中這些以花樣背景做標記)來達成。由部份輸出座標(OX,OY)產生的資料可被用來引入將被合併在一起的額外的扭曲座標(WX,WY)。塊要求器1112需要多對一的第一進第一出(FIFO)1502(參看圖15),僅需要單一的BRC貯存器1504。來自SDRAM控制器1116之資料被儲存在多貯存器中或是單一的多埠記憶體中,後者具有由塊要求1112送來的延遲的IDS
的資料。然後利用分數值將此資料合併在一起,其方法類似於前面所述的儲存在列衝器1122之單一像素的***操作。
若有多個輸入源被使用,它們可被儲存在SDRAM記憶體1116中不同的位置。在映射器1108之前或之後可執行源─映射作用,來產生所要的扭曲座標(WX,WY)以指示記憶體1116中不同的源。在扭曲-映射前之源-映射可讓個別的窗口被分別映射,其可能以不同的扭曲作用。在扭曲-映射之後的源-映射可讓扭曲-映射被一次應用到多個窗口。
圖16顯示依據另一個實施例,用來將資料儲存在SDRAM之排列。參看圖4,鄰近的4×4像素塊被儲存在相同的SDRAM記憶體之不同的排組中。然後,如圖16之所示,64塊的4×4像素被儲存在SDRAM記憶體之一排組中的相同列上。通常,一SDRAM列含有512行位址,且,如前面所解釋的,各行位址可儲存二個像素值的影像資料。因此,1024個像素值的資料可被儲存於各SDRAM列中。因為每個4×4塊的16個像素需要8行位址,此意謂64個4×4塊可被儲存在各SDRAM列中。這些64塊以8×8陣列的16像素塊被儲存。故在SDRAM記憶體之單一排組中的單一SDRAM列中總共有32×32(=1024)個像素。
鄰接的32×32像素陣列,其各個需要單一的SDRAM列,它們被儲存在SDRAM記憶體不同的排組中,不同於在相同排組中對立於不同的列上。此允許在鄰接的像素陣列之間快速的移動,因為不同的排組可以被快速地存取。
依此方法儲存像素,當像素由SDRAM取出時,相同的SDRAM列維持一段較長時間的活動(例如,與圖4所示之排列比較)。此乃因較大數目的鄰接的像素被放置於相同的SDRAM列中。如前面所解釋的,此產生較快速的處理速度,因為SDRAM列不需要那麼頻繁地打開與關閉。因為SDRAM記憶體中所有的排組能夠同時被打開,此種儲存排列實際上可以瞬間存取16×16個4×4像素塊,其等於4096個像素。
圖17顯示依據另一實施例之安排,其中,使用到內容可存取記憶體(CAM)之增強。該CAM之增強允許在讀回像素時,使用到較少的記憶體,此乃因CAM可以持有新近用到的4×4像素塊的隨機─存取貯存器。一完整顯示列的價值的塊可被儲存於貯存器中。
如前面所解釋的,標準的SDRAM需要一記憶位置,以便由其中取出資料。CAM決定那一個位置儲存所要的特定的資料,因為旋轉中扭曲之影像需要由SDRAM得到近乎隨機之位址(它們無法預測),新近塊要求貯存器1114(圖11)需要有像最後顯示解析度那樣的大小。若顯示寬度是2048像素,則需要2048×2048像素之貯存器,例如在使用90°旋轉之情況。
在此實施例中,CAM儲存塊之位置及4×4之像素資料,(塊位置,例如,(0,0)是原始源影像中左上塊之位置,(1,0)是其右邊之塊位置,等等)。當塊要求執行時,CAM被要求那特定相符的塊的塊位置,若那個塊不存在於CAM中,則要求被送到SDRAM以取出那個塊,其它方面,因為CAM位置不被知道而其內也有4×4像素之資料,利用CAM中之位址,可以容易地由CAM中得到所要的塊。
在一執行中,CAM儲存原始塊之位置,如上述,CAM位址變成正常的記憶貯存位置(ID),其含有那個塊的4×4像素。此意謂CAM可以較小,如同它儲存較少的資料,其可處理複雜且花費的事。
使用CAM時,ID(貯存位置)值不再由排組,列,及行位址之較低的2個顯著的位元來產生,如參考圖12所解釋的。而是,在搜尋CAM中那特定塊後所發現的CAM位址位置;該具有相符的BRC位址的記憶位置當做ID值。若塊之位置(排組,列,行)資料無法在CAM中任何地方找到,亦即,若具有那個塊位置的塊,先前沒有被取得,則利用一計數器來產生新的繼起的CAM記憶位置,該記憶位置是具有隨後的位置ID,且,其內儲存有被要求的BRC位址。而後,一未來的相同的BRC的要求將產生此CAM位址,其形成ID,此ID在一延遲列之後,被傳輸到4×4像素貯存器1114,如圖11之所示。
使用此方法,SDRAM記憶體可由各方向或角度,或依據那一個扭曲作用而被讀取。CAM記得新近的塊的要求,不論SDRAM之位置。圖12所示之有關方法儲存一區域貯存器中方形柵格形狀之鄰近之像素,而CAM方法可儲存任何形狀中之像素。
舉一例說明,2048×2048像素之輸出解析度需要至少512 CAM位置,以含蓋一完整列的像素,因為各CAM位置可儲存4個像素值的資料。各CAM位置之位址可以是18位元之寬度(排組2位元,行6位元,而列10位元)。因此,CAM之位元的大小為512×18,等於9216位元。雖然此數目顯得相對小,但在一個FPGA中,需要超過10000邏輯單元,以定位所要的資料。對一典型的FPGA,共需邏輯單元的數目約20000,此數目太大而不實用。因此,此方法較適合於ASIC之使用,除非使用一外部的CAM。
在某些使用到CAM之實施例中,圖11所示之多列緩衝器1124被除去,而一次只處理單一列(例如,不是多列)。
在上面之例子中(除了CAM之方法,因為其保存資料於各列之末端),使用單個大的多塊的貯存器。此大的多塊的貯存器含有較小的塊,一般為4×4或4×2像素之大小,使得各較小的塊在單一SDRAM短脈衝中可被存取。
貯存器僅被用於影像的較小部份,其〝窗口〞移動橫過源影像。貯存器不以一列一列地被保存,其不像輸出掃描過一輸出列後接著掃描下一列,貯存器必需被重新配置,時常是像前面輸出列一樣的資料。
為了改善效率,當輸出邊由左掃描到右時,由於Y偏移產生器之指示,多個輸出列可同時被扭曲,因為多個輸出列由鄰近的源列產生,相同貯存器之資料可再多次被使用一因而由相同的SDRAM之存取可給予更多的像素。
上面範例性之結構有三個主要方面可做進一步之改善。
首先,若多個影像在一顯示器上彼此鄰接地被扭曲,則各源影像需要各別的貯存器,因為上面代表性的大的貯存器無法分辨一影像之資料與另一影像之資料。此意謂需要額外的貯存器,其多少與顯示於螢幕之窗口的數目成比例,而增加所要的FPGA資源。
其次,需要多個列緩衝器,用來使同時被產生的多個列分開成各別的列。此增加了FPGA之大小及複雜性。
第三,系統被分成二種頻率,輸出像素頻率及SDRAM頻率,其使設計稍為複雜化。
此外,再請參考圖6,較小的4×4像素塊被儲存在SDRAM內,使得它們在一個SDRAM脈衝中可以容易地被存取。依據SDRAM資料之寬度,其可以是4×4,4×2,2×4,2×2,8×4,…等。許多較小的塊(圖16所示之例子為16)形成一較大的32×32像素塊,這些塊全部被儲存在相同的SDRAM列中。此允許對原始或源影像中之像素在任何方向上快速的存取,而SDRAM不需要太頻繁地對不同的列‘預裝載(關閉)’及‘活化(打開)’。此可產生較快的資料處理。鄰接的32×32塊被儲存在不同的SDRAM排組中,使得回到原始影像的像素存取會橫過列的邊界。亦即,當由不同的較大的32×32像素塊尋找源像素時,SDRAM之存取仍然維持像它切換到新的SDRAM排組時那樣的快速。
圖18顯示另一個結構1800。
在此另一個結構1800中,貯存器不儲存一大的多塊的較小像素塊,而是記憶新近使用的塊。每一個新近使用的塊被儲存在個別的貯存器項中。一次僅有一個輸出列被掃描,此簡化了結構。結果,不再需要列緩衝塊。此外,除了SDRAM控制器,所有其它元件均運作於輸出像素頻率,而非SDRAM頻率。
SPG 1802產生一對輸出共座標(OX,OY)。如所有標準影像系統,且如前面之所述,這些掃描係由左到右,由上到下。
輸出座標(OX,OY)被扭曲引擎1804扭曲,以產生扭曲的座標(WX,WY)。如上,扭曲座標(WX,WY)指示在原始影像中所要像素之位置。
當扭曲的(WX,WY)像素之計算被執行時,它們被塊要求轉換器1806轉換成源塊的SDRAM位置,記憶位置係以塊BRC(排組,列,及行)之形式。此係4×4像素塊之記憶位置,該像素塊含有所要的(WX,WY)像素。
比較器1808將此塊之SDRAM位置與扭曲像素之SDRAM做比較,該扭曲像素由鄰接的輸出像素產生:即,相同列上先前的像素(OX-1,OY),及前面列上之鄰近像素(OX-1,OY-1),(OX,OY-1),及(OX+1,OY-1)。這些由列延遲得到,下面將更詳細說明。
因為目前的SDRAM位置與其它的對應於輸出像素座標(OX,OY)的SDRAM位置做比較,這些輸出像素位置(OX,OY)在輸出螢幕上僅有一個像素,故非常可能得到匹配。換言之,此意謂著目前被尋找的像素可能在已由SDRAM取出的像素塊中被發現到。結果,系統將不再由SDRAM要求此資料,因為那資料剛已被取出。
若一BRC匹配被發現了,則那先前的匹配塊的ID被複製且被傳送到列延遲1810。
若找不到匹配,則使用下一個可取得的ID數字且將其傳送到列延遲1810。一要求被送到SDRAM控制器1812,以便由SDRAM取出所要的像素塊並將其儲存在那位置上的像素塊貯存器1814。
將ID及目前的扭曲位置(WX,WY)傳輸到列延遲器1810有二個目的。首先,其提供給SDRAM控制器1812足夠的時間來取得所要的像素塊。第二,其允許在先前步驟所提到的比較,將對應於扭曲座標(WX,WY)之BRCs與來自先前輸出列之BRC做比較。
來自列延遲器1810之輸出則回送到前面所提到的塊比較器1808,使得在下一個輸出列之像素被扭曲時,其可被用來做比較。輸出也被用來利用ID值由塊貯存器取出目前所要的像素。
使用ID值及根據(WX,WY)值較低的位元,可由塊貯存器1814取得正確的像素。之後,其被輸出到顯示器。
在此例中,SDRAM之存取僅發生於特別需要時。在一典型的扭曲或旋轉的影像中,鄰近的源像素(WX,WY)在輸出影像(OX,OY)中仍彼此接近,因此,可能被儲存在SDRAM記憶體中相同的像素塊中。上面的比較或〝鄰近〞核對可確保,取自像素塊貯存器SDRAM的任何先前的塊,可以儘可能地被再使用。
圖19顯示一個例子,其中儲存在像素塊貯存器的像素塊被再使用。圖19之箭頭指示在原始影像中像素的掃描路徑。箭頭有一小角度,且,對每一輸出列向下增加一列。
如可被預期到的,第一輸出列需要所有的必需的像素塊由SDRAM記憶體本身取出,因為像素塊貯存器是空的,且在列延遲器中沒有扭曲位置(WX,WY)。然而,各隨後的輸出列需要較少的塊由SDRAM取出,因為箭頭橫過在前面列中已被用過的相同的塊。的確,對於此例中的第二,第三,及第四輸出列,只有一個新的塊由SDRAM取出;其他五個像素塊已儲存在像素塊貯存器中,像素要由這五個像素塊中去尋求。
上面所述之塊貯存器應足夠大來持留整個一列的影像資料。此乃因塊在下一個輸出列被使用時,需要將一輸出列所要的塊準備好。
例如,對1920×1080之輸出解析度,非旋轉之映射需要能夠儲存約512個4×4之塊的像素貯存器。此係因4×512=2048,其已足夠含蓋一水平輸出列中的1920個像素。
對於90度之旋轉,需要一較少數目的塊,因為只有1080個像素被輸出以水平方向橫過顯示器。
對於45度之旋轉,需要更多的塊來顯示一水平輸出列,因為對角方向橫過顯示器之輸出像素的數目更大,1920×1080三角形之斜邊是2202個像素。
資料貯存通常係直接執行。然而,在此例中,ID產生器需要追蹤那一個ID可以取得使用,以及那一個目前正在使用故無法取得。在此執行中,IDs對應於像素塊貯存位址,亦即,像素塊被儲存在貯存器那裏。跨過一整個畫面,某些像素塊比其它的被再使用更多次。特別是奇怪的扭曲,甚至某些旋轉就是這些情況。因此,ID產生器不能簡單地有序發出ID數字,且一旦最大的ID值已被配置,則再次輪到開始值(例如,0到511,0到511,等)
或是像素塊貯存器必需足夠大,以便使ID可被重複使用最多之次數的情況,其可能擴展橫跨許多列─可能甚至整個影像─或是需要知道那一個ID可被再使用而那一個不可。
因此,塊貯存器必需足夠聰明,能夠知道不要對使用中的塊貯存器(ID)項(亦即,目前輸出列所要的)寫得過多,以及再使用不再被需要的塊貯存器(ID)項(亦即,被用來輸出前面的列,但不被用在目前的輸出列)。在FPGA中執行此作用比較困難。
圖20顯示一裝置,用來在FPGA中執行上述之功能。
一ID表2000被儲存於記憶體中,ID表對各塊的貯存像素均有一位置,其對應於記憶位址。理想上ID表在各畫面之頂處被重設,對512塊貯存器,即,具有512個之記憶位置的貯存器,有序列出所有的IDs(0,12,…510,511)。
一讀指示器2002及一寫指示器2004被設立,二者於0處開始。讀指示器指出可被使用的下一個可取得的ID值。寫指示器指出任何被釋放或再循環之ID值被寫回之處。在需要一新的ID值時,可由讀指示器讀取,因為讀指示器指出可被使用的下一個可取得的ID值。
對於第一輸出列,讀指示器之增值量為一,因為下一個可取得的ID值將可使用。然後,讀指示器準備好由ID表輸出下一個可取得的ID值。因為第一列輸出需要由SDRAM取得的新資料,讀指示器現在將指著一相當大的值。例如,對於1920×1080之輸出解析度,其可能指著數字480。此係因480個4像素寬的塊可能已被要求,各塊具有它們自己唯一的ID值。此時,指出任何被釋放或再循環之ID值被寫回之處的寫指示器,仍然在0處,因為沒有ID值已被釋放或再循環。
當第二輸出列之像素被計算時,雖然某些未被第一輸出列使用的IDs將仍可取得,但某些將具有與第一輸出列之像素相符合的SDRAM的塊位置。
在發現第一列ID值要被再使用之情況,ID表不被改變,因為那個ID仍然在循環中。然而,在發現第一列ID值不被再使用之情況,那個ID值就被寫入寫指示器位置之ID表,而且,寫指示器被增量,此使得ID離開循環且被放回到ID表準備將來之使用。
因此,第一列之任何ID,其不被再使用在第二列時,它們要被寫回到ID表。ID值通常以被讀取之順序被寫回到ID表,雖然此與牽涉到的扭曲或旋轉有關。對每一個後來的輸出列將繼續此過程,此時ID表有下一個可取得的ID值,這些ID值以讀指示器增量由ID表讀取,同時,如任何未使用的IDs,以寫指示器增量被寫回去一樣。
此確保一特定ID無論如何頻繁地被再使用,其將決不會被過度寫入,因為頻繁被再使用的ID不會被寫回到ID表。若其維持流通在一列延遲器中,直到不再被需要,此刻,其被寫回到ID表。在某些扭曲之情況,ID值可能被使用在由上到下的每一輸出列中。
ID表(可取得IDs)加上流通於一列延遲器中之IDs,二者結合時,必會得到一完整的IDs的表,其中,不會有重覆的或遺漏的。用來產生及維持此表之邏輯,必需確保一旦一ID已被再使用於像素數目N,則其也可取得再使用於像素N+1,N+2,N+3等,但唯有在它們中沒有任何一個事先需要不同的ID的條件下,亦即,來自ID表的新的一個,或是來自前面列的不同的一個。
例如,假設第一列像素使用下面的IDs:
列1:0 0 0 0 1 1 1 1 2 2 2...
且下一列要如下再使用它們,其中〝50〞是對一新ID的要求:
列2:0 0 0 0 1 50 50 1 2 2 2...
可以了解到,ID# 1已被新ID的要求〝***〞。一旦下列被產生,則其可能是:
列3:0 0 0 0 50 50 50 50 2 2 2...
在此情況,來自列2之ID# 1s二者,將被放回到ID表,因此在ID表形成重複,而引起最後影像的敗壞。
對此問題的解決是,只有讓來自前面列的ID繼續被再使用。則前面之列變成:
列1:0 0 0 0 1 1 1 1 2 2 2...
列2:0 0 0 0 1 50 50 51 2 2 2...
列3:0 0 0 0 50 50 50 50 2 2 2...
ID〝1〞的第二次使用已被防止,因為在其使用中有一不連續。因此,因其不能被再使用,一新的ID,51,則被產生,而此會引起由SDRAM對相同像素塊的新要求。換言之,有相同的像素塊被保持在IDs 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,1)*
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+P(1,1)*
0.25*
0.5=P(0,0)*
0.375+P(1,0)*
0.125+P(0,1)*
0.375+P(1,1)*
0.125
為了執行雙線性***,需同時取得四個鄰近的像素。
由上述可以知道,非整數扭曲座標(WX,WY)可利用雙線性***來處理。圖22顯示一可能的方法,使用像素貯存器可以達成此目的,其將像素塊貯存器分割成可同時被讀取的多個部份。如圖22之所示,資料被儲存於像素塊貯存器中,使得鄰接的像素被儲存在四個不同的貯存區域(0,1,2,3)中的一個。
圖22中,顯示四個不同的4×4之像素塊,每一個含有16個像素。四個不同的記憶區域被用來儲存像素,顯示在像素上的數目指示像素被儲存於其中的區域。在此方法中,記憶區域0映射到偶數WX及偶數WY座標(例如(0,0)),記憶區域1映射到奇數WX及偶數WY座標(例如(1,0)),記憶區域2映射到偶數WX,及奇數WY座標(例如(0,1)),而記憶區域3映射到奇數WX及奇數WY座標(例如(1,1))。
每一塊4×4像素塊具有分配給它的ID值,該ID值如同只有單一貯存區域被分配的一樣。然而,在每一4×4之塊中之16個像素被展開橫過四個不同的記憶區域(0,1,2,3)。此可同時存取任何的四個鄰近像素,其中之一將來自各記憶體0,1,2,及3。
縱使所要的像素如顯示於圖22中間的四個像素,其跨越四個不同的4×4之塊及ID值,相同的四個記憶區域仍然有上述之優點,但各個接收不同的ID值,因為四個中間的像素係在不同的4×4之像素塊及貯存位置。
圖23顯示資料處理結構2300如何可被適用於依據此方法的雙線性***。
一非整數(WX,WY)值被轉換器2302轉變成四個鄰接的整數座標,它們被用來執行雙線性***。這些整數座標的每一個被轉換以確認像素塊之SDRAM位置(排組,列,及行),整數座標之像素位於該像素塊中。
一比較器對這些BRC值與先前的輸出像素的四個BRC值做比較,並與上面輸出列中三個鄰接像素的四個BRC值做比較。如果發現到相符,亦即,若那個BRC值已被要求,則對應的ID要被再使用。若不相符,亦即,若BRC不被要求,則四個ID表之一產生下一個所要的ID,且,一SDRAM要求因此被執行,以由其記憶體送出有關的像素塊。各ID表被分配給不同花樣的塊,使得一次可存取多至4個不同的塊,如同在雙線性***之情形,其迴繞的四個所要的像素跨立橫過四個塊之間的邊界。
四個IDs及扭曲(WX,WY)座標被回送到一列延遲器2306。這些值在處理後來的輸出列時,被回送到比較器做比較,且被送到貯存讀取部份,以便由它們個別的貯存記憶區域(0,1,2,3)取得所要的四個整數座標之像素。然後,雙線性***可被***器2308執行,其使用四個整數的像素值以產生最後的所要***的單一像素。
雖然本發明之一些特點已參考幾個特別的實施例說明如上,但與本領域有關之專業人士應了解到,在不違背本發明之精神與範圍下,可對這些實施例做許多改變。例如,各種不同的電路,記憶體,及有關之元件可被實施於有關的許多不同的方法中,其可包括一個或多個步驟,可程式迴路,含有指令的處理器-可讀媒體,這些指令可使電腦執行步驟,及其它。本發明之特徵陳述於下面的申請專利範圍中。
300、900、1000、1100...裝置
302...輸入影像信號接受器
304...向下定標器
306、1030、1124...列緩衝器
308...塊儲存控制器
310、1116、1812...SDRAM控制器
312...SDRAM記憶體
314、914、1014、1802...同步脈衝器
316、916、1016、1108...映射器
318、918、1806...塊要求轉換器
320、920、1114、1814...貯存器
322...引擎
324、1024...移位暫存器
922、1022...配置器
1102、1126...Y產生器
1104...Y-偏移產生器
1106...Y-偏移加法器
1110...BRC轉換器
1112...塊要求器
1116...指示記憶體
1118...延遲產生器
1120...查詢引擎
1125...Y邏輯
1502...FIFO
1504...BRC貯存器
1800...結構
1804...扭曲引擎
1808...比較器
1810...列延遲
2000...ID表
2002...讀指示器
2004...寫指示器
由本發明各種不同之實施例及有關圖式的詳細說明,可對本發明有更完整的了解,在附圖中:
圖1是DDR2 SDRAM中連續行之存取的定時圖,各種不同實施例可應用其來存取含有鄰接行中之資料元素的次陣列;
圖2是DDR2 SDRAM中連續列之存取的定時圖,各種不同實施例可應用其來存取含有鄰接列中之資料元素的次陣列;
圖3是第一個資料處理裝置的示意圖,其係依據本發明之一個或更多的實施例;
圖4是SDRAM之***排組的裝置的表示,其係依據本發明之一個或更多的實施例;
圖5是一輸出圖像的表示,其係依據本發明之一個或更多的實施例;
圖6是基於列儲存的輸入圖像的表示,其係依據本發明之一個或更多的實施例;
圖7是基於塊基儲存的輸入圖像的表示,其係依據本發明之一個或更多的實施例;
圖8是圖5所示之輸入圖像的90°順時旋轉的輸出圖像的表示,其係依據本發明之一個或更多的實施例;
圖9是第二個資料處理裝置的示意圖,其係依據本發明之一個或更多的實施例;
圖10是第三個資料處理裝置的示意圖,其係依據本發明之一個或更多的實施例;
圖11是第四個資料處理裝置的示意圖,其係依據本發明之一個或更多的實施例;
圖12是圖11所示之第四個資料處理裝置的次裝置的示意圖,其係依據本發明之一個或更多的實施例;
圖13是輸出線的視覺表示,其係依據本發明之一個或更多的實施例;
圖14是輸入線的視覺表示,其係依據本發明之一個或更多的實施例;
圖15是圖11所示用來抗混疊或平滑化之第四個資料處理裝置的次裝置的示意圖,其係依據本發明之另一實施例;
圖16顯示用來將資料儲存在SDRAM中之裝置,其係依據本發明之另一實施例;
圖17顯示本發明之另一實施例之裝置,其中,使用到一內容可定址記憶體(CAM)之增強;
圖18是第五個資料處理裝置的示意圖,其係依據本發明之一個或更多的實施例;
圖19是塊IDs之視覺表示,其係依據本發明之另一實施例;
圖20是ID表的視覺表示,其係依據本發明之另一實施例;
圖21是雙線性***的視覺表示,其係依據本發明之另一實施例;
圖22將鄰接像素儲存在不同的貯存器區域的視覺表示,其係依據本發明之另一實施例;以及
圖23是第六個資料處理裝置的示意圖,其係依據本發明之一個或更多的實施例。
1800...結構
1802...同步脈衝器
1804...扭曲引擎
1806...塊要求轉換器
1808...比較器
1810...列延遲
1812...SDRAM控制器
1814...貯存器
Claims (19)
- 顯示原圖扭曲版本之裝置,其包含:列憶體,其用來將原圖像分割成複數列的像素;一塊儲存控制器,其用來將像素列結合成像素塊,各像素塊含有來自原圖像的鄰接的水平及垂直的像素,其中,各像素塊被儲存在記憶體中連續的記憶位置上;一輸出座標產生器,其用來產生對應於顯示器上輸出像素位置的輸出座標(OX,OY);一扭曲引擎,其用來將輸出座標(OX,OY)映射到扭曲座標(WX,WY),扭曲座標對應於原圖像中之像素位置;一塊要求轉換器,其用來確認記憶位置,含有具有扭曲座標(WX,WY)之像素的像素塊被儲存在這些位置上;一塊要求產生器,其用來要求經確認的像素塊;一記憶體控制器,其用來由記憶體取出要求的像素塊;以及一顯示控制器,其用來將具有扭曲座標(WX,WY)之像素值輸出到對應的輸出像素位置(OX,OY)上以供顯示。
- 如申請專利範圍第1項所述之裝置,其中,記憶體包括SDRAM,各像素塊被儲存在SDRAM相繼的行中,以及,塊要求轉換器,用來確認所要之像素塊被儲存於其中的排組,行,與列之位址。
- 如申請專利範圍第2項所述之裝置,其中,原圖像之鄰接的像素塊被組合成一較大的像素塊,且各較大的像素塊被儲存在相同的SDRAM之列中。
- 如申請專利範圍第1項所述之裝置,另包含-垂直的偏移產生器,其用來:接收輸出座標產生器所產生的輸出座標(OX,OY),並產生複數個偏移輸出座標((OX,OY+1),(OX,OY+2)…),各偏移輸出座標於垂直方向上偏移非偏移輸出座標(OX,OY);以及將輸出座標((OX,OY),(OX,OY+1),(OX,OY+2)…)提供給扭曲引擎。
- 如申請專利範圍第1項所述之裝置,另包含:一移位暫存器,其用來儲存複數個扭曲座標(WX,WY)項,各扭曲座標項具有其個別的資料值(D)的欄位;以及一配置器,其用來對移位暫存器中之扭曲座標與任何被取得之像素塊中之像素的扭曲座標做比較,且,依肯定的比較結果來完成相符的扭曲像素之資料值(D)的欄位。
- 如申請專利範圍第1至5項中任一項所述之裝置,另包含:一ID產生器,其用來接收來自塊要求轉換器之已確認的記憶位置,並由經確認的記憶位置來產生內部的像素塊IDs;一ID延遲列,其用來接收並延遲來自ID產生器之像素塊IDs;以及一查詢引擎,其用來接收來自延遲列之像素IDs並由貯存器取得具有相符的像素塊IDs的像素塊。
- 如申請專利範圍第6項所述之裝置,另包含:一ID表,其用來 儲存不在使用中的像素塊IDs;一讀指示器,其用來指示下一個可取得的可被使用的塊ID值;以及,一寫指示器,其用來指示再循環的塊ID。
- 如申請專利範圍第6項所述之裝置,另包含:一塊ID比較器,其用來接收來自塊要求轉換器之經確認的記憶位置,將它們與新近的經確認的塊的記憶位置做比較,如果發現相符合,則再使用具有相符合的記憶位置的像素塊的塊ID,如果發現不符合,則對經確認的像素使用新的塊ID。
- 如申請專利範圍第1項所述之裝置,另包含:一塊要求貯存器,其用來儲存新近的像素塊的取用要求,藉此,若像素塊剛已被要求過或是已由記憶體取得,則記憶控制器不會取得被要求的像素塊。
- 如申請專利範圍第6項所述之裝置,另包含:一塊要求貯存器,其用來儲存新近的像素塊的取用要求,藉此,若像素塊剛已被要求過或是已由記憶體取得,則記憶控制器不會取得被要求的像素塊。
- 如申請專利範圍第10項所述之裝置,其中,記憶控制器被用來將取得的像素塊儲存在貯存器中。
- 如申請專利範圍第10項所述之裝置,其中,記憶體控制器被用來將像素塊中之鄰接的像素儲存在貯存器不同的區域中。
- 如申請專利範圍第11項所述之裝置,其中,貯存器包含內容-可定址記憶體。
- 如申請專利範圍第6項所述之裝置,其中,輸出座標產生器含有一同步脈衝器,用來以輸出像素之頻率產生輸出座標。
- 如申請專利範圍第1項所述之裝置,包含:一***器,其用來在扭曲引擎將輸出座標(OX,OY)映射到非整數扭曲座標(WX,WY)時執行雙線性***,且,其中:塊要求轉換器,被用來確認原圖像中像素之扭曲座標(WX,WY),這些扭曲座標對非整數扭曲像素座標(WX,WY)有貢獻,並確認含有貢獻像素之像素塊被儲存於其中的記憶位置;塊要求產生器,其用來要求經確認的像素塊;記憶體控制器,其用來由記憶體取得被要求的像素塊;配置器,被用來決定與非整數扭曲座標(WX,WY)對應的輸出像素(OX,OY)的***輸出值;以及顯示控制器,被用來將***值輸出到對應的輸出像素位置(OX,OY)上以供顯示。
- 如申請專利範圍第6項所述之裝置,包含:一***器,其用來在扭曲引擎將輸出座標(OX,OY)映射到非整數扭曲座標(WX,WY)時執行雙線性***,且,其中:塊要求轉換器,被用來確認原圖像中像素之扭曲座標(WX,WY),這些扭曲座標對非整數扭曲像素座標(WX,WY)有貢獻,並確認含有貢獻像素之像素塊被儲存於其中的記憶位置;塊要求產生器,其用來要求經確認的像素塊;記憶體控制器,其用來由記憶體取得被要求的像素塊; 配置器,被用來決定與非整數扭曲座標(WX,WY)對應的輸出像素(OX,OY)的***輸出值;以及顯示控制器,被用來將***值輸出到對應的輸出像素位置(OX,OY)上以供顯示。
- 一種顯示原圖像之扭曲版本的方法,該方法包含:將原圖像分割成複數列之像素;將列像素組合成像素塊,各像素塊含有原圖像之鄰接的水平及垂直的像素,將各像素塊儲存在記憶體中相繼的記憶位置上;產生對應於顯示器上輸出像素位置的輸出座標(OX,OY);將輸出座標(OX,OY)映射到扭曲座標(WX,WY),扭曲座標對應於原圖像中之像素位置;確認含有扭曲座標(WX,WY)之像素的像素塊被儲存於其中的記憶位置;要求經確認的像素塊;由記憶體取得被要求的像素塊;以及將具有扭曲座標(WX,WY)之像素值輸出到對應的輸出像素位置(OX,OY)上以供顯示。
- 一種含有指令之電腦程式,當其被執行時,可使資料處理裝置實施依據前面申請專利範圍第1項所述之方法,一含有該電腦之電腦-可讀的媒體或是攜帶該電腦程式之信號。
- 一種含有指令之電腦程式,當其被執行時,可使資料處理裝置實施依據前面申請專利範圍第6項所述之方法,一含有該電腦之電腦-可讀的媒體或是攜帶該電腦程式之信號。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0911045A GB2470611B (en) | 2009-06-25 | 2009-06-25 | Apparatus and method for processing data |
US12/604,700 US8482573B2 (en) | 2009-06-25 | 2009-10-23 | Apparatus and method for processing data |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201119369A TW201119369A (en) | 2011-06-01 |
TWI430655B true TWI430655B (zh) | 2014-03-11 |
Family
ID=41008279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099118609A TWI430655B (zh) | 2009-06-25 | 2010-06-08 | 一種顯示原圖扭曲版本之裝置及方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8482573B2 (zh) |
EP (1) | EP2446413B1 (zh) |
JP (1) | JP5663009B2 (zh) |
KR (1) | KR101386767B1 (zh) |
CN (1) | CN102460503B (zh) |
GB (1) | GB2470611B (zh) |
HK (1) | HK1145559A1 (zh) |
TW (1) | TWI430655B (zh) |
WO (1) | WO2010149946A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8675994B1 (en) | 2010-06-17 | 2014-03-18 | Ambarella, Inc. | High performance warp correction in two-dimensional images |
KR20120066305A (ko) * | 2010-12-14 | 2012-06-22 | 한국전자통신연구원 | 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법 |
US9116790B2 (en) * | 2011-08-04 | 2015-08-25 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US9071771B1 (en) * | 2012-07-10 | 2015-06-30 | Rawles Llc | Raster reordering in laser projection systems |
CN102810294A (zh) * | 2012-08-01 | 2012-12-05 | 京东方科技集团股份有限公司 | 一种显示方法、装置及*** |
CN103135096A (zh) * | 2013-01-11 | 2013-06-05 | 北京理工大学 | 一种合成孔径雷达成像处理转置存储方法和数据访问方法 |
CN104008559A (zh) * | 2013-02-27 | 2014-08-27 | 腾讯科技(深圳)有限公司 | 图像处理方法及装置 |
WO2015114387A1 (en) | 2014-02-03 | 2015-08-06 | Tv One Limited | Systems and methods for configuring a video wall |
JP6427961B2 (ja) * | 2014-05-30 | 2018-11-28 | セイコーエプソン株式会社 | 画像処理装置、表示装置、画像処理方法およびプログラム |
JP2016134005A (ja) * | 2015-01-20 | 2016-07-25 | オリンパス株式会社 | 画像処理装置 |
US9811932B2 (en) * | 2015-04-17 | 2017-11-07 | Nxp Usa, Inc. | Display controller, heads-up image display system and method thereof |
US9990690B2 (en) * | 2015-09-21 | 2018-06-05 | Qualcomm Incorporated | Efficient display processing with pre-fetching |
US10037190B2 (en) | 2016-03-24 | 2018-07-31 | International Business Machines Corporation | Transformation on input operands to reduce hardware overhead for implementing addition |
JP6902843B2 (ja) * | 2016-10-07 | 2021-07-14 | キヤノン株式会社 | 画像処理装置および制御方法 |
KR102509091B1 (ko) | 2016-11-24 | 2023-03-13 | 한화테크윈 주식회사 | 영상 보정 장치 및 방법 |
WO2018142159A1 (en) | 2017-02-03 | 2018-08-09 | Tv One Limited | Method of video transmission and display |
US10249023B2 (en) * | 2017-04-27 | 2019-04-02 | Apple Inc. | Patch warper circuit for image processing |
CN111052742A (zh) * | 2017-09-30 | 2020-04-21 | 深圳市大疆创新科技有限公司 | 图像处理 |
US11403810B2 (en) | 2018-11-02 | 2022-08-02 | Facebook Technologies, Llc. | Display engine for post-rendering processing |
US11023152B2 (en) | 2019-07-12 | 2021-06-01 | Arm Limited | Methods and apparatus for storing data in memory in data processing systems |
CN110458163B (zh) * | 2019-08-06 | 2022-04-22 | 南京地平线机器人技术有限公司 | 处理图像的多个感兴趣区域数据的装置和方法 |
US11508031B2 (en) | 2020-12-16 | 2022-11-22 | Samsung Electronics Co., Ltd. | Warping data |
CN114845091B (zh) * | 2021-02-01 | 2023-11-10 | 扬智科技股份有限公司 | 投影装置与其梯形校正方法 |
CN112862725B (zh) * | 2021-03-12 | 2023-10-27 | 上海壁仞智能科技有限公司 | 用于计算的方法、计算设备和计算机可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59108370U (ja) * | 1983-01-12 | 1984-07-21 | 富士ゼロックス株式会社 | 画像デ−タの縦横変換装置 |
JPS6271990A (ja) * | 1985-09-26 | 1987-04-02 | 三菱電機株式会社 | 画像情報記憶方法 |
JPH07210666A (ja) * | 1994-01-21 | 1995-08-11 | Kyocera Corp | 画像形成装置 |
US5548709A (en) | 1994-03-07 | 1996-08-20 | Silicon Graphics, Inc. | Apparatus and method for integrating texture memory and interpolation logic in a computer system |
GB9501832D0 (en) * | 1995-01-31 | 1995-03-22 | Videologic Ltd | Texturing and shading of 3-d images |
GB2305052B (en) | 1995-09-08 | 2000-04-05 | Quantel Ltd | An image processing system |
JP3104868B2 (ja) * | 1997-11-25 | 2000-10-30 | 富士ゼロックス株式会社 | 画像処理装置 |
US6661427B1 (en) * | 1998-11-09 | 2003-12-09 | Broadcom Corporation | Graphics display system with video scaler |
US7050063B1 (en) * | 1999-02-11 | 2006-05-23 | Intel Corporation | 3-D rendering texture caching scheme |
US6577776B1 (en) * | 1999-02-24 | 2003-06-10 | Media 100, Inc. | Transforming video images |
US6717577B1 (en) * | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
US6873329B2 (en) * | 2002-07-05 | 2005-03-29 | Spatial Data Technologies, Inc. | System and method for caching and rendering images |
US7196687B2 (en) * | 2002-11-05 | 2007-03-27 | 3M Innovative Properties Company | Swept illumination to reduce LCD lag in front and rear projection displays |
JP4381778B2 (ja) | 2003-11-17 | 2009-12-09 | パナソニック株式会社 | テクスチャ処理装置 |
-
2009
- 2009-06-25 GB GB0911045A patent/GB2470611B/en active Active
- 2009-10-23 US US12/604,700 patent/US8482573B2/en active Active
-
2010
- 2010-06-04 WO PCT/GB2010/001089 patent/WO2010149946A1/en active Application Filing
- 2010-06-04 CN CN201080028663.4A patent/CN102460503B/zh not_active Expired - Fee Related
- 2010-06-04 JP JP2012516837A patent/JP5663009B2/ja not_active Expired - Fee Related
- 2010-06-04 EP EP10727786.5A patent/EP2446413B1/en active Active
- 2010-06-04 KR KR1020117029902A patent/KR101386767B1/ko active IP Right Grant
- 2010-06-08 TW TW099118609A patent/TWI430655B/zh not_active IP Right Cessation
- 2010-12-15 HK HK10111681.9A patent/HK1145559A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HK1145559A1 (en) | 2011-04-21 |
EP2446413B1 (en) | 2015-08-12 |
KR20120049851A (ko) | 2012-05-17 |
EP2446413A1 (en) | 2012-05-02 |
CN102460503B (zh) | 2015-04-29 |
US20100328329A1 (en) | 2010-12-30 |
JP5663009B2 (ja) | 2015-02-04 |
US8482573B2 (en) | 2013-07-09 |
TW201119369A (en) | 2011-06-01 |
KR101386767B1 (ko) | 2014-04-21 |
CN102460503A (zh) | 2012-05-16 |
GB2470611A (en) | 2010-12-01 |
JP2012530953A (ja) | 2012-12-06 |
GB0911045D0 (en) | 2009-08-12 |
WO2010149946A1 (en) | 2010-12-29 |
GB2470611B (en) | 2011-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI430655B (zh) | 一種顯示原圖扭曲版本之裝置及方法 | |
US5083119A (en) | State machine controlled video processor | |
US7580042B2 (en) | Systems and methods for storing and fetching texture data using bank interleaving | |
JP2012530953A5 (ja) | 原画像をワープさせて表示する装置、その方法、そのコンピュータプログラムおよびそれを記録した記録媒体 | |
JP2011107965A (ja) | 画像描画装置、画像描画方法およびプログラム | |
US6667930B1 (en) | System and method for optimizing performance in a four-bank SDRAM | |
US20100110230A1 (en) | Buffer memory for rotating image, image capture device and display device including the same | |
US20050052441A1 (en) | Display controller | |
US6819337B2 (en) | Initializing a series of video routers that employ source-synchronous signaling | |
US9489139B2 (en) | Command processing apparatus, method and integrated circuit apparatus | |
KR19990008388A (ko) | 연산기능을 갖는 반도체메모리 및 그것을 사용한 처리장치 | |
US7573482B2 (en) | Method for reducing memory consumption when carrying out edge enhancement in multiple beam pixel apparatus | |
JP2005190487A (ja) | グラフィックスプロセッサ | |
US8416252B2 (en) | Image processing apparatus and memory access method thereof | |
Belokurov | Implementation of affine transform for image rotation using a HLS language | |
TWI616867B (zh) | 視訊幀轉置裝置與方法 | |
JP2002229933A (ja) | 映像データ変換装置、映像処理システムおよび映像データ変換方法 | |
JPH03196376A (ja) | 全フイールド記憶装置から複数の隣接記憶位置に並列にアクセスするアドレス指定機構 | |
JP4835872B2 (ja) | 画像処理装置 | |
CN118092841A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
JPH06324935A (ja) | アドレス発生器およびアドレス発生システム | |
JP2005196361A (ja) | データ格納装置、データ格納制御装置、データ格納制御方法及びデータ格納制御プログラム | |
JP5605225B2 (ja) | メモリ制御装置、メモリマッピング方法、及び、プログラム | |
JP2013196103A (ja) | 画像処理装置及び画像処理方法 | |
JP2002117397A (ja) | カラーデータの画像メモリへのアクセス方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |