一维信号抽取的方法和装置与流程

文档序号:27759076发布日期:2021-12-03 23:10阅读:102来源:国知局
一维信号抽取的方法和装置与流程
一维信号抽取的方法和装置
1.本技术是申请号为201810596557.4,申请日为2012年12月20日,案件名称为“一维信号抽取的方法和装置”的分案申请。该案是是申请号为201280063432.6,申请日为2012年12月20日,案件名称为“一维信号抽取的方法和装置”的分案申请。
技术领域
2.本发明总的来说涉及包括计算机程序产品的用于从二维数字图像中抽取一维数字信号的数字电子方法,系统和装置。


背景技术:

3.在数字图像处理应用中,人们期望能够沿着二维(2d)数字图像中的一条线抽取一维(1d)信号。这样的应用可包括,例如,检查,测量,电子、半导体的导向,一般制造业,以及条形码和其他符号读取。
4.术语投影有时用来指在二维图像中沿着一条本文称为投影线的线抽取一维信号的行为。此术语有时也用于1d信号本身,有时其在数字图象处理领域中具有其他含义。
5.在一些系统和方法或系统中,所述投影线被限定为沿着数字图像的行、列或对角线。在这种情况下,可从精确地从位于投影线上的像素值中抽取1d信号。所述1d信号可具有距离行和列一个像素的,并距离对角线像素(假设正方形像素)的样本。
6.在投影线沿着数字图像的行、列或对角线的其它系统和方法或系统中,可通过对垂直于所述投影线的像素值求和或求平均来抽取1d信号。例如,如果投影线沿着数字图像的行20,沿着所述线的1d信号的每个样本可以是沿着包括行18,19,20,21和22的列的一部分的像素值的总和或平均。
7.当投影线不沿着行、列或对角线时,精确地位于所述线上或在垂直于所述线的方向上的像素一般稀疏分布或几乎不存在。因此,在一些投影线并不限于沿着行、列或对角线定位的方法或系统中,可从大约遵循投影线的像素的集合中抽取1d信号。这种方法的一个示例是所谓的bresenham画直线方法,其典型地沿着行、列或对角线进行单像素步骤,通过此方式使得所访问的像素大约沿着投影线分布。
8.在与此被称为线性卷积的另一系统和方法中,在由bresenham画直线方法选定的位置上通过将数字图像和2d滤波器内核进行卷积来抽取1d信号。所述滤波器内核的设计目的是提供大致垂直于投影线的求和或求平均。所述滤波器内核可具有均匀权重,或随着像素距离投影线越远,权重越小。
9.在于此被称为倾斜投影的另一种方法中,使用平行四边形图案中的像素来抽取1d信号。平行四边形具有沿着图像的行的两边,而另外两边具有某个角度的偏斜角,一般不沿着列。因此,平行四边形是由来自一定数量的连续行中每一行的一定数量的连续像素组成,其中所述行的像素的起始列大约遵循其偏斜角偏移。1d信号通过在倾斜方向求和或求平均而形成。
10.在于此被称为最近邻投影的另一个方法中,需选定网格点,所述网格点在某些间
隔上沿着投影线分布,所述间隔典型地为1个像素,以及在某些间隔上垂直于所述投影线,所述间隔典型地也为1个像素。那些点的图像坐标取整为最接近的整数,使得它们落在像素坐标上,以及如此指定的像素用于通过大约(在最近邻的意义上)垂直于投影线的求和或求平均,抽取所述1d信号。
11.在于此被称为双线性插值和双三次插值其他方法中,以类似于最近邻投影所使用的方式选择网格点。代替将点坐标取整为整数,然而,所述坐标用于计算内插像素值。这些内插值用于通过垂直于所述投影线的求和或求平均,抽取所述1d信号。双线性插值和双三次插值的公式是众所周知的现有技术。
12.最近邻投影和所述内插的系统和方法获得了如同旋转数字图像的等效结果,以便投影线沿着(旋转)图像的行或列分布,然后垂直于所述投影线求和或求平均。这里的“等效”是指所获得的1d信号,而不必须是用来获得它的时间。旋转数字图像是一种通常被称为数字重采样的图像处理操作。
13.在另一种系统和方法中,需构成垂直于投影线的等距线。沿着所述垂直线通过像素的加权和来抽取1d信号,其中所述权重与线和像素交集的长度成比例。


技术实现要素:

14.本发明针对沿着投影线从二维(2d)数字图像中抽取一维(1d)信号的数字电子方法、系统和装置。
15.在一些实施例中,使用位于数字图像中的相对位置的序列中的像素权重模板的重复序列来抽取1d信号。像素权重模板为在网格上布置成图案的多个权重,所述网格的几何形状对应于数字图像的像素网格。在重复序列中存在至少两个不同的(不完全相同的)像素权重模板。通过使用应用在相对位置的序列中的像素权重模板的重复序列,来计算像素的加权和的序列,进而实现1d信号的抽取。
16.在一些实施例中,对应于投影线的取向,选择像素权重模板的重复序列和相对位置的序列。对于任何特定的取向,可以选择所述序列的多种属性,例如序列中模板的数目,权重的图案和值,以及序列的模板重叠的程度。在一些实施例中,这些属性可以进一步包括总权重,质心和/或模板的模糊。在一些实施例中,做出这些选择以获得1d信号的某些期望特性,例如测光精度、几何精度、分辨率和降噪。
17.在一些实施例中,像素权重模板的序列的选择依赖于投影线的取向是否平行于像素网格坐标轴之一或者接近平行于像素网格坐标轴之一,或是像素网格的对角线,或者接近像素网格的对角线。
18.本文公开了沿着投影线从二维(2d)数字图像中抽取1d信号的各种装置。一些实施例使用在例如微处理器的可编程设备上运行的计算机软件。一些实施例使用例如现场可编程门阵列的并不根本上依赖软件的计算设备。
19.在一些实施例中,k个寄存器的集合用来保存部分和,其中k至少为2。本发明从图像存储器中提取像素,并且从表格存储器中提取权重。一个或多个乘法累加器或任何计算等效物用于将k个权重乘以每个像素并将乘积加入到k个寄存器的集合中。可对寄存器的集合进行线性移位,便于在所述集合的一端移入零值并从另一端移出1d信号的样本。在一些使用例如微处理器的可编程设备的实施例中,点积指令用于控制一个或多个乘法累加器。
20.在一些实施例中,本发明使用直接存储器存取(dma)控制器将数字图像的一部分从图像存储器中转移到工作内存中。对应于投影线的取向选择转移图案。对于任意特定的取向,当与图像存储器中的位置以及投影线的长度的相关信息相结合时,转移模板被选出,以产生供控制器使用来转移像素的dma参数的集合。
21.如本文进一步所述,使用dma可获得期望的属性,例如合理顺序的存储器存取,提取和处理像素的重叠,以及在没有图像的行间距和投影线长度的预先知识的情况下对像素使用地址偏移的能力。
22.结合附图,本发明的其它特征和优点通过下面的详细描述将会变得显而易见,下文仅以示例的方式示出了数字电子方法、系统和装置的原理。
附图说明
23.在结合附图阅读下文对各种实施例进行的描述时,本发明提出的数字电子方法、系统和装置的前述和其它特性、特征和优点,以及数字电子方法和装置本身,将会被更全面地理解。
24.图1示出了用于一维信号抽取的一个典型装置;
25.图2示出了布置在网格上的像素阵列;
26.图3示出了一个典型的像素权重模板的重复序列,其可在本发明的一些实施例中使用;
27.图4是图3中所述像素权重模板的另一个示例,其示出了对根据本发明的各种实施例的方法、系统或装置有用的模板属性;
28.图5示出了图3和4中的像素权重模板的3个副本的片断;
29.图6示出了在平行区的投影线610的取向,其斜率为每向右9个像素向下1个像素;
30.图7是一个根据本发明的用于为投影线的给定取向选择像素权重模板的方法和系统的示例性实施例;
31.图8示出了,与使用双线性插值的方法和系统相比,由于此所描述的实施例获得的增强的分辨率;
32.图9示出了可以在根据本发明实施例的各种装置中使用的模块数据结构;
33.图10是c语言中的计算机程序的一部分,其可以在包括微处理器或其它可编程计算设备的实施例中使用;
34.图11示出了一个实施例,其中计算步骤可以不主要依赖于软件而是依靠例如现场可编程门阵列(fpga)的数字电子设备来执行操作;
35.图12示出了一个使用提供点积指令的数字信号处理器(dsp)的实施例;
36.图13示出了本发明的一个实施例,其利用2d和3d转移最小化了不需要的像素,并且允许像素的地址偏移,而无需源图像的行间距或投影线的长度的任何先验知识;
37.图14示出了一个可使用以上所述的与图13相关的转移模板的装置的实施例;
38.图15显示了一个典型的转移参数集合的细节;
39.图16示出了根据斜率为3/5的取向的面元间隔的密度品质因数的曲线图;
40.图17提供了用于在一个示例性实施例中指定模块的c编程语言的说明;
41.图18、19和20示出了特定的171个允许取向的集合的模块数据。
具体实施方式
42.以下为示例性实施例的详细描述,可结合附图理解,所述附图构成本文一部分的,并且其通过具体实施例的方式显示,在所述具体的实施例中,可以实施于此描述的方法、系统或装置。应当理解,在不脱离本发明的精神和范围的情况下可以使用其他实施例并且可产生结构变化。
43.图1示出了一种用于一维信号抽取的典型装置。例如从摄像机、扫描仪或计算机渲染中接收二维(2d)的数字图像100。数字图像100可包含例如条形码110的特征。接收描述投影线120的信息,并期望沿着投影线120抽取一维数字信号,例如对应于示例特征条形码110的信号140。数字电子装置130沿着投影线120从图像100中抽取信号140。
44.一维数字信号140一般包括多值序列,通常被称为样本或投影面元(projection bins)。值可以是单个数字或例如复数或向量的数字集合,例如颜色向量。这些数字可以各种形式进行编码,例如二进制整数或浮点值。
45.投影线120相对于数字图像100的取向为允许取向集合中的一个,其可以包括可以在接收到的描述投影线120的信息中进行编码的所有取向,以及可进一步限定:为具有例如0

