一种基于Sinc滤波器的图像缩放方法与流程

文档序号:15595083发布日期:2018-10-02 19:25阅读:1248来源:国知局
本发明属于嵌入式计算机图像处理
技术领域
,特别是涉及一种图像缩放方法。
背景技术
:近年来,高分辨率显示器被广泛应用于各个行业。但传统的低分辨率图像采样装置无法进行及时的升级和更换,这就造成低分辨率图像无法在高分辨率显示器上显示的问题。而在某些特殊行业还存在高分辨率图像无法在较低分辨率显示设备上正确显示的问题。这都要用到图像缩放技术。图像缩放一般是采用近邻取样法,双线性插值,双三次插值等方法。这些方法要么效果较差,要么仅能利用相邻像素信息,要么计算复杂度较高,不适合嵌入式设备实现。所以就需要一种能够利用较多临近像素信息兼顾效果并适合嵌入式设备实现的方法来实现图像缩放功能。技术实现要素:本发明目的是克服上述已有技术的不足,设计一种能够兼顾效果的更适应嵌入式设备的图像缩放方法。本发明的技术方案是利用sinc滤波器的滤波方法来实现图像的缩放。归一化sinc函数表达式为为理想低通滤波函数,应用于图像的缩放具有很好的效果,使用此滤波器进行缩放操作时可以使用任意数量的抽头,抽头数量越大滤波器越接近理想滤波器,缩放的效果越好,但消耗的计算资源越多。所以可以根据嵌入式设备的计算资源量来指定抽头数量。图像缩放时,水平和竖直方向可以独立进行,所以可以以相似的结构实现水平和竖直方向的缩放。本发明包括以下步骤:一种基于sinc滤波器的图像缩放方法,其特征是,本方法包括以下步骤:第一步,指定滤波器的抽头数量,抽头数量大于等于2;第二步,根据缩放比例确定水平方向和竖直方向滤波相位数量,由此确定水平方向和竖直方向的滤波相位偏移;第三步,根据相位偏移和抽头数量在归一化sinc函数上进行采样;第四步,将水平方向的sinc函数采样值作为水平方向滤波器的系数,将竖直方向sinc函数采样值作为竖直方向滤波器的系数;第五步,使用水平方向滤波器对图像的行数据进行滤波,得到水平方向缩放后的行数据;第六步,将水平方向缩放后的行数据进行缓存;第七步,对水平方向缩放后的图像数据进行竖直方向的滤波,得到最终缩放后的图像数据。本发明具有如下优点:1、可以利用多于2个相邻像素信息;2、经典滤波器结构,更适用于嵌入式设备;3、此方法不仅适用于通用平台的软件实现,还尤其适用于dsp和fpga实现。附图说明图1:本发明流程示意图;图2:sinc函数曲线图。具体实施方式下面结合附图对本发明做进一步的描述:以1024x768分辨率图像放大到1280x1024分辨率图像为例:第一步,指定滤波器的抽头数量为4,即tap_num=4,此处在计算资源足够情况下可以选择更多抽头,为更易于硬件实现和适应图像特点,建议使用如2,4,8,12,16等值,抽头数量越大滤波器越接近理想滤波器,缩放的效果越好,但消耗的计算资源越多;第二步,水平方向上缩放比例为1024/1280=0.8,所以水平方向的相位数量为5可以满足放大需求,并得到每个滤波相位的偏移为(0:0.8:0.6:0.4:0.2);竖直方向上缩放比例为768/1024=0.75,所以竖直方向上相位数量为4可以满足放大需求,并得到每个滤波相位的偏移为(0:0.75:0.5:0.25);此相位偏移即为相对于原像素位置新生成的新像素位置,这里以行为例,假定新旧图像的第一个像素是重合的,所以偏移为0,行上的第二个新像素生成位置为原像素位置的第0.8,第三个像素为第1.6(所以相对相邻像素偏移为0.6)……以此类推,并在第6个像素时循环;第三步,在不同相位偏移上对归一化sinc函数(如图2)进行采样,以行为例,当取phase-1时,初始偏移为0,所以将x=(-2:-1:0:1)分别代入表达式得到phase-1的抽头系数;当取phase-2时,初始偏移为0.8,将x=(-2+0.8:-1+0.8:0+0.8:1+0.8)即x=(-1.2:-0.2:0.8:1.8)分别代入表达式得到phase-2的抽头系数……以此类推可以计算出如下两表的采样值:水平采样tap-1tap-2tap-3tap-4phase-1-0.0000.0001.0000.000phase-2-0.1040.2340.935-0.156phase-3-0.1890.5050.757-0.216phase-4-0.2160.7570.505-0.189phase-5-0.1560.9350.234-0.104竖直采样tap-1tap-2tap-3tap-4phase-1-0.0000.0001.0000.000phase-2-0.1290.3000.900-0.180phase-3-0.2120.6360.636-0.212phase-4-0.1800.9000.300-0.129第四步,将水平方向采样值作为水平滤波器的系数,竖直方向采样值作为竖直滤波器的系数。第五步,对图像行进行水平方向滤波,由于前述相位偏移去除了所参考的原图像像素的位置信息,这里需要使用之前计算出的缩放比例对每个新像素所参考的原像素位置进行计算,如行方向上缩放比例为1024/1280=0.8,设新像素位置为n(n从0开始),所参考的tap-1位置为n×0.8向上取整再减2,如第一个新像素(n=0)所参考的tap-1位置为(0×0.8向上取整再减2)=-2,第二个新像素参考tap-1位置-1,第三个tap-1位置参考0……以此类推,可以得到如下计算结果:第一个像素使用phase-1:xout0=xin-2·(-0.000)+xin-1·(0.000)+xin0·(1.000)+xin1·(0.000);第二个像素使用phase-2:xout1=xin-1·(-0.104)+xin0·(0.234)+xin1·(0.935)+xin2·(-0.156)第三个像素使用phase-3:xout2=xin0·(-0.189)+xin1·(0.505)+xin2·(0.757)+xin3·(-0.216)第四个像素使用phase-4:xout3=xin1·(-0.216)+xin2·(0.757)+xin3·(0.505)+xin4·(-0.189)第五个像素使用phase-5:xout4=xin2·(-0.156)+xin3·(0.935)+xin4·(0.234)+xin5·(-0.104)第六个像素使用phase-1:xout5=xin2·(-0.000)+xin3·(0.000)+xin4·(1.000)+xin5·(0.000)……依次循环,其中xin-2、xin-1为像素向左侧的扩展,数值等于xin0。第六步,将水平方向缩放后的行数据进行缓存;第七步,对水平方向缩放后的图像数据进行竖直方向的滤波,原理同第五步,得到最终缩放后的图像数据:第一个像素使用phase-1:pout(0,0)=x(out0,-2)·(-0.000)+x(out0,-1)·(0.000)+x(out0,0)·(1.000)+x(out0,1)·(0.000);第二个像素使用phase-2:pout(0,1)=x(out0,-1)·(-0.129)+x(out0,0)·(0.300)+x(out0,1)·(0.900)+x(out0,2)·(-0.180);第三个像素使用phase-3:pout(0,2)=x(out0,0)·(-0.212)+x(out0,1)·(0.636)+x(out0,2)·(0.636)+x(out0,3)·(-0.212);第四个像素使用phase-4:pout(0,3)=x(out0,1)·(-0.180)+x(out0,2)·(0.900)+x(out0,3)·(0.300)+x(out0,3)·(-0.129);第五个像素使用phase-1:pout(0,4)=x(out0,1)·(-0.000)+x(out0,2)·(0.000)+x(out0,3)·(1.000)+x(out0,4)·(0.000);……依次循环,其中x(out0,-2)、x(out0,-1)为像素向上侧的扩展,数值等于x(out0,0)。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1