一种双三次插值误差累积消除方法及装置的制造方法

文档序号:9668105阅读:591来源:国知局
一种双三次插值误差累积消除方法及装置的制造方法
【技术领域】
[0001]本发明属于图像处理技术领域,尤其涉及一种用于图像缩放的双三次插值误差累 积消除方法及装置。
【背景技术】
[0002] 图像缩放在数字图像处理中很常见,在安防产品的应用中也很广泛。图像缩放算 法可分为基于边缘的图像缩放算法和不基于边缘的图像缩放算法。前者缩放后的视觉效果 很好,但硬件实现难度大;后者缩放后的视觉效果稍差,但易于用硬件实现,因此在工程上 被广泛采用。常见的不基于边缘的图像缩放算法有双线性插值算法和双三次插值算法。相 比之下,基于双三次插值算法的图像缩放效果更佳,但硬件资源开销较大。
[0003]双三次插值算法的基本原理是:对于等间隔的已知采样点X-1,XQ,XI,X2,其采样值 为f(X-l)、f(XQ)、f(Xl)、f(X2),x为待求插值点,插值计算值为f(x),所求插值点可以用表达 另
I示,BP插值结果f(x)等于各采样值f(x-1)、f(x〇)、f(xi)、f (X2 )的加权求和,其中u(Sk)为加权系数,Sk为x到Xk的归一化距离。
[0004]将双三次插值算法移植到二维图像上,如图1所示,利用表达式
~可以先在水平方向上根据;^0、;^1、€2、€3计算出?(),根据€4、;^5、 ;1^6、;^7计算出?1,根据€8、€9、;^10、;^11计算出?2,根据;^12、;^13、€14、;^15计算出?3,然后根据?〇、?1、F2、F3计算出最后的结果F。从而实现图像的缩放。
[0005]在图像缩放中,根据双三次插值计算公另
旨值点X的 定位非常关键,很明显插值点X的位置决定插值点到4个采样点的距离u(sk),甚至影响到能 否准确找到4个采样点f(xk)。如图2所示,缩放前原始图像从0开始按非负整数编号,形成的 坐标区间,采样点和插值点都在这个坐标区间内;原始点就是缩放前的12个像素点,采样 点取自原始点;插值点就是缩放后的像素点,插值点的个数取决于缩放比例,如12个点放大 2倍插值点就有24个点。
[0006]对所有插值点从0进行编号,每个插值点有一个编号,如0、1、……23。其中步长就 是坐标区间内相邻插值点之间的距离,体现到坐标区间内,由于相邻原始点之间距离为1, 因此"步长=原始点个数/插值点个数=1/缩放比",如12到达到24,缩放比为2,步长=12/ 24 = 1/2 = 0.5〇
[0007]显然插值点的定位其实就是插值点坐标计算,显然:插值点坐标=插值点编号*步 长。如图2中,编号为5的插值点,其,坐标= 5*0.5 = 2.5,进一步可以定位到4个采样点坐标: 1、2、3、4,相应的81{为1.5、0.5、0.5、1.5 ;再如编号为14的插值点,其,坐标=14*0.5 = 7,进 一步可以定位到4个采样点坐标:6、7、8、9,相应的sk为1、0、0、2。
[0008]然当"1/缩放比"不能被除尽时,如1/3、1/7等,会产生无限位小数,在工程实现中 必须有小数位取舍,形成误差,这种舍入误差将影响4个采样点的距离u(sk),甚至影响到能 否准确找到4个采样点f(xk)。舍入后的实际步长与理论步长存在差异,导致某些插值点坐 标严重偏离,产生误差。
[0009] 现有技术在消除误差方面,方法一是先做除法舍入,再做步长累加,便于FPGA实 现,但是误差累积;方法二是先做步长累积,再做除法舍入,误差不累积,但是FPGA资源开销 大。方法一的问题是插值点编号越大,误差累积越大,当误差累积到一定程度后,采样点xk 和采样点距离sk都会严重偏离,导致图像出现横竖条纹。方法二的问题是乘法器和除法器 位宽都比较宽,很消耗FPGA资源,而且逻辑实现除法器不光资源开销大,而且时序控制难, 延迟大。

【发明内容】

[0010] 本发明的目的是提供一种双三次插值误差累积消除方法及装置,用于消除误差累 积,同时又不需要复杂的FPGA实现电路。
[0011 ]为了实现上述目的,本发明技术方案如下:
[0012] 一种双三次插值误差累积消除方法,所述方法包括:
[0013] 根据设定的缩放比,确定进行补偿的第二补偿循环值;
[0014] 在插值时,初始化首个插值点坐标与首个原始点坐标一致,并设置第二计数器为 〇,插值点计数器为〇,开始对插值点进行计数,每增加一个插值点第二计数器、插值点计数 器均加1,当第二计数器计数达到第二补偿循环值减一时,对当前插值点坐标进行补偿,并 对第二计数器进行清零,继续进行计数和插值直至完成插值。
[0015] 其中,在缩放比是放大时,所述第二补偿循环值等于缩放比,在缩放比是缩小时, 所述第二补偿循环值等于1/缩放比,所述当第二计数器计数达到第二补偿循环值减一时, 对当前插值点坐标进行补偿,其中:
[0016]当前插值点坐标=插值点计数器计数值*理论步长;
[0017] 所述理论步长=1/缩放比。
[0018] 进一步地,所述方法还包括:
[0019] 根据设定的补偿值和缩放比,确定进行补偿的第一补偿循环值;
[0020] 在初始化首个插值点坐标与首个原始点坐标一致时,还设置第一计数器为0,开始 对插值点进行计数,每增加一个插值点第一计数器加1,当第一计数器计数达到第一补偿循 环值减一时,对当前插值点坐标根据第一补偿循环值进行补偿,并对第一计数器进行清零, 继续进行计数和插值直至完成插值;
[0021] 所述当第二计数器计数达到第二补偿循环值减一时,对当前插值点坐标进行补偿 之后,还对第一计数器进行清零。
[0022]其中,所述第一补偿循环值根据如下公式计算:
[0023]第一补偿循环值=R0UND(补偿值/单步误差);
[0024] 单步误差=理论步长-实际步长;
[0025] 所述实际步长=R0UNDD0WN(理论步长)=R0UNDD0WN(1/缩放比)。
[0026] 进一步地,所述当第一计数器计数达到第一补偿循环值减一时,对当前插值点坐 标根据第一补偿循环值进行补偿,其中:
[0027] 当前插值点坐标=前一插值点坐标+实际步长+补偿值。
[0028]本发明还同时提出了一种双三次插值误差累积消除装置,所述装置包括:
[0029] 初始化模块,用于根据设定的缩放比,确定进行补偿的第二补偿循环值;
[0030] 插值模块,用于在插值时,初始化首个插值点坐标与首个原始点坐标一致,并设置 第二计数器为0,插值点计数器为0,开始对插值点进行计数,每增加一个插值点第二计数 器、插值点计数器均加1,当第二计数器计数达到第二补偿循环值减一时,对当前插值点坐 标进行补偿,并对第二计数器进行清零,继续进行计数和插值直至完成插值。
[0031] 进一步地,所述初始化模块还用于根据设定的补偿值和缩放比,确定进行补偿的 第一补偿循环值;所述插值模块还用于在初始化首个插值点坐标与首个原始点坐标一致 时,还设置第一计数器为0,开始对插值点进行计数,每增加一个插值点第一计数器加1,当 第一计数器计数达到第一补偿循环值减一时,对当前插值点坐标根据第一补偿循环值进行 补偿,并对第一计数器进行清零,继续进行计数和插值直至完成插值;
[0032] 所述插值模块在第二计数器计数达到第二补偿循环值减一时,对当前插值点坐标 进行补偿之后,还对第一计数器进行清零。
[0033] 本发明提出的一种双三次插值误差累积消除方法及装置,采用两层循环的方式来 补偿/消除步长误差累积,FPGA实现电路简单,节省资源,能有效控制图像缩放双三次插值 由于步长误差累积导致的图像横竖纹现象。
【附图说明】
[0034]图1为图像缩放的双三次插值算法基本原理图;
[0035]图2为双三次插值算法的插值点示意图;
[0036]图3为本发明双三次插值误差累积消除方法流程图;
[0037]图4本发明一个实施例插值示意图。
【具体实施方式】
[0038]下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成 对本发明的限定。
[0039]本实施例一种双三次插值误差累积消除方法,对先做除法舍入再做步长累加的现 有技术方案中出现的累积误差进行消除,即便于FPGA实现,又能够有效消除累积误差。基于 双三次插值的基本原理,如果对图像进行放大处理,在缩放比SR确定时,那么一定每隔SR个 插值点,就会出现插值点与原始点重合的状况;如果对图像进行缩小处理,那么一定每隔1/ SR个原始点,就会出现插值点与原始点重合。从而可以在图像放大时,每隔SR个插值点,采 用原始点坐标作为插值点坐标,完成补偿;在图像缩小时,每隔1/SR个原始点,采用原始点 坐标作为插值点坐标,完成补偿。
[0040] 如图3所示,本实施例一种双三次插值误差累积消除方法,包括步骤:
[0041] 步骤S1、根据设定的缩放比,确定进行补偿的第二补偿循环值
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1