45
°
的范围;限定为具有合理斜率的取向的范围;限定为根据一些度量标准有利选择的取向范围;限定为随机选择的取向范围;或任何合适的限制或限制的组合。
46.装置130可在多个策略之中以从图像100中抽取信号140,其根据投影线120的取向选择策略。对于给定的实施例,在此的各种教导可相异地应用于不同的取向,也可能完全不适用于一些取向而不脱离本发明的精神和范围。根据一些用于给定的取向的度量标准,选择策略以获得有利的结果。
47.值得注意的是,当条形码在此用作示例时,众所周知的是沿着投影线在数字图像中抽取1d信号对于多种应用是有用的,例如印刷电路板、太阳能电池板和集成电路的制造。在集成电路制造中这样的一个应用是在线接合时在引线框架上定位引线。因此此处所述条形码的示例仅是通过举例说明的方式举出,并且不应认为是限制性的。
48.图2示出了布置在网格上的像素阵列。数字图像,例如数字图像100,包括布置在网格上的像素阵列,比如像素网格200。像素,例如像素210,一般包括数值,或数值的集合以及在像素网格中的位置。所述数值可从物理测量中获得,或可通过合成产生,以及可以多种已知的方式在数字图像中进行编码,例如采用二进制整数和浮点数的方式。术语“像素”通常用来指代:像素网格中一位置上的数值;等于相邻网格元件之间的间隔的距离单元;以及测量图像的亮度的光电感应元件。
49.此处我们一般使用(x,y)来指定网格上的像素坐标。像素取决于整数坐标,并带有指代像素之间位置的非整数坐标。图像网格坐标的分数部分通常被称为子像素位置或子像素偏移量。其他方案,例如考虑到位于半整数坐标上的像素,是众所周知的并且也可以于此使用。
50.继续参考图2的示例性实施例,装置130接收描述示例性投影线220的信息。所述信息可以是描述投影线的任何形式,例如第一端点230和第二端点240的位置。可选地,所述信息可能包括:点的位置、长度和取向;线性方程的系数;或任何其它合适的编码。
51.在其它示例性实施例中,装置130间接地接收描述示例性投影线220的信息。首先,装置130接收描述请求的投影线250(在图2中显示为虚线)的信息。然后,通过对其取向、位
置、长度或其他属性进行细微调整,从描述请求的投影线250的信息中获得描述示例性投影线220的信息,使得示例性投影线220类似于请求的投影线250,但相对于像素网格200具有更有利的对齐。在一个实施例中,请求的投影线250绕其中心旋转以产生更有利的取向,例如产生在图18、19或20中列出的并且在下文得到进一步说明的取向。在另一个实施例中,移动请求的投影线250的端点以产生更有利的子像素偏移量,例如在图7中描述的选定偏移量。在又一个实施例中,旋转并且移动请求的投影线250。
52.在图2的实施例中,第一端点230和第二端点240一般不定位在整数网格位置上。在一些实施例中,描述投影线的信息允许接收子像素位置。在一些实施例中,上述调整可产生子像素位置。在其他实施例中,上述调整消除了子像素位置。在其它实施例中,投影线不具有指定的端点,或只有一个指定的端点,而不是从数字图像的边界中获得漏掉的端点。
53.示例的投影线220具有相对于像素网格200的取向。在各种实施例中,所述取向可被编码为数字或数字的集合,例如:以度、弧度、二进制或任何合适的角度单位表示的角度;向量的方向;斜率或切线;比率为斜率或切线的一对数字;或任何其它合适的编码。在使用比率为斜率或切线的一对数字的实施例中,所述比率的分母可以是0,表示垂直线。示例性投影线220的取向可以通过多种方式从描述它的信息中获得。可以在描述示例性投影线220的信息中对所述取向直接编码;可以从第一端点230和第二端点240的位置中计算出;可以从线性方程式的系数中计算出;可作为上述调整的结果推导得出;或者可以通过任何其他合适的方式获得。
54.像素网格一般定义了某些特殊的取向。例如像素网格200定义了两个平行于网格轴的特殊取向260。具有正方形、矩形或平行四边形像素的像素网格具有两个特殊的取向,在此称为平行取向。对于具有正方形或矩形像素的像素网格,所述平行取向是彼此垂直的。对于具有六角形像素的像素网格,其具有三个相距为60
°
的平行取向。
55.像素网格200还定义了与网格坐标轴呈对角线的两个特殊取向270,与所述平行取向分开45
°
。具有正方形,矩形或平行四边形像素的像素网格将具有两个特殊的取向,在此称为对角线取向。对于具有正方形像素的像素网格,所述对角线取向将与所述平行取向分开45
°

56.图3示出了一个典型的像素权重模板的重复序列,例如其可在本发明的一些实施例中使用。像素权重模板是在网格上布置成图案的多个权重,所述网格的几何形状(网格元件的尺寸和形状)对应于数字图像的像素网格。权重是例如整数、实数、复数或向量的数值量,如下进一步的描述。术语要素在本文中用来指代模板内在特定位置上的特定权重。因为模板网格的几何形状对应于像素网格,模板的位置和偏移可以以像素为单位进行描述。
57.示例性投影线300具有对应于每向右5个像素向下3个像素的斜率的取向。一像素权重模板的重复序列因为本取向而被选中,包括第一模板310、第二模板311、第三模板312、第四模板313、第五模板314、第六模板315、第七模板316和第八模板317。所述序列重复,使得第一模板310(用虚线示出)跟随第八模板317,依此类推。在图3的示例性实施例中,所述序列的每个模板与其他的是不同的。在一些实施例中,一些模板可以是相同的,但有至少两个不同的模板。
58.选择相对位置的序列,其指定了在其上应用模板的数字图像内的相对位置。在图3的示例性实施例中,所述相对位置通过扩展网格上模板的布置来显示,其中正方形包含代
表模板要素的数字或符号,且其中圆点代表在扩展网格上对应于没有模板的点。相对位置使得所述模板重叠并且在图中难以使用像素网格来说明;因此,出于说明的目的所述模板已在扩展网格上放置,使得它们通过额外的3个网格位置水平地分隔。为了获取示例性模板序列的实际相对位置,将第二模板311向左移位3个网格位置,第三模板312向左移位6个网格的位置,第四模板313向左移位9网格位置,等等。
59.在图3中示出的序列中每个模板的相对位置相比所述序列之前的副本中相同模板的位置向右移动5个像素并且向下移动3个像素。如上所述,在向左移位虚线模板24个网格位置后,这可以通过第一模板310看出。重复模板的相对位置结合图中所示的其它相对位置(在经过如上所述的适当移位后),定义了对应于任意长度的重复序列的相对位置,包括那些未含有全部副本的序列。
60.图3正方形中的数字和符号表示相对像素的权重,其中符号xx表示100。对计算和使用所述权重的方法、系统和装置的描述贯穿了整个说明书。在对应于图3的一个示例性实施例中,权重是范围在0

100的整数。对应于图3的另一个示例性实施例中,权重是范围为0

100的浮点值,出于显示的目的其在图中示出为缩短的整数,所以例如显示为“0”的权重其实是非零但小于1的。在其他实施例中,权重是在任何合适的范围内的整数或浮点值,例如在范围0

255的整数或在范围0

