CN102460503B - 显示源图像的变形版本的设备和方法 - Google Patents
显示源图像的变形版本的设备和方法 Download PDFInfo
- Publication number
- CN102460503B CN102460503B CN201080028663.4A CN201080028663A CN102460503B CN 102460503 B CN102460503 B CN 102460503B CN 201080028663 A CN201080028663 A CN 201080028663A CN 102460503 B CN102460503 B CN 102460503B
- Authority
- CN
- China
- Prior art keywords
- block
- pixel
- pixels
- coordinate
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 47
- 230000015654 memory Effects 0.000 claims abstract description 178
- 230000008878 coupling Effects 0.000 claims description 15
- 238000010168 coupling process Methods 0.000 claims description 15
- 238000005859 coupling reaction Methods 0.000 claims description 15
- 230000013011 mating Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 28
- 230000000875 corresponding effect Effects 0.000 description 27
- 238000012545 processing Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 18
- 230000008901 benefit Effects 0.000 description 13
- 238000013507 mapping Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000003638 chemical reducing agent Substances 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 235000017060 Arachis glabrata Nutrition 0.000 description 1
- 241001553178 Arachis glabrata Species 0.000 description 1
- 235000010777 Arachis hypogaea Nutrition 0.000 description 1
- 235000018262 Arachis monticola Nutrition 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 235000020232 peanut Nutrition 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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)
Abstract
处理输入视频数据。根据模范实施例,根据组成视频的相应图像的像素块存储以像素行呈现的视频数据。当从存储器读取特定像素时,检索(例如,以单纯读)像素块,便于(同时)对相邻行或列中的像素的存取,而不需要存取全部行和列。
Description
技术领域
本发明涉及显示源图像的变形版本的设备和方法。
背景技术
由计算机或专用视频处理硬件处理的视频可以看作单独的静止图像的序列。每个图像由多个像素形成,所述多个像素典型地以矩形阵列或矩阵布置。可以通过识别任意给定像素位于图像中哪个水平线(或行)和哪个垂直线(或列)上来确定该像素在图像中的坐标。
大多数视频缩放器(scaler)架构以组成该图像的单独的像素到达的次序将输入视频信号存储到存储器中。因此,存储组成视频的第一图像的整个最上面一行,从该行的最左面像素移动到最右面像素。然后,将这些像素存储在存储器中作为一个单元。对于第二行等重复该操作,直到已经存储了组成图像的所有像素为止。对于组成视频的所有图像重复该操作。
同步动态随机存取存储器(SDRAM)芯片特别适于以该方式存储视频数据。在SDRAM中,以库(bank)、行和列存储数据。可视化SDRAM芯片的布置的一种方式是想象SDRAM存储器中的每个库是具有大量抽屉的行和列的大型档案柜。每个抽屉存储某个量的信息,并且可以通过指定其位于特定档案柜的特定行和列中来识别。
为避免在用作到SDRAM中的地址的行和列与组成图像的行和列之间的混淆,在这里通常将后者分别称为“水平线”和“垂直线”。
在一个实现方式中,每个像素包括二十四位信息。这意味着每个像素可以表示224=16,777,216种颜色值之一。48位宽数据总线可以存储48位,这等同于相当于两个像素的信息,因为每个像素是24位长。该二像素信息段通常被称为“数据字”。双倍数据速率同步动态随机存取存储器(DDR2SDRAM)芯片每时钟周期传送两个数据字。这意味着每个时钟周期可以存储相当于四个像素的信息。因此,占用四个时钟周期来存储十六个像素,其等同于八个数据字。
图1是从Micron 256Mb DDR2数据表取得的时序图,该数据表可从总部在80002,Federal Way,P. O.Box 6,Boise,ID 83707-006,USA的MicronTechnology Inc获得,或经由他们在http://download.micron.com/pdf/datasheets/dram/ddr2/256MbDDR2.pdf的网站获得。
图1示出典型DDR2SDRAM中的顺序列存取。顺序列存取意味着存取SDRAM存储器中特定行中的任意列。在时间T0,发布READ(读)命令以从SDRAM存储器中的特定库中的特定行读取列n。在之后的时间T2,发布另外的READ命令以读取相同库和行的不同列b。在时间T3,返回列n中包括的所有数据。如在图1中可以看到的那样,在从列n返回数据之前在T0和T3之间存在三个时钟周期的延迟。这些对SDRAM的READ命令中的每一个导致在两个时钟周期中从SDRAM的相关列中检索到的四个数据字或“DQ”。因此,数据传送的两个周期检索四个DQ,这等同于图像数据的八个像素。
在实际检索到前四个DQ之前,在T2发布第二REAM命令。这被称为“流水线操作”,并保证即使没有继续发布READ命令,在从一行存取的数据流中也没有间隙。
从时间T3起,每个时钟周期可以检索两个数据字。这一点意味着一旦打开相同行,从该行的不同列读取两个数据字就占用一个时钟周期。
图2是从相同Micro 256Mb DDR2数据表得到的时序图。图2示出了典型DDR2SDRAM中的顺序行存取。图2不同于图1在于,代替顺序存取相同行中的不同列,顺序存取不同行。例如,顺序行存取需要90°旋转。
通过在时间T1发布ACT(“激活”)命令来激活要存取的第一行(这里是行A)。然后,通过在时间T4发布READ命令来读取行A中的所需列(列n)。如果需要从不同行读取数据,则无论其是否也来自相应列,行A必须首先“预充电”或关闭。在时间T6发布PRE命令,并且在三个时钟周期(tRP)之后,关闭行A且可以在时间T9发布另一ACT命令。
与顺序读取一行的顺序列相对比,因为在可以读取下一行之前必须打开和关闭每个行,所以从不同行顺序读取占用八个时钟周期。总而言之,读取顺序行比读取相同行中的顺序列慢八倍的时间。
在一些数据存储布置,特别是图像处理布置中,需要频繁的顺序行存取以处理数据,这导致长的数据处理时间和***资源的密集使用。图像变形需要随机行存取,由此将输入图像映射到非矩形形状。基于视频的数据存取的这些和其它特性已经对视频数据的处理和使用提出了挑战。
发明内容
以多个实施例和应用示范了本发明,其中一些总结如下。
本发明的各种实施例解决了包括如上所述的那些问题,以及包括特别适于处理视频或图像数据的其它问题。在各种实施例中,本发明解决了当需要对行的顺序存取时数据的处理负担。
根据本发明的第一方面,提供用于显示源图像的变形版本的设备,包括:线存储器,布置为将源图像划分为来自源图像的多个像素行;块贮存控制器,布置为将像素行组合为像素块,每个像素块包括来自源图像的相邻水平和垂直像素,其中每个像素块存储在存储器中的顺序存储位置(sequential memorylocation)中;输出坐标发生器,布置为产生与显示器上的输出像素位置对应的输出坐标(OX,OY);变形引擎,布置为将输出坐标(OX,OY)映射到变形坐标(WX,WY),变形坐标对应于源图像中的像素位置;块请求转换器,布置为识别在其中存储包含具有变形坐标(WX,WY)的像素的像素块的存储位置;块请求发生器,布置为请求识别出的像素块;存储控制器,布置为从存储器检索请求的像素块;和显示器控制器,布置为在相应输出像素位置(OX,OY)上输出具有变形坐标(WX,WY)的像素的值用于显示。
该设备允许通过将阵列划分为块而更有效地使用处理能力。这可以特别有益于需要数据的映射或变换的情况。术语“块”在这里用于指与位于相同水平或垂直线的全部像素相对比,位于输入图像中相邻水平和垂直线中的相邻像素的任意组或子单元。例如,为了方便,块可以是矩形阵列,或者简单的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)的字段以及组装器(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的使用。
该设备还可以包括块请求高速缓存,布置为存储新近的像素块检索请求,由此存储控制器布置为如果其刚刚请求或从存储器检索了请求的像素块,则不检索该请求的像素块。以该方式最小化不需要的存储器存取。
存储控制器可布置为在高速缓存中存储检索到的像素块。以该方式最小化不需要的存储器存取。
存储控制器可布置为在高速缓存的不同区域中存储像素块中的相邻像素。这便利双线性内插。
该高速缓存可以包括内容可寻址存储器。这允许在像素的读回期间使用更少的存储器。
输出坐标发生器可以包括同步脉冲发生器,布置为以输出像素频率产生输出坐标。
该设备还可以包括内插器,布置为当变形引擎将输出坐标(OX,OY)映射到非整数变形坐标(WX,WY)时执行双线性内插,并且块请求转换器可布置为识别在源图像中对非整数变形像素坐标(WX,WY)作贡献的像素的变形坐标(WX,WY),并识别其中存储包括贡献像素的像素块的存储位置,块请求发生器可布置为请求识别出的像素块,存储控制器可布置为从存储器检索请求的像素块,内插器可布置为确定与非整数变形坐标(WX,WY)对应的输出像素(OX,OY)的内插输出值,并且显示控制器可布置为在相应输出像素位置(OX,OY)上输出内插值用于显示。这便利提供更精确的输出的双线性内插。
根据本发明的第二方面,提供用于显示源图像的变形版本的方法,该方法包括:将源图像划分为来自源图像的多个像素行;将像素行组合为像素块,每个像素块包括来自源图像的相邻水平和垂直像素,并且在存储器中的顺序存储位置上存储每个像素块;产生与显示器上的输出像素位置对应的输出坐标(OX,OY);将输出坐标(OX,OY)映射到变形坐标(WX,WY),变形坐标对应于源图像中的像素位置;识别在其中存储包含具有变形坐标(WX,WY)的像素的像素块的存储位置;请求识别出的像素块;从存储器检索请求的像素块;和在相应输出像素位置(OX,OY)上输出具有变形坐标(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存储器的顺序列中将来自该四条线的像素存储为十六个像素的4×4块的块贮存控制器308。这与其中没有这种块贮存控制器308的存储图像的常规方法相对。然后,将像素块发送到SDRAM控制器310,用于在特定库中以及在SDRAM存储器312中该库的特定行和多个列地址处的贮存。
为了存取图像数据的存储块用于显示,布置300包括同步脉冲发生器(“SPG”)314。SPG以水平和垂直脉冲的形式产生标准识视频时序信号。其用于产生要在屏幕上显示的输出图像中的像素的输出X和Y坐标或位置(OX,OY)。换句话说,SPG产生与显示屏幕上的左上角像素(OX,OY)=(0,0)对应的脉冲,然后产生与紧接在其右边的像素(OX,OY)=(1,0)对应的脉冲并以相同方式扫描到屏幕上右下角像素。用于识别显示屏幕上的像素位置的坐标(OX,OY)在这里被称为“输出”坐标或位置。这与现在将描述的输入或源图像中的“初始”或“变形”坐标或位置(WX,WY)相对。注意到,即使输出图像也可以被称为“变形”,术语“变形”也用于指初始图像而不是输出图像。这是因为输出坐标(OX,OY)被变换或映射回对该输出像素(OX,OY)作贡献的相同图像中的坐标(WX,WY)。
将输出坐标(显示坐标(OX,OY))馈送到映射器或变形映射引擎316中。映射器316负责确定输出视频信号中的哪些像素对应于输入视频中的哪些像素,即,需要检索来自输入图像中的哪些像素来在显示器上显示输出图像。为了这样做,映射器316可以使用数学变换来将输出坐标(OX,OY)映射到变形坐标(WX,WY)。替代地,映射器316可使用查找表来产生变形坐标(WX,WY)。在后一方法中,例如,在数学变换难以或不能定义的情况下,该表可以指示输出(OX,OY)和初始(WX,WY)像素之间的对应或映射关系。这可能是映射包括“混杂(jumbling up)”初始图像的情况。
在常规视频缩放器中,因为以来自输入图像的水平像素线为单位存储像素的事实限制了对存储的像素的所有存取,所以复杂映射不是很有效。容易可用唯一“映射”是水平或垂直“翻转”。水平翻转(或关于垂直轴的旋转)是在常规缩放器的延伸(remit)内,因为输出图像的第一水平线中的所有像素处于初始图像的第一水平线内,仅仅处于相反的顺序。类似地,垂直翻转是在常规缩放器的延伸内,因为输出图像的第一水平线中的所有像素处于输入图像中的像素的底部水平线中相应的位置。当然,常规缩放器适于“正常”输入以输出存在受限数学变换或查找表使用的映射,并且缩放器仅输出与输入到其的坐标(WX,WY)相同的坐标(OX,OY),或将简单的缩放因子应用于输出坐标(OX,OY)以确定初始或变形坐标(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与移位寄存器324通信以组装输出图像的像素。采用移位寄存器324以存储从映射器316输出、将从SDRAM存储器312检索的初始或变形坐标(WX,WY)。移位寄存器324是任意长度的,以允许来自输入视频的所需初始像素通过映射器316的相关初始坐标(WX,WY)的最初计算与从SDRAM存储器312实际接收到该像素之间的延迟。该延迟将处于请求了相关初始像素之后的某个半随机点上。在正在请求的特定像素或块与实际从SDRAM存储器312检索到的那个块之间存在较长延迟的情况下,可以使用更长的移位寄存器。
当由映射器316产生新的变形坐标(WX,WY)时,移位寄存器324向前(along)移位。移位寄存器324包括用于像素值或那种像素的数据值(D)的字段,其最初是空的,因为那个像素的值不是已知的。当完成了块请求且从SDRAM存储器312检索了像素的块时,将块与每个移位寄存器项比较以查看是否块中的任意像素信息可用于填充移位寄存器324中的任意空项。这将是检索到的块中像素的变形坐标(WX,WY)是否匹配在移位寄存器324中已经存在的另一变形坐标(WX,WY)的情况。因为在每个块中检索几个像素(在该示例中是十六个),所以如果已经产生了多个移位寄存器位置,则可以从检索到的单一块填充多个移位寄存器位置。
当发现匹配时,换句话说,当移位寄存器324中的变形坐标(WX,WY)对应于从SDRAM存储器312检索到的块中的相同像素(WX,WY)时,在相应的移位寄存器324数据位置(WX,WY)中存储相应像素数据D。
利用移位寄存器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示出十六个像素或数据元素{a00、a11、...、a33}的四乘四阵列,其共同表示来自输入视频信号的初始图像。每个数据元素a00、a11、...、a33对应于十六像素初始图像的一个像素,并且具有相关联的值D00、D11、...、D33。数据元素或像素aij处于初始图像的第i行和第j列(j=0、1、...)。实际上,大多数图像包含多于十六个像素,但是这里使用少量像素来帮助本发明的最初理解。
图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示出通过将阵列划分为四个二乘二的子单元或块{a00、a01、a10、a11}、{a02、a03、a12、a13}、{a20、a21、a30、a31}、{a22、a23、a32、a33}来存储阵列的改进方式。每个子单元包含四个像素,其是与图6的方法相同的数目,但是存储的像素的特定划分是不同的。
图8示出作为以顺时针方向旋转90°(或π/2弧度)的图5的初始图像的变形或映射版本的输出图像。使用与上述相同的术语,图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)=(0,0)开始,沿着最上面的水平线(OX,OY)=(1,0)、(2,0)、(3,0)水平进行,然后移动到第二水平线(OX,OY)=(0,1)中最左边的像素,直到作为最右下方像素(OX,OY)=(3,3)的最后像素的输出坐标被呈现(render)并产生为止,从SPG 314(图3)输出用于显示的像素的输出坐标(OX,OY)。
输出图像中的初始像素坐标(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)=(1,0)。该输出坐标被馈送到映射器316(图3),该映射器316将其翻译为变形坐标(WX,WY)=(2,0)。这意味着需要像素a20。该像素也位于与像素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)顺序检索组成初始图像的全部四条水平像素线。
然后,为了呈现输出图像中的第二水平线,需要从SDRAM存储器312(图3)检索像素a31、a21、a11、a01。再一次参考图6,它们位于SDRAM存储器312(图3)中的不同位置。
从该示例可以看到,基于块的处理方法使得执行90°顺时针旋转两次与常规基于线的方法一样快。该两倍的增加意味着仅需要常规存储器存取速度的一半。
在经历90°顺时针旋转的包括256个像素的十六乘十六图像(未示出)的情况下,常规基于线的方法将需要在可以呈现输出图像的第一水平线之前从SDRAM存储器312(图3)读取十六个像素的全部十六条水平线(的第一像素)。总计,在完全组装输出图像之前,需要存取256个存储位置。
然而,如果将初始图像存储为每个包括十六个像素的十六个四乘四的块,则仅需要检索四个像素块(包含初始图像的第一垂直线的像素的块)以组装输出图像的第一水平线。将需要再次检索该同样四个块以组装输出图像的第二水平线。总计,在完全组装输出图像之前将仅需要检索64个块。
在该示例中,意味着基于块的方法比常规基于线的存储方法快四倍。事实上,常规情况下,将占用十个时钟周期来检索十六个像素的线以仅使用来自该线的一个像素,因为(参考图2)占用八个时钟周期来检索四个DQ(在T1与T9之间)且将需要另外两个时钟周期(在T9与T11之间)来检索另外的四个DQ,以便已经检索等同于十六个像素的八个DQ。
在基于块的方法中,占用十个时钟周期来检索十六个像素的整个块,其中将基本上同时使用其四个像素。
虽然以块为单位存储像素的优点是块内像素的顺序读取在水平或对角进行时与垂直进行时占用一样长的时间,但是可以看到,在该方法中存在一定程度的低效率。这是因为对于大多数视频处理,仅顺序存取来自相同行的像素,这意味着将可能不使用十六个像素中的十二个。然而,在需要某种形式的映射的情况下,基于块的方法相对来说更有效。
上述布置300适于在具有整数坐标值的变形位置(WX,WY)处检索单独像素。然而,通常例如在以非寻常角度旋转时,映射器316(图3)将给出初始输入图像中的像素的变形坐标位置(WX,WY)的非整数值。
图9示出可用于这种情况的改进型布置900。图9类似于图5,但是为了简明仅示出了布置900的存取侧。除前缀“9”而不是“3”外,类似组件被赋予了与图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),可以使用来自初始图像中多个相邻整数像素位置的贡献(contribution)以产生输出图像中的相应像素值。可以通过对初始图像中每个相关相邻像素的贡献进行加权并将各个贡献加在一起来产生这些贡献。
例如,如果请求初始图像中的非整数变形坐标(WX,WY)=(0.5,2),好像可能是当输出像素位置是(OX,OY)=(2,1)时正在将初始图像垂直地放大二倍的情况,与来自在变形位置(WX,WY)=(2,1)处的像素的50%的贡献相加的来自在变形位置(WX,WY)=(2,0)处的像素的50%的贡献可用于给出相关输出像素值。这给出了在初始图像中的两个可用整数位置之间的内插像素。因此,使用图5的术语,如果在垂直方向上将该输入图像放大二倍(使得输出图像是八乘四阵列),则在输出图像中在(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活动性的可能性。
为了迎合非整数位置布置,在移位寄存器924和用于输出视频926的显示器之间提供内插器928。内插器928确定加权因子,将来自每个贡献像素的像素值信息D乘以其各自的加权因子,然后执行这些值的总和,以获得最终的输出像素值。
在上述描述中,映射器316、916对于由SPG产生的每个输出像素位置(OX,OY),产生单一变形像素位置(WX,WY)(无论是整数还是非整数位置)。然而,参考图10,修改的映射器1016也可以布置为响应于正在由SPG产生的单一输出像素位置(OX,OY),对于输出图像中的下一条或多条线产生初始图像中的变形坐标(WX,WY)。因为从存储器检索到的每个像素块包含来自初始图像的几条像素线(在该示例中为四条),可以基本上同时组装多条输出线。这是因为输出图像中的后续线将具有相应的初始位置(W X,W Y),其在一条输出线与下一条之间仅略微不同,这使得很可能它们位于存储器中的相同像素块中。
因此,如果SPG 1014产生输出坐标(OX,OY),则映射器1016可以对于该输出坐标(OX,OY)产生相应的变形坐标(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”’)。
在使用四乘四像素块的示例中,可以由如图10所示的映射器1016与相应地扩展的组装器1022和移位寄存器1024一起同时产生四条水平输出线。因此,从SDRAM存储器(图10中未示出)检索到的四乘四像素的单一块可以用于一次填充全部四条输出线OY,OY+1,OY+2,OY+3的像素数据。
在移位寄存器1024之后提供另外的线缓冲器1030以保证当准备输出视频信号时可以以正确的次序处理另外的线。
该布置将大大地降低产生输出信号或图像所需要的SDRAM负荷。然而,这造成了增加的电路复杂性的代价,因为需要四个变形或映射引擎1016。
虽然上述布置300、900和1000大大地降低了某些图像映射的处理时间,但是组装器322、922和1022可以由下面将描述的替代布置代替。
图11和图12示出用于处理图像数据的替代布置1100。输出X,Y产生器1102以SDRAM频率操作以产生输出坐标(OX,OY),这是以从最左上方像素到紧接在其右边的像素扫描并行进经过所有水平线直到已经产生最右下方像素的坐标为止的常规方式。尽管SPG 314、914和1014以显示器的频率,即输出像素频率操作,但输出X,Y发生器1102以SDRAM频率运行。
Y偏移发生器1104对于输出图像中预定数目的水平坐标线产生Y偏移。在该示例中,预定数目是四。因此,Y偏移发生器1104产生与四条水平线对应的Y偏移号0、1、2和3。Y偏移发生器1104提供偏移值给从X,Y发生器1102接收单一输出坐标(OX,OY)的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,一旦已经由映射器1108产生了初始坐标(WX,WY),则将其传递到BRC转换器1110。BRC转换器1110将每个初始或变形坐标(WX,WY)转换为SDRAM存储器中的库、行、列和偏移地址。换句话说,库、行、列地址指向包含所需像素的块位于其中的SDRAM存储器的特定库中的行和列位置。一旦存取了特定库中的行和列,就可以检索十六个像素块用于处理。偏移值指示该特定块中的特定像素。因此,像素的四乘四的块的偏移值将具有在零和十五之间的值。优选地使用零和十五之间的值,而不是一和十六之间的值,因为十五可以由四位表示,而十六需要五位。
因为在SDRAM存储器中的每个库中可以有大量行和列,例如每个库中8192个行和128个列,所以可能需要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,并在大型线缓冲器存储器1124中存储检索到的值。在该示例中,存在可以写入信息的至少四个线缓冲器1124。检索到的数据值可经历如上所述的内插。已经由位于布置1100的输出坐标(OX,OY)和变形坐标(WX,WY)产生部分1102、1104、1106与线缓冲器1124之间的延迟器1122保持延迟的输出像素坐标(OX,OY)。延迟的输出坐标(OX,OY)用作在线缓冲器1124中哪里存储数据的指针。
在布置1100的像素时钟侧上,以输出像素频率计时且对输出位置(OX,OY)正常计数而不是增大用于条的Y偏移的另一输出X,Y发生器1124从线缓冲器1124读出像素,并发送以用于进一步的使用。
像素时钟侧和SDRAM时钟侧需要部分同步,以便刚好在正在存取之前填充线缓冲器1124。可以使用双缓冲器方案来保证在像素时钟侧正在存取前一线时,SDRAM时钟侧存取下一数据线。换句话说,SDRAM和像素时钟逻辑需要同步,以便像素侧输出X,Y逻辑1125从线缓冲器1124的另一半读取时,SDRAM侧输出X,Y发生器1102写到线缓冲器1124的一半。然后交换线缓冲器1124的这两个半部分,形成单一双缓冲器***以避免对线缓冲器1124的写超越(overtake)对其的读的情况。
还可以使用块请求器-延迟-高速缓存布置1112、1114、1118、1120(在图11中以图案背景标记)的多个实例来实现输出图像的抗混叠(anti-aliasing)或平滑。从输出坐标(OX,OY)的小数部分创建的数据可用于引入将合并在一起的额外变形坐标(WX,WY)。块请求器1112将需要多对一先入先出(FIFO)1502(参看图15),以便仅需要单一BRC高速缓存1504。来自SDRAM控制器1116的数据将存储在多个高速缓存项中或具有从块请求器1112发送的延迟ID检索到的数据的单一多端口存储器中。然后,以与上述内插类似的方式使用小数值将该数据一起合并为单一像素以存储在线缓冲器1122中。
如果使用多个输入源,则它们可以存储在SDRAM存储器1116中的不同位置中。可以在映射器1108之前或之后实现源映射函数以重新产生所需要的变形坐标(WX,WY)以指向存储器1116中的不同源。在变形映射之前的源映射将允许可能通过不同的变形函数分别映射独立窗口。在变形映射之后的源映射将允许将变形映射一次性应用于多个窗口。
图16示出了根据另一模范实施例的、用于在SDRAM中存储数据的布置。参考图4,在相同SDRAM存储器中的不同库中存储相邻的4×4像素块。然而,如图16所示,在SDRAM存储器中的一个库的相同行中存储4×4像素的64个块。典型地,SDRAM行由512个列地址组成,并且如前所述,每个列地址可以存储相当于2个像素的图像数据。因此,可以在每个SDRAM行中存储相当于1024个像素的信息。因为十六个像素的每个4×4块需要8个列地址,这意味着可以在每个SDRAM行中存储64个4×4块。这64个块存储为16个像素块的8×8阵列。这给出了SDRAM存储器的单一库中的单一SDRAM行中总共32×32(=1024)个像素。
与相同库中的不同行相反,在SDRAM存储器中的不同库中存储相邻的32×32像素阵列,每个需要单一SDRAM行。因为可以快速存取不同库,所以这允许相邻像素阵列之间的快速移动。
通过以该方式存储像素,当从SDRAM检索像素时,相同SDRAM行在较长时间段内保持激活(例如,与图4所示的布置相比)。这是因为更大数目的相邻像素位于相同SDRAM行中。如前所述,因为需要更不频繁地打开和关闭SDRAM行,所以导致了更快的处理时间。因为可以同时打开SDRAM存储器中的所有库,所以该贮存器布置基本上给出了等同于4,096个单独像素的16×16,4×4像素块的即时存取。
图17示出了根据另一模范实施例的布置,其中使用内容可寻址存储器(CAM)增强。CAM增强允许在像素的读回期间使用更少的存储器。这是因为CAM可以保存新近使用的4×4像素块的随机存取高速缓存。可以在高速缓存中存储相当于整个显示线的块。
如前所述,标准SDRAM需要存储器地址以从其检索数据。内容可寻址存储器确定哪个位置存储需要的特定数据。因为旋转图像变形需要从SDRAM获得几乎随机地址(它们是不可预测的),所以新近块请求1114的高速缓存(图11)将需要与最终显示分辨率一样大。如果显示宽度是2048像素,则例如在使用90°旋转的情况下,将需要2048×2048像素缓存。
在该实施例中,CAM存储块位置(例如,作为初始源图像中左上块的位置的(0,0),作为其右边的块的位置的(1,0)等)以及4×4像素数据。当进行块请求时,为匹配块的特定块位置询问CAM。如果在CAM中不存在该块,那么将请求发送到SDRAM以检索该块。否则,因为CAM位置总是已知的且其也总在其中具有4×4像素数据,所以可以通过使用CAM中的地址从CAM容易地获得所需要的块。
在一个实现方式中,CAM如上地存储初始块位置,其中CAM地址成为包含该块的4×4像素的正常存储器高速缓存地址(ID)。这意味着CAM可以更小,好像它存储更少数据,这解决了复杂性和成本问题。
在使用CAM时,不再从库、行和列地址的最低2个有效位产生ID(高速缓存位置)值,如参考图12解释的那样。作为替代,其是在搜索CAM中的特定块之后所发现的CAM位置;具有匹配BRC地址作为ID值的存储位置。如果在CAM中任何地方都没有发现块位置(库、行、列),即,如果之前没有检索到具有该块位置的块,则使用计数器产生具有后续位置ID的新和后续CAM存储位置,并在其中存储请求的BRC地址。然后相同BRC的将来请求将产生该CAM地址,其形成在延迟线之后传递到图11所示的4×4像素高速缓存1114的ID。
使用该方法,可以以独立于方向或角度的方式或根据哪种变形函数读取SDRAM存储器。CAM记住当前块请求而无论SDRAM位置如何。图12所示的相关方法在矩形栅格中存储相邻像素的本地高速缓存,而CAM方法可以任意形状存储像素。
作为示例,因为每个CAM位置可以存储相当于4个像素的信息,2048×2048像素输出分辨率将需要至少512个CAM位置来覆盖整条像素线。每个CAM位置的地址可以是18位宽(2位用于库、6位用于列而10位用于行)。因此,按位的CAM大小将是等于9216位的512×18。虽然这可能是相对小的数字,但是其将需要FPGA中的大约10,000个以上的逻辑单元来定位所需数据。在典型FPGA上,这将占用逻辑单元的总数多达大约20,000,这可能高到不实际了。因此,该方法更适于ASIC应用,除非使用外部CAM。
在涉及使用CAM的某些实施例中,消除图11所示的多个线缓冲器1124,并且在任意一次中处理单一线(例如,而不是多线)。
在上述示例中(除了CAM方法,因为其在每条线的末端保存数据),使用单一大型多块高速缓存。该大型多块高速缓存包含较小的块(典型为4×4或4×2像素大小),以便每个较小的块可以在单一SDRAM脉冲中存取。
高速缓存仅用于其“窗口”跨越源图像移动的图像的相对小的部分。不基于线保存高速缓存,只要输出扫描过一条输出线并到下一条上,必须重新组装高速缓存,通常具有与之前输出线相同的数据。
为提高效率,可以一次变形多条输出线,同时由于Y偏移发生器ref而在输出侧从左到右扫描。因为从相邻源线产生多条输出线,所以相同高速缓存数据重新使用多于一次,由此从相同SDRAM存取给出更多像素。
对于以上示例性架构的进一步改进存在三个主要领域。
首先,如果在显示器上彼此邻近地变形多个图像,则对于每个源图像需要分离的高速缓存,因为上述示例性大型高速缓存不能区分一个图像的数据与另一图像的数据。这意味着需要额外的高速缓存来缩放屏幕上示出的窗口数目,增加了所需要的FPGA资源。
第二,需要多个线缓冲器以将一次产生的多条线分割为分离的线。这增大了FPGA尺寸和复杂性。
第三,分割***跨越两个频率,即输出像素频率和SDRAM频率,这使得设计略微复杂。
另外,再次参考图16,较小的4×4像素块存储在SDRAM中,以使得容易在一个SDRAM脉冲中存取它们。取决于SDRAM数据宽度,这可能是4×4、4×2、2×4、2×2、8×4等。多个较小的块(在图16所示的示例中为十六个)形成较大的32×32像素块,并且这些块全部存储在相同SDRAM行中。这允许快速存取在任意方向上在初始或源图像中的像素,而不需要SDRAM过于频繁地“预充电”(关闭)和“激活”(打开)不同行。这可以导致更快的数据处理时间。相邻的32×32块存储在不同SDRAM库中,以便当回到初始图像的像素存取跨过行边界时,即,当寻找来自不同的较大的32×32像素块的源像素时,SDRAM存取在其切换到新SDRAM库时仍然保持很快。
图18示出了替代架构1800。
在该替代架构1800中,高速缓存不存储大量多块的较小像素块,而是代之记住新近使用的块。每个新近使用的块存储在分离的块高速缓存项中。一次仅扫描一条输出线,这简化了架构。结果,不再需要线缓冲器块。另外,除SDRAM控制器外,所有其它组件以输出像素频率而不是以SDRAM频率运行。
SPG 1802产生一对输出坐标(OX,OY)。这些扫描从左到右并且从上到下,如在所有标准视频***中并如上所述。
由变形引擎1804变形输出坐标(OX,OY)以产生变形坐标(WX,WY)。如上,变形坐标(WX,WY)指示初始源图像中所需像素位置。
在进行变形像素(WX,WY)计算时,由块请求转换器1806将它们转换为源块SDRAM位置,存储位置为块BRC(库、行和列)的形式。这是包括所需像素(WX,WY)的4×4像素块的存储位置。
该块SDRAM位置由比较器1808对照从相邻输出像素产生的变形坐标的SDRAM位置比较:相同线上的之前像素(OX-1,OY)与紧接在之前的线中的相邻像素(OX-1,OY-1)、(OX,OY-1)和(OX+1,OY-1)。这些是从将在以下详细描述的线延迟获得的。
因为当前SDRAM位置正在与对应于在输出屏幕上仅离一个像素的输出像素位置(OX,OY)的其它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存取。在典型变形或旋转图像中,在输出图像(OX,OY)中相邻源像素(WX,WY)仍彼此接近,因此可能处于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可用和哪个当前正在使用因而不可用。在该实现中,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检索新数据,所以读指针现在将指在相当大的值。例如,在1920×1080输出分辨率的情况下,其可以指在数目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+1、N+2、N+3等的重新使用,但是仅在它们都不预先需要不同ID,即,来自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,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像素块,每个包含十六个像素。四个不同的存储器区域用于存储像素,像素上示出的数字指示其存储在其中的区域。以该方式,存储器区域0映射到偶数WX和偶数WY坐标(例如(0,0)),存储器区域1映射到奇数WX和偶数WY坐标(例如(1,0)),存储器区域2映射到偶数WX和奇数WY坐标(例如(0,1)),而存储器区域3映射到奇数WX和奇数WY坐标(例如(1,1))。
每个4×4像素块仍具有分配给其的相同ID值,好像是仅存在单一高速缓存区域那样分配。然而,每个4×4块中的十六个像素跨越四个不同存储器存储区(0,1,2,3)散布。这使得能够同时存取任意四个相邻像素(其每一个来自存储器0,1,2或3中的每个)。
即使所需要的像素是图22中所示的中心四个像素(跨越4个不同的4×4块和ID值),相同4个存储器区域仍提供上述优点,但是因为四个中心像素处于不同的4×4像素块和高速缓存位置,所以每个接收不同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使用四个整数像素值来执行双线性内插以产生最终内插单一像素。
虽然已经参考几个特定模范实施例描述了本发明的某些方面,但本领域技术人员将认识到,可以对其进行很多改变,而不脱离本发明的精神和范围。例如,可以结合多种不同方法实现各种电路、存储器和相关组件,这写方法可能涉及计算机、可编程电路、包含使得计算机在运行时执行步骤的指令的处理器可读介质和其它中的一个或多个。本发明的各方面在以下权利要求中提出。
Claims (15)
1.一种用于显示源图像的变形版本的设备,包括:
线存储器,布置为将源图像划分为来自源图像的多个像素行;
变形引擎,布置为将输出坐标(OX,OY)映射到变形坐标(WX,WY),变形坐标对应于源图像中的像素位置;
块贮存控制器,布置为将像素行组合为像素块,每个像素块包括来自源图像的相邻水平和垂直像素,其中每个像素块存储在存储器中的顺序存储位置上,并且每个变形坐标具有存储器中的相应库、行和列地址;
输出坐标发生器,布置为产生与显示器上的输出像素位置对应的输出坐标(OX,OY);
块请求转换器,布置为识别包含具有变形坐标(WX,WY)的像素的像素块存储在其中的存储位置;
块请求发生器,布置为请求识别出的像素块;
存储控制器,布置为从存储器检索所请求的像素块;
显示控制器,布置为在相应输出像素位置(OX,OY)上输出具有变形坐标(WX,WY)的像素的值用于显示;和
块请求高速缓存,布置为记录新近请求的块的地址。
2.如权利要求1所述的用于显示源图像的变形版本的设备,其中所述存储器包括SDRAM,其中跨越SDRAM中的顺序列存储每个像素块,并且其中所述块请求转换器布置为识别在其中存储所需像素块的库、行和列地址。
3.如权利要求2所述的用于显示源图像的变形版本的设备,其中所述源图像的相邻像素块被一起聚合为较大的像素块,并且每个较大的像素块存储在相同SDRAM行中。
4.如任意之前权利要求所述的用于显示源图像的变形版本的设备,进一步包括垂直偏移发生器引擎,布置为:
接收由输出坐标发生器产生的输出坐标(OX,OY),并产生多个偏移输出坐标(OX,OY+1),(OX,OY+2)…,每个偏移输出坐标从非偏移输出坐标(OX,OY)垂直偏移;和
将输出坐标(OX,OY),(OX,OY+1),(OX,OY+2)…提供到所述变形引擎。
5.如权利要求1到3的任一所述的用于显示源图像的变形版本的设备,进一步包括:
移位寄存器布置,布置为存储多个变形坐标(WX,WY)项,每个变形坐标项具有用于其各自数据值D的字段;和
组装器,布置为将移位寄存器布置中的变形坐标与任意检索到的像素块中的像素的变形坐标比较,在肯定比较时完成用于匹配的变形像素的数据值D的字段。
6.如权利要求1到3的任一所述的用于显示源图像的变形版本的设备,进一步包括:
ID发生器,布置为从块请求转换器接收识别出的存储位置,并从识别出的存储位置产生内部像素块ID;
ID延迟线,布置为从ID发生器接收并延迟像素块ID;和
查找引擎,布置为从延迟线接收像素块ID,并从高速缓存检索具有匹配像素块ID的像素块。
7.如权利要求6所述的用于显示源图像的变形版本的设备,进一步包括:ID列表,布置为存储未使用的像素块ID的列表;读指针,布置为指向能够使用的下一可用块ID值;和写指针,布置为指向回收块ID。
8.如权利要求6所述的用于显示源图像的变形版本的设备,进一步包括块ID比较器,布置为从所述块请求转换器接收识别出的存储位置,将它们与新近识别出的块的存储位置比较,并且如果发现匹配,则重新使用具有匹配存储位置的像素块的块ID,而如果未发现匹配,则使用用于识别出的像素块的新块ID。
9.如权利要求1到3的任一所述的用于显示源图像的变形版本的设备,进一步包括块请求高速缓存,布置为存储新近像素块检索请求,由此所述存储控制器布置为如果刚刚从存储器请求或检索了请求的像素块则不检索该请求的像素块。
10.如权利要求1到3的任一所述的用于显示源图像的变形版本的设备,其中所述存储控制器布置为在高速缓存中存储检索到的像素块。
11.如权利要求10所述的用于显示源图像的变形版本的设备,其中,所述存储控制器布置为在高速缓存的不同区域中存储像素块中的相邻像素。
12.如权利要求10所述的用于显示源图像的变形版本的设备,其中所述高速缓存包括内容可寻址存储器。
13.如权利要求1到3的任一所述的用于显示源图像的变形版本的设备,其中所述输出坐标发生器包括同步脉冲发生器,布置为以输出像素频率产生输出坐标。
14.如权利要求1到3的任一所述的用于显示源图像的变形版本的设备,包括:
内插器,布置为当所述变形引擎将输出坐标(OX,OY)映射到非整数变形坐标(WX,WY)时执行双线性内插,并且其中:
块请求转换器布置为识别所述源图像中对非整数变形像素坐标(WX,WY)作贡献的像素的变形坐标(WX,WY),并识别在其中存储包含贡献像素的像素块的存储位置;
所述块请求发生器布置为请求识别出的像素块;
所述存储控制器布置为从存储器检索所请求的像素块;
所述内插器布置为确定与非整数变形坐标(WX,WY)对应的输出像素(OX,OY)的内插输出值;和
所述显示控制器布置为在相应输出像素位置(OX,OY)上输出内插值用于显示。
15.一种用于显示源图像的变形版本的方法,所述方法包括:
将源图像划分为来自源图像的多个像素行;
将像素行组合为像素块,每个像素块包括来自源图像的相邻水平和垂直像素,其中在存储器中的顺序存储位置上存储每个像素块;
将顺序存储中的固定位置分配给源图像中的坐标;
产生与显示器上的输出像素位置对应的输出坐标(OX,OY);
将输出坐标(OX,OY)映射到变形坐标(WX,WY),所述变形坐标对应于源图像中的像素位置;
识别包含具有变形坐标(WX,WY)的像素的像素块存储在其中的存储位置;
请求识别出的像素块;
从存储器检索所请求的像素块;
在相应输出像素位置(OX,OY)上输出具有变形坐标(WX,WY)的像素的值用于显示;和
将新近请求的块的存储位置记录在块。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0911045.3 | 2009-06-25 | ||
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 |
US12/604,700 | 2009-10-23 | ||
PCT/GB2010/001089 WO2010149946A1 (en) | 2009-06-25 | 2010-06-04 | Apparatus and method for displaying a warped version of a source image |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102460503A CN102460503A (zh) | 2012-05-16 |
CN102460503B true CN102460503B (zh) | 2015-04-29 |
Family
ID=41008279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080028663.4A Expired - Fee Related CN102460503B (zh) | 2009-06-25 | 2010-06-04 | 显示源图像的变形版本的设备和方法 |
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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110458163A (zh) * | 2019-08-06 | 2019-11-15 | 南京地平线机器人技术有限公司 | 处理图像的多个感兴趣区域数据的装置和方法 |
Families Citing this family (24)
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 | 한국전자통신연구원 | 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법 |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US9116790B2 (en) * | 2011-08-04 | 2015-08-25 | 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 | 腾讯科技(深圳)有限公司 | 图像处理方法及装置 |
US20150220300A1 (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 |
WO2019061475A1 (en) * | 2017-09-30 | 2019-04-04 | SZ DJI Technology Co., Ltd. | IMAGE PROCESSING |
US11308681B1 (en) * | 2018-11-02 | 2022-04-19 | 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 |
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 | 上海壁仞智能科技有限公司 | 用于计算的方法、计算设备和计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6313846B1 (en) * | 1995-01-31 | 2001-11-06 | Imagination Technologies Limited | Texturing and shading of 3-D images |
US6577776B1 (en) * | 1999-02-24 | 2003-06-10 | Media 100, Inc. | Transforming video images |
Family Cites Families (12)
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 |
GB2305052B (en) * | 1995-09-08 | 2000-04-05 | Quantel Ltd | An image processing system |
JP3104868B2 (ja) * | 1997-11-25 | 2000-10-30 | 富士ゼロックス株式会社 | 画像処理装置 |
US7911483B1 (en) * | 1998-11-09 | 2011-03-22 | Broadcom Corporation | Graphics display system with window soft horizontal scrolling mechanism |
US7050063B1 (en) * | 1999-02-11 | 2006-05-23 | Intel Corporation | 3-D rendering texture caching scheme |
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 CN CN201080028663.4A patent/CN102460503B/zh not_active Expired - Fee Related
- 2010-06-04 EP EP10727786.5A patent/EP2446413B1/en active Active
- 2010-06-04 JP JP2012516837A patent/JP5663009B2/ja not_active Expired - Fee Related
- 2010-06-04 WO PCT/GB2010/001089 patent/WO2010149946A1/en active Application Filing
- 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
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6313846B1 (en) * | 1995-01-31 | 2001-11-06 | Imagination Technologies Limited | Texturing and shading of 3-D images |
US6577776B1 (en) * | 1999-02-24 | 2003-06-10 | Media 100, Inc. | Transforming video images |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110458163A (zh) * | 2019-08-06 | 2019-11-15 | 南京地平线机器人技术有限公司 | 处理图像的多个感兴趣区域数据的装置和方法 |
CN110458163B (zh) * | 2019-08-06 | 2022-04-22 | 南京地平线机器人技术有限公司 | 处理图像的多个感兴趣区域数据的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1145559A1 (en) | 2011-04-21 |
GB0911045D0 (en) | 2009-08-12 |
TWI430655B (zh) | 2014-03-11 |
CN102460503A (zh) | 2012-05-16 |
EP2446413A1 (en) | 2012-05-02 |
JP5663009B2 (ja) | 2015-02-04 |
GB2470611A (en) | 2010-12-01 |
JP2012530953A (ja) | 2012-12-06 |
GB2470611B (en) | 2011-06-29 |
WO2010149946A1 (en) | 2010-12-29 |
TW201119369A (en) | 2011-06-01 |
US8482573B2 (en) | 2013-07-09 |
KR101386767B1 (ko) | 2014-04-21 |
US20100328329A1 (en) | 2010-12-30 |
EP2446413B1 (en) | 2015-08-12 |
KR20120049851A (ko) | 2012-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102460503B (zh) | 显示源图像的变形版本的设备和方法 | |
US7580042B2 (en) | Systems and methods for storing and fetching texture data using bank interleaving | |
CN108492243B (zh) | 一种基于块处理的图像旋转装置、***和方法 | |
JPH08278779A (ja) | グラフィックス用フレームメモリ装置 | |
US5621866A (en) | Image processing apparatus having improved frame buffer with Z buffer and SAM port | |
JP2009099098A (ja) | コンピュータグラフィックス描画装置及び描画方法 | |
KR100283413B1 (ko) | 텍스처 매핑시스템 | |
US8463074B2 (en) | System and method for rotating images | |
US6577776B1 (en) | Transforming video images | |
JP2000293432A (ja) | バンク可変メモリ | |
JP3151788B2 (ja) | 矩形原画像の回転方法 | |
JP2020160828A (ja) | 2次元画像をアフィン変換するための画像データ処理装置 | |
RU168781U1 (ru) | Устройство обработки стереоизображений | |
JP4687108B2 (ja) | データ格納装置、データ格納制御装置、データ格納制御方法及びデータ格納制御プログラム | |
JP4465844B2 (ja) | 画像処理装置および方法、並びに記録媒体 | |
JP3644146B2 (ja) | 画像の2次元空間変換方法及び装置 | |
CN103027707A (zh) | 基于dram实现超声数字扫描变换的方法及*** | |
JP4465570B2 (ja) | 画像処理装置および方法、並びに記録媒体 | |
JP3818951B2 (ja) | データ配列変換装置およびそれを用いた表示制御装置ならびにデータ配列変換方法 | |
JP5605225B2 (ja) | メモリ制御装置、メモリマッピング方法、及び、プログラム | |
CN115861027A (zh) | 一种soc平台上的基于ddr的4k像旋方法 | |
JP4465843B2 (ja) | 画像処理装置および方法、並びに記録媒体 | |
JP4735008B2 (ja) | データ格納装置、データ格納制御装置、データ格納制御方法及びデータ格納制御プログラム | |
JP2010198156A (ja) | 画像描画装置 | |
JPH07118006B2 (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150429 |