时域插值地几种图像放大方法.docx
- 文档编号:27208637
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:13
- 大小:249.94KB
时域插值地几种图像放大方法.docx
《时域插值地几种图像放大方法.docx》由会员分享,可在线阅读,更多相关《时域插值地几种图像放大方法.docx(13页珍藏版)》请在冰豆网上搜索。
时域插值地几种图像放大方法
基于时域插值的几种图像放大方法
摘要:
图像插值是图像比例缩放的常用方法。
针对时域图像的放大问题,介绍了最邻近、双线性和双立方三种插值方法,并使用matlab对其进行实现、分析。
结果表明双立方插值得到的图像质量最高,最邻近和双线性速度较快。
1引言
在数字图像处理中,图像的几何变换作为图像处理的基础操作之一,为图像分析提供了灵活多变的预处理模式,简化了后级处理过程,图像的几何变换还为生成特殊样式的图形提供了可能。
在图像的几何变换中,图像的比例缩放是最常用的模式。
图像的比例缩放是指对数字图像大小按某确定比例进行调整的过程。
对于数字图像
则其缩放
倍的图像
若
,则I为x轴方向和y轴方向等比例缩放的图像;否则,图像的像素位置会发生相对变化,产生图像几何畸变。
在本文中,讨论等比例放大图像时的情况,即
由图像变换的思想,图像几何变换应当是源图像到目的图像矩阵的映射(前向映射)。
前向映射时,由于系数k为有理数,矩阵坐标为自然数的情况,此目的矩阵映射为空;同时目的矩阵存在无灰度值相对应的情况。
因此,可引入逆映射法,首先生成一个对应大小的空目的矩阵,分别计算目的矩阵每个像素点对应于原矩阵的位置,对于落在源图像两像素之间的点,可用插值法为其映射一个灰度值,这个过程称为重采样。
重采样得出的灰度值由周围像素点的灰度和其权值特性决定,在此讨论三种常见的插值算法:
最邻近(NearestNeighbor)、双线性(Bilinear)和双立方(Bicubic)。
2最邻近插值
最邻近插值是最简单的插值方式,它是将目的矩阵映射到源矩阵上,将其距离最近的像素点的值作为插值的值。
将目的矩阵的点
映射到源矩阵上,
定义函数
图1
则目的矩阵的元素灰度值
在程序设计只需将转换到源矩阵的坐标四舍五入至整数
以4*4的像素矩阵RGB色域为例
将其放大30倍,并与Matlab库函数imresize()放大结果比较
最邻近插值方法简单,运算速度快,但其图像灰度变化处会出现明显的阶梯变化,出现“马赛克”的失真现象,整体还原情况不佳。
3双线性插值
双线性插值算法中,新插入的像素值由其距离最近的2*2个像素及与它们的距离决定。
距离和权值大小成线性关系,在x轴和y轴方向同时存在现象关系,因此称为双线性插值。
定义函数
为线性插值的权值函数
图3
在此,为加快计算速度,采用x和y轴方向长度的乘积作为衡量两像素点之间距离的参数。
因此,令d为原像素点间距
则目的矩阵的灰度值为
同样以上述4*4颜色矩阵为例
(a)放大50倍
(b)放大50倍(imresize函数)
图4
双线性插值本质上是对周围像素点求加权平均的过程,在频域上可看作低通滤波器,对图像有模糊的作用。
在图像颜色梯度较大或图像边缘可观察到模糊的现象。
4双立方插值法
双立方插值改进了双线性中图像模糊的问题,它参考了目的像素点映射到源图像矩阵周围4*4共16个像素的灰度值,运用的权值函数h(t)逼近来最佳插值函数
。
定义函数
图5
对插值的对应源矩阵像素点p(x,y),取其附近的4x4邻域点p(xi,yj),i,j=1,2,3,4。
按如下公式进行插值计算:
以上述4*4颜色矩阵为例
(a)放大50倍
(b)放大50倍(imresize函数)
图6
双立方插值算法不仅考虑到插值临近像素的取值,还引入了周围的灰度值来锐化图像。
得到的放大图像失真较小,而且还原了图像本身的细节。
5实验结果
为了比较以上三种插值方法对于图像的处理性能,分别对同一灰度图放大相同的倍数(3倍):
(a)原图
(b)最邻近插值放大
(c)双线性插值放大
(d)双立方插值放大
图7
直观比较得到,最近邻放大的图像(b)具有很明显的“马赛克”锯齿现象,图像细节几乎无法体现,物体边缘明显存在畸变和失真。
图(c)由双线性插值放大而来,整体还原较好,但细节高频部分被滤波器衰减,出现了模糊的现象。
双立方插值得到的图像失真少,局部有较好的体现,效果较好。
统计三者相同放大倍率时的处理时间
图8
最邻近和双线性插值具有较小的时间复杂度,从而运行时间较短,而双立方由于需要计算更多的像素点以及更多浮点运算,消耗最多的时间,但可以得到最好的图像质量。
6结论
最邻近插值本质上只用了一个最接近像素点的灰度信息,运算方法简单,速度快,但其图像灰度变化处会出现明显的阶梯变化,出现“马赛克”的失真现象,整体还原情况不佳;双线性插值上是对周围4个像素点求加权平均,整体失真较小,在频域上可看作低通滤波器,在图像颜色梯度较大或图像边缘可观察到模糊的现象;双立方插值算法不仅考虑到插值临近像素的取值,还引入了周围的16个像素灰度值来锐化图像。
得到的放大图像失真较小,而且还原了图像本身的细节,但其运算复杂,时间成本高。
在实际应用中,应根据系统的资源、运行的环境和要求灵活运用,以达到最佳的尺度变换效果。
本文只讨论了三种在时域围变换的插值方法,其处理手段还有相当的局限性。
若引入FFT(快速傅里叶变换),将图像变换为频域进行更灵活的处理,还可以进一步提高图像尺度变换的效率和质量,为后续图像处理提供更好的原始样本。
参考文献
[1]何东健.数字图像处理(第二版).电子科技大学.2008
[2]王森,克俭.基于双线性插值的图像缩放算法的研究与实现.自动化技术与应用.2008
[3]王林,克俭.基于双线性插值的图像缩放算法.电脑编程技巧与维护.2008
[4]秀英,袁红.几种图像缩放算法的研究.现代电子技术.2012
[5]邓林华,柳光乾等.基于插值算法的图像缩放的应用研究.微计算机信息.2010
[6]RafaelC.Gonzalez,RichardE.Woods.DigitalImageProcessing.电子工业. 2013
[7]卢君,起贵.插值算法在图像缩放中的评估研究.同煤科技.2013
[8]红梅.基于插值算法的图像缩放技术.学院学报.2017
附录1
Matlab主要源程序
1最邻近插值
function[i]=NN(p,k)
%ptheorigianlgraph
%kthemagnification
[row,col,rgb]=size(p);%getthesizeofgraph
i=zeros(k*row,k*col,3);
forx=1:
row*k
fory=1:
col*k;
a=round(x/k);
b=round(y/k);%NearstNeiborInterpolation
%dealwithifa,b==0
ifa==0a=1;end;
ifb==0b=1;end;
i(x,y,:
)=p(a,b,:
);
end
end
2双线性插值
function[i]=bilinear(p,k)
%ptheorigianlgraph
%kthemagnification
[row,col,rgb]=size(p);%getthesizeofgraph
nrow=row*k;
ncol=col*k;
i=zeros(nrow,ncol,3);
forz=1:
3
forx=1:
nrow
fory=1:
ncol
a=floor(x/k);
b=a+1;
c=floor(y/k);
d=c+1;
%fixtheedge
ifa==0a=1;end;
ifc==0c=1;end;
ifb>rowb=row;a=a-1;end;
ifd>cold=col;c=c-1;end;i(x,y,z)=(p(b,d,z)*(x/k-a)+p(a,d,z)*(b-x/k))*(y/k-c)+(p(b,c,z)*(x/k-a)+p(a,c,z)*(b-x/k))*(d-y/k);
end
end
end
3双立方插值
function[i]=bicubic(p,k)
%ptheorigianlgraph
%kthemagnification
[row,col,rgb]=size(p);%getthesizeofgraph
nrow=row*k;
ncol=col*k;
m=row;
n=col;
p1=zeros(m+4,n+4,3);
forz=1:
3
%expand2headand2teil
a=p(1,:
z);%getrow1
c=p(m,:
z);%getrowm
b=[a;a;p(:
:
z);c;c];
a=b(:
1);%col1
c=b(:
n);%coln
d=[a,a,b(:
:
),c,c];
p1(:
:
z)=double(d);
end
i=zeros(nrow,ncol,3);
forz=1:
3
forx=1:
nrow
u=rem(x,k)/k;
i1=floor(x/k)+2;
A=[h(1+u)h(u)h(1-u)h(2-u)];
fory=1:
ncol
v=rem(y,k)/k;j1=floor(y/k)+2;
C=[h(1+v);h(v);h(1-v);h(2-v)];
B=[p1(i1-1,j1-1,z)p1(i1-1,j1,z)p1(i1-1,j1+1,z)p1(i1-1,j1+2,z);
p1(i1,j1-1,z)p1(i1,j1,z)p1(i1,j1+1,z)p1(i1,j1+2,z);
p1(i1+1,j1-1,z)p1(i1+1,j1,z)p1(i1+1,j1+1,z)p1(i1+1,j1+2,z);
p1(i1+2,j1-1,z)p1(i1+2,j1,z)p1(i1+2,j1+1,z)p1(i1+2,j1+2,z)];
i(x,y,z)=(A*B*C);
end
end
end
functionA=h(t)
t=abs(t);
ift<1&&t>=0
A=1-2*t^2+t^3;
elseift>=1&&t<2
A=4-8*t+5*t^2-t^3;
else
A=0;
end
附录2
Matlab运行三种算法时间原数据
时间/s
倍率
NN
bilinear
bicubic
1
0.022735
0.033644
0.150431
2
0.074091
0.137337
0.649094
3
0.169049
0.169396
1.395079
4
0.197607
0.288268
2.479701
5
0.308903
0.436682
4.167286
6
0.450844
0.63919
5.968857
7
0.610786
0.852564
8.074292
8
0.802231
1.141129
10.63027
9
1.055779
1.4554
13.605293
10
1.27757
1.714451
17.008054
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时域 图像 放大 方法