1的浮点值。在一些实施例中,权重可以为如本文其它地方所述的负数、复数或向量。上述范围是任意选择的。
61.图3的示例性实施例,通过使用在数字图像中的相对位置序列上的所示像素权重模板的重复序列来计算所示数字图像的像素的加权和的序列,以沿着示例性投影线300抽取一维信号。通过将像素权重模板放置在数字图像中一个位置上,将所述权重和在所述位置上相对应的像素值相乘,并将对乘积求和来计算加权和。乘法与求和可以以任何顺序进行。乘法与求和可以包括任何算法、逻辑、查找表或其它运算或具有乘法和加法作用的运算的组合。一维信号是加权和序列的结果,或是从那样的序列中获得的。
62.在一些实施例中,像素或权重或两者均可以是复数,而且加权和是复数乘积的复数和。1d信号可以是复数,或可以包括从复数中获得的实值。在一些实施例中,像素或权重或两者紧可以是向量。例如,像素可以是rgb颜色向量,权重可以是向量,加权和可以是点积和,从而产生标量值的1d信号。在另外一个示例中,像素可以是rgb颜色向量,权重可以是标量,加权和可以是乘积的向量和,从而产生向量值的1d信号。
63.对于示例性投影线300的取向,具体地为每向右5个像素向下3个像素的斜率,选择图3所示的像素权重模板的重复序列和相对位置的序列。对于其他取向,可以选择不同的像素权重模板的重复序列和相对位置的序列。在一些实施例中,对于大多数取向做出这种性质的选择,然而对于某些取向,做出其它选择。例如,对于某些取向:可以使用完全相同模板的重复序列;可以使用非重复序列;可以使用不包括任何类型的像素权重模板的方法;或可以使用任何适当的程序或程序的组合。在一些实施例中,某些取向包括水平取向。在其它实施例中,某些取向包括平行和对角取向。在其它实施例中,某些取向包括一些少数取向,在其中认为做出这样的选择是有利的。
64.下面结合图7,并在本文的其他地方,给出了用于选择对应于图3的实施例的像素权重模板和相对位置,用于示例性投影线300的取向和其它取向,以及为各种其他实施例做出那些选择的详细的计算机化方法。
65.响应于投影线的取向选择像素权重模板的重复序列和用于至少大多数的允许取向的像素权重模板的重复序列的使用,为抽取一维信号的方法、系统或装置的设计提供了灵活性。这种灵活性可以用于在某些实施例中获得某些优点。在可获得的优点中,高精确性、高分辨率、良好的降噪、高速的运算、计算简单和其他优点对普通技术人员来说是显而易见的。各种实施例可在不同程度上获得所有这些优点或不获得这些优点。
66.在各种实施例中,所述优点指的是全部或部分地由于选择像素权重的能力,而获得的模板的某些期望属性。这些属性可以包括影响测光精度的零时刻(总权重)、影响几何精度的第一时刻(质心)以及影响分辨率和降噪的第二时刻(模糊)。响应于投影线的取向选择像素权重模板的重复序列的使用允许彼此独立地选择这些时刻,使得例如选择所述第一时刻以获得高几何精度,同时独立地选择第二时刻以获得分辨率和降噪之间的期望权衡。
67.在一些实施例中,可选择像素权重模板,使得模板的总权重是相同的,或是大体上相同的。在这些实施例中,从2d图像到1d信号的有效增益大体上是恒定的,并且与位置无关,从而产生高测光精度。在对应于图3的实施例中,其中为了在图中显示为整数的目的,所示出的权重为缩短的浮点值,模板的总权重与浮点精度是相同的。在一个替换的实施例中,其中示出的权重是如图所示的整数,模板的总权重大体上等于大约为1%的三分之一的精度。
68.在一些实施例中,像素权重模板不具有大体上相同的总权重。在这些实施例中,测光精度可通过将每个投影面元除以与产生所述面元的模板的总权重成比例的值或通过乘以这样值的倒数来保持。然而,如果在给定应用中较少关注测光精度,不需要进行这样的调整。
69.像素权重模板具有定义为模板的像素权重的加权平均位置的质心。例如,第八模板317具有第八质心327。图3中的其他像素权重模板具有未用参考数字示出的质心。质心可相对于每个模板进行定义,并且为了在图像中放置每个模板,质心可相对于数字图像进行定义。因此当根据相对位置的序列放置模板时,像素权重模板的重复序列产生质心的序列。
70.将在1d信号的投影面元的数字图像中的位置视为在产生投影面元的放置位置上的像素权重模板的质心是合理的。因此,所述投影面元可视为具有2d位置,其沿着投影线存在或不存在。也可使用除了质心的方法定义2d位置。例如,如果权重由例如抛物线或高斯的2d位置函数产生,则投影面元的位置可被定义为函数极值的位置。
71.在数字图像中相对于投影线定义两个方向是很有用的。信号方向被定义为平行于投影线,而投影方向则被定义为用于特别的实施例的一些适当的非水平方向。在许多实施例中,投影方向垂直于信号方向,但一般不需要。将投影面元的2d位置以及其他各种属性视为在信号方向上的分量或坐标和在投影方向上的分量或坐标是更有用的。本文中使用符号u指示所述信号方向坐标,使用符号v指示所述投影方向坐标。
72.在信号方向上的连续投影面元之间的间隔确定了1d信号相对于2d图像的像素间隔的等比缩放(拉伸或压缩)。如果面元间隔是均匀的,缩放将是均匀的而1d信号则将具有高几何精度,这意味着它将忠实地保留图像中的几何特征(例如相对距离)。在一些应用中,例如条形码读取中,人们期望获得高几何精度。
73.如果在投影方向上投影面元的位置是恒定的(即恒定的v坐标),则投影面元位于投影线上或在平行于它的直线上。一般与均匀缩放属性无关的这种属性在给定的应用中也
可能是期望的。
74.在一些实施例中,选择像素权重模板的重复序列和相对应的相对位置序列,使得质心沿着直线均匀地间隔开。得到的一维信号将被均匀缩放(拉伸或压缩),因此将获得高几何精度。在一些实施例中,所述直线与投影线大体上平行。在一些实施例中,所述直线为投影线。
75.在对应于图3的实施例中,其中为了在图中显示为整数的目的,所示出的权重为缩短的浮点值,所述像素权重模板的质心以非常高的精度沿着投影线300均匀地间隔开。在所示出的权重为整数的替换的实施例中,所述质心以某种较小精度,相对于像素的尺寸更高的精度均匀地间隔开。
76.使用质心来定义投影面元的位置,从而来评估从2d图像中抽取1d信号的方法、系统或装置的各种属性,适用于任何方法、系统或装置,其中投影面元对像素的一些线性组合做出响应,包括最简单的情况投影面元对一个像素做出响应。这样的方法包括:bresenham画直线;线性卷积;最近邻投影;倾斜投影;双线性插值;双三次插值及其他的现有技术方法。
77.bresenham画直线、线性卷积以及最近邻投影一般在非平行和非对角线取向上(即在大多数取向上)产生非均匀缩放,因此一般提供降低了的几何精度。倾斜投影、双线性插值和双三次插值可以在所有取向产生均匀的缩放,但是如将在本文所见,每个都显示出其它不合需要的缺陷。
78.考虑到用于1d信号抽取的方法模糊信号的程度是有用的。考虑到在信号方向和投影方向但还是女孩的模糊更是有用的。
79.首先应当指出的是,产生2d数字图像的过程可以引入模糊,所述模糊不同于并且独立于任何由信号抽取方法引入的模糊。这样的图像形成模糊可能起因于数字或源,包括例如对象的运动、光学变形和散焦和光电像素传感器的有限作用范围。
80.给定方向(例如,信号或投影方向)的像素权重模板的模糊可被定义为在给定方向上的位置的加权标准偏差,或等效于在关于质心的给定方向上的第二时刻的惯性的平方根。根据这个定义,模糊具有距离单位。本文中像素权重模板中的每个要素被视为占据一个点,而不是一个有限的扩展区域。为了简单做出这种选择,可以多种其他方式做出这种选择,例如通过定义具有超过正方形或圆形区域的均匀密度的模板要素。
81.可选地,在一些实施例中的模糊被定义为像素权重模板的计算出的模糊和一值的组合,这于此被称为系统模糊,模仿图像形成模糊的作用。在一些实施例中,根据这个替代方案,像素权重模板元素占据了点,而它们的模糊和系统模糊则通过使用平方和的平方根进行合并,其一般被视为是合并标准偏差的适当方式。
82.其它方法也可以被用来定义模糊。例如,具有正权重的像素权重模板可作为低通滤波器。模糊可以在给定方向(例如,信号或投影方向)上被定义为截止波长(3db衰减的常规波长),并且也是以距离为单位。
83.响应于投影线的取向选择像素权重模板的重复序列的使用,允许选择投影方向上的模糊以适应特定的应用。在一些实施例中,此选择受到像素网格的几何形状的约束,所以实际的投影方向模糊可在来自预期值的模板之中发生某种变化。在投影方向上的模糊可减少数字图像中的不相关噪声。在例如条形码读取、定位引线和其他的应用中,如果条形码、
引线或其他相关图像特性大体上平行于投影方向,那么在所述方向上的模糊在信号品质方面几乎是完全有益的。
84.在图3所示的示例中,在投影方向上的模糊已被选择为大约2.3个像素。然而如上所述,还存在一些变化。对于第二模板311、第三模板312、第四模板313、第五模板314、第七模板316和第八模板317,投影方向模糊在2.3个目标像素
±
0.02的范围内。对于第一模板310和第六模板315,投影方向模糊大约是2.0个像素。
85.在本文中术语分辨率常用于描述1d信号抽取的方法解决优良特性的能力,例如利用在信号方向上的小规模合理的保真度来复制例如条形码中的单独条和间隔、电路板上的薄痕量或在引线框架上的窄引线。分辨率受到投影面元间隔(在数字信号理论中通常称为采样周期)、信号方向上的模糊以及例如图像形成模糊的外部因素的限制。例如减少面元间隔可能无法改善分辨率超出由信号方向模糊造成的限制。同样,减少信号方向模糊可能无法改善分辨率超出面元间隔造成的限制,两者都不减少可能改善分辨率超出由图像形成模糊造成的限制。
86.响应于投影线取向而被选择的像素权重模板的重复序列的使用,允许在信号方向上选择投影面元间隔和以适应给定的应用。在一些实施例中,此选择受到像素网格的几何形状的约束,所以实际的信号方向模糊可在来自预期值的模板之中发生某种变化。
87.信号方向模糊可通过与投影方向模糊所用的相同的方式降低噪声,因此通常期望选择不小于获得期望的分辨率所需的信号方向模糊。鉴于其中面元间隔和模糊两者限制分辨率的这种权衡和方式,在一些实施例中,以互相依赖的方式选择信号方向模糊和面元间隔。在一个这样实施例中,面元间隔被选择为投影线取向的函数,如下面进一步描述。然后选择信号方向模糊作为面元间隔的预定分数,要理解的是实际模糊可以有些变化,如上所述。
88.在一些实施例中,面元间隔被选定为投影线取向的函数,也为所说系统模糊的函数,然后选择信号方向模糊为面元间隔的预定分数。使用本实施例中,可选定面元间隔和信号方向模糊为适当的由系统模糊所模仿的外部因素引入的模糊。
89.在对应于图3的实施例中,在信号方向上的模糊已经被选择为约0.34个投影面元之间的间隔,这对于投影线的示例取向为恒定的0.73个像素,使得信号方向模糊在0.25个像素左右。
90.模糊和面元间隔能够用来分析从2d图像中抽取1d信号的方法、系统或装置的分辨率和降噪属性,对于任意其中投影面元对像素的一些线性组合做出响应的方法、系统或装置,这都是适用的,包括投影面元对一个像素做出响应的最简单情况。这样的方法包括:bresenham画直线;线性卷积;最近邻投影;倾斜投影;双线性插值;双三次插值及其他的现有技术方法。
91.bresenham画直线一般不引入了超出了外界因素导致的模糊。因此,没有任何显著的降噪,并且分辨率大部分受限于面元间隔,其是由像素网格几何形状约束到由水平、垂直或对角线步幅造成的间隔。
92.线性卷积和倾斜投影一般通过允许投影方向上的模糊来降低噪音。在信号方向上通常存在很少的模糊,并且分辨率一般受限于面元间隔,其由像素网格几何形状约束到由水平、垂直或对角线步幅造成的间隔。
93.最近邻投影、双线性插值和双三次插值一般通过允许投影和信号方向上的模糊来降低噪音。分辨率一般受限于信号方向上的显著模糊,这是内插公式决定的,所以没有选择。这些方法一般使用固定的预定面元间隔,通常为1个像素;由于信号方向模糊,较小的值一般不会更有利。例如,对于双线性插值的方法,信号方向模糊对于投影线的大部分取向,大部分与面元间隔无关,一般为0.4个像素左右。
94.图4是图3中所述像素权重模板的另一个示例,其示出了对根据本发明的各种实施例的方法、系统或装置有用的模板的属性。如上面所讨论的,当被放置在适当的相对位置,图3的像素权重模板重叠,意味着给定模板中的要素如同在重复序列中的其他模板的要素,可落在数字图像中相同的像素位置。相反地,数字图像中给定的像素可由多个模板使用,并因此影响多个投影面元。
95.图4示出了图3中特定模板在不同的实施例中选择的示出的投影线取向的重叠。第一像素权重模板310的元件400(以粗体轮廓显示)重叠第二像素权重模板311的元件402;第二像素权重模板311的元件402重叠第三像素权重模板312的元件412;第三像素权重模板312的元件420重叠第四像素权重模板313的元件422;第四像素权重模板313的元件430重叠第五像素权重模板314的元件432;第五像素权重模板314的元件440重叠第六像素权重模板315的元件442;第六像素权重模板315的元件450重叠第七像素权重模板316的元件452;第七像素权重模板316的元件460重叠第八像素权重模板317的元件462;以及第八像素权重模板317的元件470重叠第一像素权重模板310的元件472。
96.可以看出在对应于图3的实施例中的每个模板要素与相邻模板的一个要素重叠,意味着影响着1d信号图像的像素影响两个相邻的投影面元。在一些实施例中,例如对应于图3的实施例,对于大多数的投影线的允许取向,影响1d信号的图像的像素影响两个相邻的投影面元。此属性可导致各种期望的属性,包括在选择模板属性时的灵活性,例如第零、第一和第二时刻。现有技术方法,例如bresenham画直线、线性卷积和倾斜投影,其中影响1d信号像素仅影响一个投影面元,提供了较少的灵活性。
97.在一些根据本发明的实施例中,影响1d信号数字图像的像素影响两个相邻的投影面元。例如图3的像素权重模板可以使用这样的实施例。这些实施例可提供简单且高速的操作,如将在下面进一步说明。对于例如最近邻投影、双线性插值和双三次插值的现有技术方法,影响1d信号的像素可影响一个、二个、三个或更多个投影面元,导致更大的复杂性和较低的速度。例如,使用双线性插值和一个像素的面元间隔,影响1d信号的像素将影响一个、两个或者三个投影面元。如果面元间隔变小,数字图像的像素可以影响4个投影面元。
98.根据本发明的像素影响两个相邻投影面元的方法、系统或装置的实施例,相较于许多现有技术的方法,可为投影线的大多数取向提供良好的工程上的折衷。在选择像素权重模板的属性时可获得良好的灵活性,同时允许简单且高速的操作。在这些实施例中,其它的策略可能对少数取向是有益的,如将在下面进一步描述,例如涉及图6。
99.可以从8个片断中产生图3和图4中的第八像素权重模板,其中片断包含关于处理互不相容的像素集合的信息。对于对应于图4的实施例,元件400和402包括片断0,元件410和412包括片断1,元件420和422包括片断2,元件430和432包括片断3,元件440和442包括片断4,元件450和452包括片断5,元件460和462包括片断6,以及元件470和472包括片断7。
100.片断可以用作限定像素权重模板的重复序列的另一种方式。像素权重模板一般定
义了如何计算一个投影面元,但没有定义如何使用特定的像素,因为该像素可以由多个模板使用。通过对比,片断一般定义了如何使用像素的集合,但没有定义如何计算特定的投影面元,因为该面元受到多个片断的影响。以下方式也产生了相同的1d信号;使用片断定义像素权重模板的重复序列允许以一定的顺序并且通过具有包括简单和速度的优良属性的装置执行所述计算,此将进一步在此得到描述。
101.图5示出了图3和4的像素权重模板的3个副本的片断。示出了第一副本500、第二副本510和第三副本520。在本图中网格上的数字识别所述片断。图5还示出了如何将副本适配在一起以形成任意长度的重复序列。这里片断重复8个周期,以及24个片断的序列可以从所示的3个副本中产生。
102.由于在图5的示例中使用2个连续的片断来产生每个像素权重模板,所示的24个片断可以产生23个像素权重模板。例如,使用第一副本500的片断7和第二副本510的0

7片断来产生图3和图4中像素权重模板的一个完整副本。在这个示例中,像素权重模板也具有8个重复周期。
103.从像素权重模板的重复序列中产生投影面元序列的长度不必是全部副本。此处所述的装置的各种实施例可以不考虑副本的周期,而产生任意长度的序列。
104.在图5中投影线530的斜率更容易被理解,此斜率为每向右5个像素向下3个像素,这是因为其片断没有重叠,因此它们可以不使用图3和图4中附加的水平分隔来进行说明。
105.图5还示出了由所示出的片断和使用图3和图4中的权重产生的对应于23个像素权重模板的质心540的序列。如前所述,质心540沿着投影线530均匀地间隔开,并且可以看到横跨副本边界保持这个属性。
106.像素权重模板或等效片断的完整集合,其包括针对给定取向的重复序列和可选择地全部或者部分用于给定实施例中的模板的附加数据,在本文中被称作模块。
107.如上所述,选择像素权重模板使得数字图像的像素影响两个投影面元可以是一个可用于投影线的大多数取向的良好的工程上的折衷。然而由于像素网格的几何形状,对于一些少数取向的其它选择可以是有利的。这对于接近网格的平行取向和对角线取向的取向尤其如此。包括或接近平行的投影线的允许取向的子集被称为平行区。包括或接近对角线的投影线的允许取向的子集被称为对角区。不在平行区或对角区的取向位于正常区。平行去和对角区的统称为衰退区。
108.如上所述,在信号方向上的像素权重模板的模糊可以限制1d信号抽取方法的分辨率。例如,信号方向上的模糊可以定义为该方向上位置的加权标准偏差。虽然,可以选择组成像素权重模板的像素和权重,像素网格本身就定义了在信号方向上这些像素的位置。对于大多数取向,投影线附近的像素的信号方向的坐标以相当均匀的方式分布,允许选择信号方向模糊的灵活性。然而,对于在平行区和对角区的取向,那些信号方向坐标是不均匀分布的

它们围绕网格的行、列或对角线叠在一起,其中在其间存在空间隔。因为模糊受到位置和权重的影响更强烈,有利的是对于在平行区和/或对角区的取向按照不同的策略选择像素权重模板。
109.在一些实施例中,对于平行区中的取向,选择像素权重模板,使得数字图像的像素影响一个投影面元。图6示出了平行区中的投影线610,该投影线610的取向斜率为每向右9个像素向下1个像素。其还示出了像素权重模板600的重复序列,其中每个模板是一列。存在
9个这样的模板。如在图3的示例中,选择权重,使得模板具有大体上相同的总权重,并使得质心沿着投影线610均匀地间隔开。请注意由于像素影响一个投影面元,模板不重叠。
110.在一些实施例中,对于对角区中的取向,选择像素权重模板,使得数字图像的像素影响一个投影面元。图6示出了对角区中的投影线630,该投影线630的取向斜率为每向右8个像素向下7个像素。其还示出了像素权重模板620的重复序列,其中每个模板位于一个对角线导向的矩形内。存在15个这样的模板。如在图3的示例中,选择权重使得模板具有大体上相同的总权重,并使得质心沿着投影线630均匀地间隔开。请注意由于像素影响一个投影面元,模板并不重叠。
111.选择多少像素影响投影面元仅仅是在平行和/或对角区中遵从不同策略的一个示例。另一个示例为面元间隔的选择,其将结合图7和图16进行进一步描述。
112.平行区和对角区的范围是一个设计选择,此设计选择依赖于例如,包括期望的分辨率、期望的降噪以及在投影方向上期望的模糊的许多因素。在一些实施例中,例如在高清晰度不太重要和/或期望更多的降噪时,其中一个或两个区可以更小或者甚至为空。此外,点从正常区的均匀分布的信号方向位置特性切换到衰退区的非均匀分布的特性,依赖于在投影方向上像素权重模板的范围。所述范围越大,衰退区将越小。在投影方向上的像素权重模板的范围在很大程度上依赖于由投影方向上模糊引起的降噪期望量。
113.这些设计选择的一个示例在图18、图19和20中示出,这将在下文中得到更完整地描述。这些图示出了一个在0

90度范围内具有171个允许取向的集合的实施例,其中投影方向上的期望模糊大约是2.3个像素并且信号方向上的期望模糊大约是面元间隔的34%。数据的每一行给出了关于在角度列1850中以度为单位表示的一个特定取向的信息。区列1810包含用于正常区的取向“0”和用于衰退区的取向“1”。平行区包括在0

6.34度和83.66

90度的范围内的取向,包括了所述171个允许取向中的24个取向。对角区包括在41.19

48.81度范围内的取向,包括15个取向。正常区包括132个取向,占总数的大多数,约为77%。这里多数是指大于50%。
114.图7是一个根据本发明的为投影线的给定取向选择像素权重模板的方法的示例性实施例。在接收到描述特定投影线的信息之后,可以应用图7中的方法。可选地,图7的方法可以应用于允许取向的集合中的一些或所有取向和存储在存储器中的结果,而且一旦接收到描述特定投影线的信息,接着恢复使用所述方法。图7中的方法被用于获得图3、图4和图6的实施例中的像素权重模板。
115.在图7的示例性方法中所述允许取向具有有理数斜率,这意味着所述斜率为整数n与整数d的比率。n和d通常是互质的,但这不是必须的,如将在下面描述。d可以是0,标志着无限斜率。如果n和d均为正数,可指定在0

90度范围内的斜率。如果n和d之一是正数,并且另一个是允许的任何整数值,可指定在0

180度范围内的斜率,所述斜率覆盖了可能在平面的取向的全部范围。
116.允许取向的集合可被限定为有理数斜率的取向的特定子集,例如图18、图19和图20的171个取向。在图18、19和20中,分子列1800包含n,分母列1801包含d。下面进一步描述选择所述允许取向的集合。如果我们重复除了0
°
和90
°
的所有取向,并且在所述重复中将d取反,得到了340个覆盖0

180
°
全部范围的允许取向。
117.再回到图2,示例性投影线220具有有理数斜率并且是允许取向集合中的成员。请
求的投影线250可以具有有理数斜率或可以不具有有理数斜率,投影线250可以是允许取向集合中的成员或可以不是允许取向集合中的一员,这部分是因为提供请求的投影线250的方法可能不知道允许取向集合的存在或细节。在图2的示例中,它不是集合的一员,因此请求的投影线250可,例如,关于其中心稍微旋转,从而获得示例的投影线220。
118.在图7的方法中,选择p个像素权重模板的重复序列。由于存在p个模板,重复周期为p。序列中的每个模板中放置有来自先前副本中相同的模板在x(例如向右)上的n个像素以及在y(例如,向下)上的d个像素,使得模板跟随投影线的斜率。在图3

5的示例中,n=3,d=5,p=8。对于图6中的像素权重模板600,n=1,d=9,p=9。对于图6中的像素权重模板620,n=7,d=8,和p=15。
119.继续参照图7,根据通过给定应用的需要确定的不同标准,主要是分辨率和降噪,步骤700选择适合于给定斜率n/d的面元间隔和模糊。由于每个模板产生一个投影面元,并且由于所述模板在p个面元中移动(n,d)像素坐标,以像素为单位的面元间隔b为
[0120][0121]
注意到,这里我们假定其为正方形像素。很容易得到例如正方形、平行四边形或六边形的其它几何形状像素的等效公式。此外,我们假设投影方向垂直于信号方向。也很容易得到非垂直方向的等效公式。
[0122]
使用公式(1),步骤700可以通过选择p来选择面元间隔b。此选择受限于整数值p,但是通过将n和d与整数相乘,任意面元间隔均可接近任意精度,n和d保留了投影线的斜率,同时使得面元间隔的选择更精确。在一些期望高分辨率的实施例中,例如图3、4、6、18、19、和20的示例中,平行区中的取向p=max(|n|,|d|),其他p=|d|+|n|。在一些期望某些较差分辨率的实施例中,平行区中的取向p=max(|n|,|d|),其他p=max(|n|,|d|)+min(|n|,|d|)/2,其中如果需要使p为整数,d和n乘以2。在一些期望更低分辨率的实施例中,对于所有取向p=max(|n|,|d|)。下文结合图16给出这些用于面元间隔的特定选择的进一步解释。这些面元间隔的选择是遵循平行区和/或对角区中不同的策略的另一示例。
[0123]
步骤700也选择了目标信号方向模糊σ
u
和投影方向模糊σ
v
。请注意像素权重模板的实际模糊值一般都会有些不同,下面将进一步解释。在一些实施例中,可以预先确定目标信号方向模糊σ
u
和投影方向模糊σ
v
之一或者两者,因此在步骤700中不进行选择。
[0124]
目标投影方向模糊σ
v
的较大值提供了更多的降噪,但是如果例如条形码的条的图像特征大体上不平行于所述投影的方向,那么较大的σ
v
值会降低1d信号的质量。因此,使用适当的值是依赖于应用的。在图3、4、6、18、19和20的实施例中,σ
v
=3.0个像素。
[0125]
选择目标信号方向模糊σ
u
为与所述面元间隔成比例,并且随着所述投影线的取向而变化。在一些期望高分辨率的实施例中,例如图3、4、6、18、9和20的示例中,σ
u
是在正常区中的面元间隔的35%,在衰退区的中面元间隔的70%,这是平行区和/或对角区中遵循不同的策略的另一示例。在一些期望更低分辨率的实施例中,σ
u
可以是在所有区的中面元间隔的50%。
[0126]
对于正方形像素和垂直的投影方向,(x,y)像素坐标和(u,v)信号投影坐标之间的映射为:
[0127][0128]
其中,(x0,y0)是在0<x0,y0<1的范围内的子像素偏移量。步骤710、720、730、740、750和760代表超过子像素偏移量集合的循环,根据将在下面描述的品质因数,其目的是为了选择最佳的子像素偏移量。在示例性实施例中,子像素偏移量包括具有1/8像素的间隔的第一8
×
8网格。在另一个示例性实施例中,第二8
×
8网格中添加有1/64像素的间隔,并被集中在来自接收到所述最高的品质因数的第一网格的子像素偏移量中。在又一实施例中,使用单个固定的子像素偏移量,因此一旦执行步骤720、730和740,则不需要执行步骤710、750、760和770。
[0129]
在步骤720中,可以如下创建原始像素权重模板。首先,创建p个片断,编号为0到p

1。在概念上无限的网格上的每个像素,例如|v|≤v
max
并且0≤u/b<p成为片断[u/b]的要素。这里v
max
为一个参数,例如1.5σ
v
。如上面所述,p个片断定义了p个像素权重模板的要素。在一个示例性实施例中,对于在正常区中的取向,两个相邻的片断模p定义了一个模板,在衰退区中,每个片断定义了一个模板。
[0130]
接下来,对于每个模板,通过为定义模板的片断指定权重,为作为该模板的一部分的每个要素指定权重。对于在正常区中的取向,意味着将为每个片断的每个元件指定两个权重,对应于受所述片断影响的两个模板。在衰退区,为每个片断的每个元件指定一个权重。
[0131]
多种方法可以用于为与图7的教导一致的模板指定权重。在一个示例性实施例中,根据椭圆高斯指定浮点权重:
[0132][0133]
其中(u,v)是模板元件的信号投影坐标,w
bal
是在步骤720中为1.0并且在步骤740中将被调整,以及(u0,v0)为模板的原点的坐标。在步骤720中,原点(u0,v0)被设定为所述模板的几何中心,并且将在步骤730被调整。因为在所述正常区的模板由片断s和s+1(模p)组成,所以所述几何中心位于(s+1,0)。因为在衰退区的模板由片断s组成,所以其几何中心位于(s+0.5,0)。
[0134]
在步骤730中,对每个模板的权重进行调整,使得质心沿着斜率n/d的直线均匀地间隔布置。对于连续无限的椭圆高斯,根据公式3,质心位于(u0,v0),因此如果模板是连续且无限的,质心则已经沿着斜率n/d的直线均匀地间隔开。然而,由于权重位于离散的,不规则边界的网格上(例如,如在图3),质心一般不会被如此顺利地定位。
[0135]
在步骤730的作用域内,存在多种可以用于调整模板的权重的方法。因为期望进行相对细微的调整,一些实施例计算了来自其几何中心的模板的质心的平均偏移量。因为几何中心沿着斜率n/d的直线均匀地间隔开,在固定偏移量上偏离那些几何中心的点沿着斜率n/d的直线也将被均匀地间隔开。相对于几何中心的质心的平均偏移量为固定的偏移量,并且是质心的最小的整体运动,所述质心将它们沿着期望斜率的线均匀地间隔开。因此,确定相对于每个模板的质心的目标位置,允许最小的整体移动。
[0136]
一旦确立目标位置,对于每个模板的质心的运动向量是已知的。在一个示例性实施例中,优先为每个模板的一侧增加权重,以便在期望方向上并且通过期望量来移动质心。在对应于图3、4、6、18、19和20的示例的另一个示例性实施例中,原点(u0,v0)对每个模板分别进行调整,使得质心移动到目标位置。此实施例需要以两个未知数解两个非线性方程组(质心的坐标作为原点的坐标函数),可使用公知的牛顿

拉夫森法(newton

raphson)完成。
[0137]
对于从两个片断中产生模板并且u坐标相当均匀地分布的正常区,方程组通常受到良好约束,因此牛顿

拉夫森法快速收敛到合理的解。对于衰退区,方程组可以病态的或衰退的。因此在平行区,移动被约束在最接近投影方向的平行方向上(x或y),并且在对角区中,移动被约束在最接近投影方向的对角线方向上,从而产生可以用牛顿法求解的良态一维自由度问题。处理衰退区的这种方法优选使用下面描述的区选择方法。
[0138]
在步骤720和730的替代实施例中,使用椭圆抛物线来代替椭圆高斯。任何适当的位置函数可以在图7的范围内使用。本文描述的或由普通本领域技术人员设想的一些实施例可依赖于具有某些属性的函数,例如连续的。
[0139]
上文示出了调整质心的上述方法,以及由此可以得出相比于步骤720中获得的结果提供了更均匀的质心间隔的许多其他方法。利用允许的最小整体移动的目标位置是期望的,但不是必须的。牛顿

拉夫森法能提供非常精确的结果,但是如果速度比精度更重要,那么可以使用简单的估算。在权重被优先增加到一侧的实施例中,依赖于可以用来执行计算的时间,可以不同程度的精确度计算将要增加的权重以及增加权重的位置。
[0140]
步骤740通过单独地调整每个模板的w
bal
来缩放权重,使得每个模板具有相同的总权重,并使得在所有模板上的最大要素权重是一些期望值,例如为1.0。因为w
bal
对模板的质心或模糊都没有影响,可以自由调整而不扰乱完成的所有工作来获得期望的质心和模糊。
[0141]
根据公式3,对于连续无限的椭圆高斯,信号方向模糊是σ
u
,投影方向模糊是σ
v
。然而,由于权重位于离散的,不规则边界的网格上,实际模糊一般将有所不同。例如对于σ
v
=3.0并且v
max
=4.5,计算出的投影方向模糊一般在2.1

2.4的范围内。在正常区对于σ
u
=0.35b,计算出的信号方向模糊一般在0.33b

0.38b的范围内。在所述衰退区对于σ
u
=0.70b,计算出的信号方向模糊一般在0到0.23b的范围(在平行和对角线取向)内。如果对衰退区以与正常区同样的方式进行处理,信号方向模糊会高很多,可达0.5b。注意当计算出的模糊很低时,如在衰退区中,分辨率一般将会受到外部因素的限制并且通常是更现实地包括如上所述的系统模糊。
[0142]
步骤750计算在步骤770中可用于选择最佳子像素偏移量的模块(完整的模板的集合)的品质因数,并且还为了其它目的,例如用在图16中。因为在步骤740的调整之后,每个模板具有相同的总权重w
tot
,人们能将模块的权重定义为w
tot
。因为权重是规范化的,使得模块的最大要素权重是1.0,这与不同模块的权重相比是合理的。一般来说较高的总权重提供了更大的降噪,所以在一些实施中,品质因数为w
tot

[0143]
在其他实施例中,使用了称为密度的品质因数,其结合了降噪和分辨率,考虑了系统模糊σ
sys

[0144]
[0145]
其中σ
u
*为在模块中在所有模板上计算出的最大信号方向模糊。σ
sys
的合理值是0.28像素,模仿100%光电像素的模糊可以在没有移动模糊的系统中并且在理想的焦点填充因数。更高或更低的值可以被用来模仿不同的外部条件。
[0146]
在一些实施例中,像素权重模板使用迄今所获得的浮点权重。在其它实施例中,步骤780将浮点值转换为在依赖于整数算术运算来计算加权和的装置中所用的整数。对于步骤780,期望至整数值的转换保持总权重和迄今已获得的质心的偶数间隔的公式的合理精度。
[0147]
如上所述,缩放模板的权重不会影响质心或模糊。四舍五入到整数一般将会具有小但是非零的影响。在示例性的实施例中,对于模块的每个模板,在通常导致模块的模板具有完全相同的总整数权重的取整数之前,选择将应用的缩放因数。
[0148]
选择目标缩放因子w1,其接近期望的最大整数权重。例如,如果整数权重满足8位,所期望的最大权重可以为255,w1可以为254。需要注意的是w1为浮点值。对于模板的每个元件,通过将w1与先前计算的浮点权重的乘积取整数来计算暂时整数权重。模板的暂时总整数权重是暂时整数权重的总和。
[0149]
对于每个浮点权重w
f
和相对应的暂时整数权重w
i
,计算目标缩放因子w1的上限和下限,这样在界限之间的任意w1值使得w
i
不变。所述界限为(w
i
±
0.5)/w
f
。对于给定的模板,所有模板的所有要素的下限和上限的被收集到阵列中并且按照增加的数字顺序进行排序。因此所述阵列包含偶数个值,其中上半部>w1和下半部<w1。
[0150]
所述阵列可被视为沿着实数线的点,其中点之间具有大小不同的间隙。对于间隙内的任何w1值,模板的总整数权重是不变的,模板的总整数权重为w1与浮点权重的乘积取整数的和。因为w1跨越阵列中的点到下一个间隙,总的整数权重则以1为单位改变。阵列的中间间隙,即上半部和下半部之间的间隙,对应于总整数权重等于暂时总整数权重时的w1值。
[0151]
由于执行浮点运算的机器相关性能,从一个间隙到下一个间隙的转变的确切点有些不确定。如果阵列中的两个点与机器精度是相同的或几乎相同的,两者之间可能没有明确的间隙,其间可获得特定的总整数权重。增加或减少w1经过一个临近对将有效地使总权重以2为单位改变,但这些情况比较少见,部分因为获取浮点权重的方式,以及部分因为给定的高精度浮点数,即使一个很小的间隙就足够了。
[0152]
根据上述理解,可以完成步骤780的示例性的实施例的说明。对于给定模块的所有模板,通过将w1和w
tot
的乘积取整来计算目标总整数权重。对于给定的模板,目标总整数权重和暂时总整数权重的差表示总整数权重必须改变多少以命中目标。因为对于叉积阵列中的每个点,总整数权重变化为1(向上或向下),这种差别可以作为距离阵列中心的偏移量,以找到对应于目标总整数权重的间隙。使用所述偏移量,w1的值变为阵列中的两个相邻值之间的中点。利用w1的新值,通过将w1与浮点权重的乘积取整,计算模板的最终整数权重。
[0153]
由于最终整数权重是通过缩放和取整来计算的,保持了质心和模糊中的高精度。如果用于计算w1新值的间隙大体上大于机器精度,模板的总整数权重将恰好是目标值。在一些实施例中,简单地忽略总整数权重不同于目标的罕见情况

将所述差别视为不显著。在其它的实施例中,向上或向下调整没有命中目标的模板的单独整数权重,以修正总权重。优选第,被如此调整的权重为最接近的取整点。
[0154]
在一些实施例中,执行步骤790来为模块选择dma(直接存储器存取)转移模板,多
种装置可使用dma转移模板来获得dma控制器可以使用的参数,以从存储器中获得对于给定的投影线产生1d信号的像素。涉及图9、13、14、15、17、18、19和20的转移模板的选择和用于此目的的dma的使用将进一步描述如下。
[0155]
在一些实施例中,步骤720的部分上的变化可用于确定模块的区(平行,对角线,或正常)。从已知值n、d、σ
v
和v
max
中,对于给定的子像素偏移量值(x0,y0),将成为片断的要素的所有像素位置可以通过下面所述的步骤720来识别。如果存在子像素偏移量,使得对于每个片断,片断中的要素都完全包含在像素网格的一行或一列中,那么模块是在平行区中。如果存在子像素偏移量,使得对于每个片断,片断中的所有要素都完全包含在像素网格的一条对角线中,那么模块是在对角区中。否则,模块处于正常区中。
[0156]
在可替换的实施例中,使用基于例如双线性插值的插值方法来选择像素权重模板的方法替代步骤720、730和740。在此替代实施例中,像素权重模板用于计算在投影方向上沿着一直线分布的点上的内插像素值的总和。此内插公式并不适用于数字图像的像素本身,因为这通常可用现有技术的内插方法来完成,而不是用来计算模板。以这种方式获得的模块的模板,一般将比本文所描述的其它模板具有更复杂的重叠图案,因为如上所述,其中例如双线性插值像素可以影响一个、两个、三个甚至四个投影面元。
[0157]
在现有技术的内插方法中,固定的投影面元间隔一般用在所有取向上,例如1个像素。但是,为了产生像素权重模板的重复序列,投影面元间隔必须是取向的精选函数。参照公式(1),为了得到p,就必须从作为n和d的函数的一般为无理数的特定集合中选择整数b。只有在罕见的取向上,例如n=3,d=4,例如1个像素的简单值b将产生模板的重复序列。因此,对于使用内插来选择像素权重模板的替换实施例,面元间隔被选择为取向的函数,如本文其他地方所描述。
[0158]
图8示出了与使用双线性插值方法相比,通过于此所描述的实施例获得的增强的分辨率。从条形码800中,沿着投影线810使用现有技术中的双线性插值,在1个像素的面元间隔上,抽取1d信号820。沿着投影线810,使用本文所描述的实施例抽取1d信号830。两种方法都具有高光度和几何精度,但大幅减少了本文所描述的实施例中的信号方向模糊,从而允许更小的面元间隔和更高的分辨率。
[0159]
对于通过双线性插值抽取的1d信号820,特征840、842和844强烈地衰减。特征850、852、854和856完全丢失。这些衰减或丢失的特征与条形码800的狭窄的条形形状和空白相对应,所述衰减和/或丢失可以防止条形码800被解码。同时这些特征在1d信号830中有所衰减,衰减也不是那么严重,以防止条码800被解码。
[0160]
图9示出了模块的数据结构900,可以在根据本发明实施例的各种装置中使用。处理器数据910包括计算装置所使用的信息,例如由微处理器或可编程门阵列使用,以通过使用像素权重模板的重复序列来计算1d信号。包括在处理器数据910中的是对应于模块900的投影线允许取向的描述,其由为以上所述的的整数n和d的比率的斜率来确定。还包括模块的像素权重模板的数量p,其与通过一个副本产生的投影面元和所述模块的周期数量相同。可以使用关于(平行,对角线,或正常)区块的信息,例如,来确定模块的片断是否影响一个投影线或两个,其中取向落入所述区块内。
[0161]
指定模板质心的信息是有用的。在p个质心以足够精度沿着斜率n/d的线均匀地间隔开的实施例中,只要一个质心的位置就足以指定他们所有。可相对于定点像素指定质心,
所述定点像素是在模块的一个任选的模板中的一个任选的像素,例如第一模板的第一像素。
[0162]
模块数据结构900还可以包括转移模板920。此模板提供了计算dma转移参数集合所需要的信息,所述dma发送参数可用来在模块900的取向上获得与特定投影线相对应的像素,下文将对此进行详细描述。
[0163]
在一些实施例中,模块的数据结构900是在例如微处理器的可编程的设备的软件中实现的。所述微处理器可包含dma控制器,如图14所示和下面进一步描述。模块数据结构900可以由例如众所周知的c语言的编程语言来指定,如图17所示和下面进一步描述。
[0164]
在一些实施例中,为每个或一部分允许取向集合计算模块数据结构900,并将其存储在存储器中。一个示例示于图18、19和20中。分子列1800、分母列1801、面元计数列1802、区列1810、x质心列1820和y质心列1821保存处理器数据910。dma类型列1830、“a”计数列1831、基准计数列1832、附加片断的索引列1833、“b”偏移量列1834、x原点列1835和y原点列1835保存转移模板920。
[0165]
模块的实际像素权重模板900未显示在图9中。在下面图10和图12给出了定义所述模板的数据示例。
[0166]
图10是c语言的计算机程序的一部分,其可以在包括微处理器或其它可编程计算设备的实施例中使用。在这些实施例中,如上所述,从片断中产生模块。片断包括一个或多个控制字1000。每个控制字1000定义了像素的相对位置(pixeloffset),以及用于从片断中产生的两个相邻像素权重模板的权重(binweight0,binweight1)。
[0167]
像素偏移量是相对于定点像素的。对于模块的每个完整的副本,定点像素保持不变,然后为下一个副本进行更新。像素偏移量可以被指定为(x,y)偏移量。它也可以指定为作为地址偏移量的控制字1000,其结合了基于像素的行的间距(行地址差)的x和y分量。在示例控制字1000中,为像素的偏移量分配15位,从而使整个控制字1000为实用的32位。在给定的实施例中可以根据需要分配更多或更少的位。
[0168]
在图10的实施例中,模块的全部控制字以连续元件阵列的形式存储在存储器中,使用片断控制字0开始,并使用片断控制字p

1结束。每个控制字1000包含表示一个片断的结束和一个投影线输出的标志(nextbin)。
[0169]
为了使用模块的片断来抽取1d信号,提供了输入变量1010,例如通过子程序的调用或通过任何合适的手段。如将要看到的那样,在执行内部循环1030期间,更新一些这种输入变量1010,而其他的是不变的。
[0170]
输入变量pixeladdress是指向模块当前副本的定点像素的指针。最初,它指定第一副本的定点像素,并且在每个副本上进行更新。输入变量binaddress是指向将被产生的下一个投影面元的指针。最初,它指定1d信号的第一面元,并且在每个片断之后进行更新。输入变量count指定要产生的1d信号中的控制字的保持数目。最初,它指定控制字的总数,应该对应于整个数量的片断并且可以对应于全部副本或可以不对应于全部副本。根据所需的投影面元的数量和在每片断中控制字的已知数量来计算count的初始值,随着内部循环1030的执行,向下计数到0。
[0171]
输入变量controladdress是指向模块的第一个控制字的指针,不用对其更新。输入变量modulesize指定的模块中控制字的数目,不用对其更新。输入变量moduleoffset指
定从一个副本的定点像素到下一副本的定点像素的像素地址偏移量,不用对其更新。
[0172]
在执行内部循环1030期间,使用循环变量1020。循环变量bin0和bin1是两个寄存器的集合,保存受当前正在处理的片断影响的两个投影面元的当前部分和。如图所示,它们被初始化为零,如下所述,在执行内部循环1030期间,他们被线性地移位。循环变量controlloopcount保存当前副本的已处理模块的控制字的数目的计数。它被初始化为0,为每个控制字而递增,并且在每个副本的结尾复位到0。
[0173]
每处理一个控制字,执行内部循环一次。提取当前的控制字,并使用控制字中的像素偏移量,提取所述当前像素。然后使用在控制字中的像素和两个权重更新在两个寄存器(bin0和bin1)的集合中的面元部分和。
[0174]
如果控制字中的标志指示片断的结束,所述两个寄存器(bin0和bin1)的集合被线性地移位。下一个投影面元从bin0的移出值中产生;将bin1移入bin0;以及将0值移入bin1。其效果是每个投影面元是由两个连续的片断产生的,所述片断定义了模块的一个像素权重模板。
[0175]
循环变量controlloopcount递增,并且如果值指示模块的结束,所述模块的结束对应于像素权重模板序列中的一个完整副本的结束,然后pixeladdress被更新到用于下一个副本的定点像素的点并且controlloopcount被复位至0。
[0176]
应当注意的是,通过内部循环1030产生的第一投影面元是无用的,因为只使用了一个片断。
[0177]
图10的程序可以用于模块,例如衰退区内的模块,其中像素或整个片断只影响一个投影面元,而不是两个。在这种情况下,binweight1可以设置为0。可选地,可以使用每个控制字仅有一个权重并且只有一个寄存器的集合的类似程序。
[0178]
对于每个像素可影响两个以上面元的实施例,例如影响n个面元,控制字1000可以保存n个权重,循环变量1020可包括n个寄存器的集合,以及内部循环1030可以更新并线性地移位n个寄存器的集合。对程序的这种修改可以由普通技术人员进行。
[0179]
图11示出了一个实施例,其计算步骤可以不主要依赖于软件而是依靠数字电子设备来执行操作,例如现场可编程门阵列(fpga)。表格存储器1100保存了包括示例模块1110的模块的集合,其对应于投影线的允许取向的集合或这样集合的一部分。示例模块1110保存了指定像素权重模板的重复序列的数据,其中如先前所述的,信息是以片断的形式存在。
[0180]
图像存储器1120保存了数字图像或其一部分。来自示例模块1110的像素位置数据由地址发生器1125使用以为图像存储器1120提供地址,以便提取相应的像素。像素被送入第一乘法累加器1130和第二乘法累加器1132,所述乘法累加器将像素值与从示例模块1110中读取的权重相乘,并且将乘积添加至寄存器01142和寄存器11140。
[0181]
寄存器01142和寄存器11140包括如图所示可以线性地移位的两个寄存器的集合,其中0值被移入寄存器11140,从寄存器01142移出的值被写入至1d信号的投影面元1150。在每一片断的结尾,如由标志位、计数或在示例模块1110中的其他数据所表示的,发生了线性移位。
[0182]
对于每个像素可影响两个以上面元的实施例,例如n个面元,示例模块1110将保存n个权重,并且可以有n个乘法累加器和n个寄存器。对设备的这种修改可以由普通技术人员进行。
[0183]
控制单元1160负责控制和协调的图11装置的各种元件。它为表格存储器1100提供地址和读取信号,控制地址发生器1125,发送读取信号到图像存储器1120,命令第一乘法累加器1130和第二乘法累加器1132行动,命令寄存器01142和寄存器11140以为并写入1d信号1150,并提供任何其他必要的命令和控制功能。控制单元1160和图11中的其它元件之间的连接为了附图的清楚,已经从图中省略。控制单元1160可包括或不包括计算机软件。
[0184]
在此术语乘法累加器是指任何数字电子设备或其一部分,所述乘法累加器能够将像素与权重相乘并以某种存储形式将乘积相加。乘法累加器可包括专用于该目的的元件,例如第一乘法累加器1130或第二乘法累加器1132,或它可以包括通用设备的一部分,例如微处理器内部的运算单元,如在对于内部循环1030的情况。
[0185]
图12示出了一个使用提供点积指令的数字信号处理器(dsp)的实施例。dsp是具有多种设计为加强数字信号处理的结构特征的微处理器。在图12的示例性实施例中,使用能够执行德州仪器的c64x+指令集的dsp,例如德克萨斯州达拉斯的德州仪器公司制造并出售的tms320dm6435。所述指令集在德州仪器常用的文档中得到说明,例如“文献编号spru732h”。在图12中,含有小写文字的矩形一般表示保存数据(寄存器或存储器)的存储位置,而含有大写文字的圆角矩形则表示c64x+指令集中的指令。
[0186]
在一个示例性实施例中,模块由片断组成,每个像素权重模板从两片断中产生,并且每个像素影响两个投影面元,所有如上所述。然而不同于前面的示例,在图12中的实施例中,使用部分c64x+指令集的单指令多数据(simd)功能对2个像素进行并行处理。因此,控制字1200类似于控制字1000,不同的是控制字1200包含2个像素偏移量和4个权重,并且是64位宽。控制字1200还包括标有"e"的片断结束标志,这意味着在本实施例中所有片断将提取并处理偶数个像素。
[0187]
对于每个控制字1200,第一ldbu(无符号负载字节)指令1220提取第一像素1222,第二ldbu指令1210提取第二像素1212。使用包含在控制字1200中的2个偏移量从存储器中提取像素。所述存储器可以是dram或高速缓冲存储器的一部分,或者它可以是片上sram的一部分。pack2指令1230将第一像素1222和第二像素1212合并成单个32位的寄存器1232。
[0188]
如图所示,ddotp4(双点积)指令1240执行4次相乘和2次相加,这对于仅仅一个指令来说具有庞大的计算量。产生的两个点积被放置在通用寄存器1260和通用寄存器1250中。第一add指令1262和第二add指令1252将点积加入到包括第一寄存器1264和第二寄存器1254的2个寄存器的集合中,可以通过使用未显示的指令将其线性地移位来产生1d信号。
[0189]
将ddotp4指令1240、第一add指令1262以及第二add指令1252相结合来提供4个乘法累加器的等效物。无论特定的dsp是否执行c64x+指令集,在根据图12的程序的控制下,实际上使用4个独立的乘法器和4个独立的加法器是无关紧要的。
[0190]
例如微处理器和dsp的其他常用可编程设备提供了点积指令,其可以执行一个、两个或甚至更多的点积。例如,来自执行所谓的mmx指令集的英特尔公司和amd的微处理器包括pmaddwd指令,其执行双点积,并可以用在类似于图12的实施例中。也可以使用浮点点积指令,例如使用所谓的sse4指令集中由英特尔和amd提供的指令。
[0191]
为允许取向的集合创建模板,例如使用图7所示的方法,在计算量上是复杂和昂贵的,但也可以使用存储在存储器中的结果来离线完成,例如图11中的表格存储器1100。对于运行时间的操作,如上所述从片断中产生像素权重模板可带来在运算上简单而快速的装
置,如在图10、图11和12的示例性实施例中可以看出。然而,计算量可能不是影响操作速度的唯一因素。人们也可以考虑从数字图像中提取像素所需要的时间,在一些实施例中这些时间可以远多于处理所述像素所需要的时间。
[0192]
当使用片断时,以一般由投影线的取向和像素网格的几何形状确定的顺序提取像素,所确定的顺序可能不利于某些类型的存储器,特别是动态随机存取存储器(dram)。如果数字图像保存在静态随机存取存储器(sram)中,任何访问顺序与任何其他顺序一样快,那么由片断产生的像素顺序大体上不影响操作的速度。这是通常的情况,但是,可用的sram太小以致于不能保存整个图像,因此整个图像必须被放置在一般大得多的dram中。
[0193]
dram具有访问顺序存储器位置一般比访问非顺序存储器位置快得多的属性。因此,在数字图像被保存在dram中的实施例中,优选以顺序的序列提取像素并且以不同于片断确定的次序来处理所述像素。这可以通过将保存在dram中的数字图像的适当部分转移(复制)到sram来完成。所述转移可按照合理顺序的次序进行,并且在sram中,由片断确定的处理次序不会降低性能。需要注意的这里的顺序指的是在图像中连续不断的x坐标,当然选择哪个方向是x,哪个是y是任意的。
[0194]
在一些实施例中,可以通过将用于抽取第一1d信号的像素的转移与先前用于抽取第二1d信号的像素处理重叠来获得速度的进一步提高。
[0195]
在一些实施例中,例如在图10和图12所示的示例性实施例中,使用像素的偏移量,其是使用已知的行间距合并了像素偏移量的x分量和y分量的地址偏移量。在这样的实施例中,并且其中的地址偏移量是离线产生并存储在存储器中,数字图像的行间距可以预先未知。因此,在转移像素的行动期间,期望将来自数字图像的行间距改变为预先已知的值。
[0196]
因此,显然将像素从数字图像的适当部分转移到工作内存中可提供某些优点,包括顺序地存取,同时进行像素提取和像素处理,以及使用具有预先未知的行间隔的地址偏移量的能力。在任何特定的实施例中,人们都期望具有一些或所有这些优点。对其中的一些优点,数字图像优选地保存在dram中,并且工作内存是优选的sram,但是也可以在其他实施例中使用其他结构。
[0197]
转移像素以此获得上述的一些或全部优点的一种方法是使用直接存储器存取控制器(dma),以后总数字电子部件,其常在例如微处理器和dsp的可编程设备中设有。例如,可以使用由德州仪器提供的,并且在例如"文献编号spru987a"的常用的文档中说明的增强型直接存储器存取控制器。
[0198]
dma转移的一个重要特性是其维数。一维转移简单地从源到目的拷贝像素序列(例如字节)。1d转移的参数是源地址和目的地址和计数。
[0199]
二维转移将2d源阵列的一部分拷贝到2d目标阵列的一部分中。所述2个维度可以被称为a和b。所述部分可以被指定为每行a

count像素的b

count行,并且每个阵列可以由地址和b

pitch(例如行之间的地址差)来指定。注意所述源和目的阵列的b

pitch可以不同。
[0200]
三维转移将3d源阵列的一部分拷贝到3d目标阵列的一部分中。所述3个维度可以被称为a、b和c。所述部分可以被指定为每行a

count像素的每帧的b

count行的c

count帧,并且每个阵列可以由地址、b

pitch(例如行之间的地址差)和c

pitch(例如帧之间的地址差)来指定。注意所述源和目的阵列的b

pitch和c

pitch可以不同。
[0201]
一般地,n维转移具有n个计数、n

1个源间距和n

1个目的间距。2d和3d转移的更多解释和示例可以在以上引用的文件spru987a中找到。对于提供2d转移,但不支持3d转移的一些设备,3d转移可以通过合适的链接,连结或2d转移序列的其他程序设计来布置。
[0202]
由于dma转移的形状是由少量的参数(计数和间距)确定的,对于投影线的大多数取向,通常不可能只转移像素权重模板的重复序列将需要的那些像素。因此,不需要的像素也将被传递,这浪费了时间和空间,所以期望最小化这些不必要的转移。
[0203]
在一些现有技术的图像处理系统中,dma用于将数字图像的矩形部分转移到更快的处理存储器中。例如所述矩形部分可以是将被处理的像素的最小外接矩形。这里使用2d转移时,其中源b

pitch等于源图像的行间距。所述目标b

pitch可设定为a

count,生成没有浪费行之间的空间的目标阵列。
[0204]
这种现有技术方案可能具有多种缺点。例如,对于投影线的大多数取向,像素所需的最小外接矩形一般包含太多不需要的像素。转移他们的附加时间抵消了进行dma转移的速度优势。保存他们所需的附加空间对于可用的sram来说太大了。目的的行间距依赖于投影线的长度,其可能是预先未知的。
[0205]
图13示出了本发明的一个实施例,其利用2d和3d的传递最小化了不需要的像素,并且允许像素的地址偏移量,无需源图像的行间距或投影线的长度的任何先验知识。这是通过两步的过程来部分实现的。首先,对于投影线的给定取向,选择指定了对于其取向有利的转移图案的转移模板,例如,最小化不需要的像素的转移图案。所述转移模板是与取向相关联的模块的一部分,对于允许取向集合或所述集合中的大多数允许取向,可离线计算所述转移模板,并将其存储在存储器中。可选地,在接收到描述特定投影线的信息之后,可计算转移模板。图13的示例性实施例使用了转移模板920。
[0206]
其次,一旦接收到描述特定的投影线的信息(例如在运行时间),使用与投影线的取向相关联的转移模板来产生为特定投影线自定义的dma转移参数。从转移模板中产生所述转移参数一般包括使用关于在投影线的起点的存储器中的地址的信息和投影线的长度。
[0207]
在图13的示例中,投影线(未示出)具有斜率为每向右3个像素向下2个像素的取向。具有5个像素权重模板的模块被使用并从5个片断中产生。这里n=2,d=3,p=5。5个片断示出为第一副本1340、第二副本1342和第三副本1344。如在图5的示例中,示出了全部副本,但是如上所述,没有必要将处理限制到全部数量。其还示出了第一副本定点像素1320。
[0208]
在图13中,点示出了将被转移的不需要像素,所述不需要像素包括示例不需要像素1330。虽然在图中看似存在相当多的不需要像素,但随着投影线变长,只增加了非常少的不需要像素,在这个例子中每个副本只有2个不需要像素。
[0209]
对于图13示例中的取向,使用了3d转移。a

count是转移模板920的一部分,在本示例中为17。b

count为n,这里为2,b

count一般可在模块的其他地方得到,所以不需要在转移模板中重复。如下计算c

count:
[0210][0211]
这里basecount(这里是4)和extraslicelndex(这里1)位于转移模板920中,p(这里是5)一般可在模块的其他地方得到,所以不需要在转移模板中重复,numslices(此处15)
是对于投影线将被处理的片断的总数,其不需要为副本的全部数量(即多个p)。使用图13的示例中的值,我们得到c

count=4+[(15+l)/5]=4+[3.2]=7。如在图中可以看到,存在7帧,每帧具有2行,每行具有17个像素,包括示例帧1300。
[0212]
在图13的示例中,源b

pitch等于源图象的行间距加上在转移模板920中的b偏移量(这里是2)。注意源的b

pitch一般不等于源的行间距。源的c

pitch为n倍的源的行间距,加上d,其允许跟随投影线的3d转移。
[0213]
目的的b

pitch等于a

count,并且目的的c

pitch等于n倍的a

count,其具有两个需要的特性。首先,在目标存储器中的像素损耗了很少的存储空间。当然,不需要像素的存储空间是必需的,但是损耗了很少的存储空间或没有附加的存储空间。第二,目标b

pitch和c

pitch完全是根据预先已知的信息来计算,因此可以使用像素的地址偏移量,无需源图像的行间距或投影线的长度的任何先验知识。
[0214]
源起始地址是从可从描述投影线的信息中获得的第一副本定点像素1320的坐标以及在转移模板920中的dma偏移量向量中计算出,这里为(

16,0)。目的起始地址是工作内存中可以放置像素的任何合适位置。
[0215]
对于模块,其中n=1,b

count将为1。对于这些取向,2d转移就足够了。c维度变成b维度,不再需要c维度。
[0216]
随着投影线的取向接近x方向,a

count增加并且不需要的像素的数量也增加。在足够低的角度,即足够地接近x方向,可能不期望使用如上所述的2d或3d转移类型。请注意这些低取向一般与平行区取向不同,并且它们不包括靠近它们方向的取向。对于这些低取向,可以使用块式dma转移。所述块式转移是3d的,其中对于模块的一个副本,每个源的帧是的所需像素的最小外接矩形。
[0217]
图18、图19和20示出了特定的171个允许取向的集合的转移模板,包括图13中的取向,其在图19中出现在对应于33.69度的行中。转移模板出现在dma类型列1830、“a”计数列1831、基准计数列1832、附加片断的索引列1833、“b”偏移量列1834、x原点列1835、y原点列1835中。
[0218]
图14示出了可使用上面所描述的关于图13的转移模板的装置的实施例。微处理器1400可以是例如德州仪器制造和出售的tms320dm6435的dsp,微处理器1400通过存储器控制器1420连接到dram1410。微处理器1400可以通过指令和数据高速缓冲存储器1440在程序的控制下存取dram 1410中的数据,根据需要从dram 1410中通过存储器控制器1420填充微处理器1400。
[0219]
微处理器1400还可以命令dma控制器1430从dram 1410转移数据到sram 1450,通过使用存储器控制器1420完成这种操作。微处理器1400可以在程序的控制下存取sram1450以通过使用从dram 1410转移的数据来执行计算。微处理器1400通过部分地使用转移参数1432来控制dma控制器1430。
[0220]
dram 1410的一部分用于转移表格存储器1470,所述表格存储器1470保存了允许取向的集合的转移模板或这种集合的一部分。转移表格存储器1470可以是保存模块数据的存储器的一部分,如图9所示。dram 1410的另一部分用于保存数字图像的图像存储器1460。sram1450的一部分用作工作内存1452,所述工作内存1452将接收一部分来自图像存储器的数字图像。
[0221]
微处理器1400响应于投影线的取向,从转移表格存储器1470中选择转移模板。利用转移模板和关于投影线的信息,微处理器1400计算自定义的转移参数的集合,将其传送至dma控制器1430中的转移参数1432,并命令dma控制器1430将来自图像存储器1440的数据转移到工作内存1452中。微处理器1400沿着投影线,使用至少一部分(例如忽略不需要的像素)转移到工作内存1452中的数据,计算1d信号。
[0222]
图15显示了一个典型的转移参数集合1500的细节,所述转移参数1500可结合图13中的方法一起使用,并作为图14中的转移参数1432。“选项”字段允许选择2d或3d转移,以及其他功能。转移参数1500的所有其他字段与图13一起在上面已经说明。
[0223]
图7中的步骤700为给定方向的投影线选择面元间隔,例如根据公式(1)为给定的斜率n/d选择p。现在提供选择面元间隔时的附加信息。
[0224]
图16示出了在先前在公式(4)中定义的密度品质因数的曲线图1600,作为在斜率为3/5的取向的像素中的面元间隔b的函数。对于曲线图1600,σ
u
=0.35b,σ
v
=3.0,σ
sys
=0.28。密度为每平方像素的模块权重的单位,较高的模块权重值一般意味着更多的降噪。权重一般随着面元间隔的变小而减小,但是如可以看出的沿着密度曲线1610的密度在面元间隔的宽范围内大致上恒定,除了少数几个明显的尖峰,使得密度能够称为包括降噪和减少模糊两个优点的有用的品质因数。
[0225]
一般期望对应于例如第一尖峰1620、第二尖峰1630、第三尖峰1640或第四尖峰1650的尖峰中的一个尖峰来选择面元间隔。其它取向一般表现出相似的尖峰,一般在某些不同的面元间隔,可以是更明显或更不明显的尖峰。它也被视为期望来选择面元间隔,使其随着取向的函数而合理平稳地变化,所以一般避免了对于取向的微小变化,在面元间隔产生大的跳变。
[0226]
因此,能够预测哪里可能出现这些尖峰是有用的。
[0227]
一般出现尖峰的n、d和p值满足:
[0228]
a min(|n|,|d|)+b max(|n|,|d|)=bp
ꢀꢀꢀ
(6)
[0229]
其中a和b为小整数。在曲线图1600中,其中n/d=3/5,所述尖峰显示如下:
[0230]
尖峰abndpb第一尖峰1620113580.729第二尖峰1630233570.833第三尖峰164012610130.897第四尖峰1650133560.972
[0231]
一般来说尖峰对于小值a和b最为明显,例如a=1,b=1或2。注意这里示例的n和d并非互质的。
[0232]
合理的策略,特别是用于正常区的取向,对于期望高分辨率的实施例,将使用a=1,b=1,对于某些期望较差分辨率的实施例中,将使用a=1,b=2。其他的选择也可能是合理的,包括以下由公式(6)提供的指引。对于衰退区,特别是对于平行区,优选其中面元间隔大于1个像素的甚至更低的分辨率,如本文其他地方所述人们可以做出其他选择。
[0233]
图17提供了在一个示例性实施例中指定模块900的c编程语言的说明明。图17中的说明还定义了图18、19和20的数据,其使用c编程语言示出了用于初始化的静态阵列形式的允许取向的集合的模块。
[0234]
枚举说明1700为多种可在一个示例性实施例中使用的dma类型提供了符号名称。blockstyle,twodstyle和threedstyle在上述的图13中已经得到描述。v2dstyle和v3dstyle与用于转移数据的twodstyle和threedstyle以相同的方式使用。它们用在与x方向相比,更接近y方向的取向(即45度以上),以通过适当地交换x和y,允许从低于45度的取向中创建的那些取向。
[0235]
结构说明1710指定了一个示例性模块的布局和数据类型。术语“s 16.8”指的是16位的有符号的定点值,其中8位在二进制小数点的右边。controlcodes元件是指向定义了模块的片断的像素位置和权重的数据的指针,它可以是任何合适的形式,例如控制字1000或控制字1200的阵列。在图18、图19和20中,所述指针被显示在控制代码指针列1840中。结构说明1710中的所有其他要素,以及图18、19和20的所有其他列已经在本文其他地方得到了描述。
[0236]
因为图18、19和20的模块以斜率增加的顺序进行排序,因此可以快速地通过使用二分法检索来选择最接近于任何给定投影线的模块,例如图2中请求的投影线250。虽然只显示了0度和90度之间的角度,但从90到180度的取向可从所显示的角度中通过在计算地址偏移量时将其坐标取反而创建,以从转移模板中产生dma转移参数,以及在其他适当位置中创建,这对普通本领域技术人员来说将是显而易见的。
[0237]
在图18、图19和20中已经选择了允许取向的集合,使得连续取向之间的角度差不超过0.7度,因此具有较小d值的模块是优选的。用于选择允许取向的集合的任何合适的方法都是适用的,例如选择连续取向之间的角度差大体上恒定的集合。模块不是存储在表中,而是在接收到描述投影线的信息之后才根据需要来计算的实施例中,允许取向的集合大体上不同于在此显示的集合。
[0238]
以上所述的技术可以在数字电子电路或者在计算机硬件、固件、软件或它们的组合中实施。此实施可以作为计算机程序产品,即有形地体现在机器可读存储设备中的计算机程序,由数据处理装置,例如可编程处理器,计算机,和/或多个计算机,执行或控制所述数据处理装置的操作。计算机程序可以采用任何形式的计算机或编程语言编写,包括源代码、编译代码、解释代码和/或机器代码,并且所述计算机程序可以以任何形式部署,包括作为独立程序或作为子程序、组成部分或适于在计算环境中使用的其它单元。计算机程序可以部署为在一个或多个地点在一台计算机或多台计算机上执行。
[0239]
方法步骤可以由一个或多个运行计算机程序以通过对输入数据和/或产生的输出数据进行操作处理器来执行,以进而完成本发明的功能。方法步骤还可以由下装置执行,并且所述装置可以实现为专用逻辑电路,例如,fpga(现场可编程门阵列)、cpld(复杂可编程逻辑器件)、psoc(可编程系统芯片断)、asip(专用指令集处理器)或asic(专用集成电路)。子程序指的是实现一个或多个功能的计算机程序和/或处理器/专用电路的某些部分。
[0240]
适合于运行计算机程序的处理器包括,举例来说,通用和专用微处理器、数字信号处理器以及任何类型的数字计算机的任何一个或多个处理器。一般来说,处理器从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的重要组成部分包括执行指令的处理器和一个或多个用于存储指令和/或数据的存储器设备。例如高速缓存的存储器设备可用于暂时存储数据。存储设备也可以用于长期数据存储。计算机可以操作地与外部设备相连,例如工厂自动化或物流设备,或与通信网络相连,例如工厂自动化或物流网络,以便
从设备或网络接收指令和/或数据,和/或发送指令和/或数据到设备或网络。适于体现计算机程序指令和数据的计算机可读存储设备包括所有形式的易失性和非易失性存储器,包括半导体存储器形式的设备,例如:dram、sram、eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和光盘,例如,cd,dvd,hd

dvd和蓝光光盘。所述处理器和存储器可以通过专用逻辑电路补充和/或合并在专用逻辑电路中。
[0241]
本领域的技术人员会意识到本发明可以通过其他具体形式体现而不背离其精神或本核心特征。因此,以上所述的实施例在所有方面上都是说明性的而不是对本文所描述发明的限制。因此,本发明的范围由本发明的权利要求所限定,而不是由前面的描述所限定,并且在与权利要求等同的意义和范围内的所有改变均落入本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1