时域插值的几种图像放大方法讲解.docx

上传人:b****6 文档编号:7020362 上传时间:2023-01-16 格式:DOCX 页数:11 大小:223.85KB
下载 相关 举报
时域插值的几种图像放大方法讲解.docx_第1页
第1页 / 共11页
时域插值的几种图像放大方法讲解.docx_第2页
第2页 / 共11页
时域插值的几种图像放大方法讲解.docx_第3页
第3页 / 共11页
时域插值的几种图像放大方法讲解.docx_第4页
第4页 / 共11页
时域插值的几种图像放大方法讲解.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

时域插值的几种图像放大方法讲解.docx

《时域插值的几种图像放大方法讲解.docx》由会员分享,可在线阅读,更多相关《时域插值的几种图像放大方法讲解.docx(11页珍藏版)》请在冰豆网上搜索。

时域插值的几种图像放大方法讲解.docx

时域插值的几种图像放大方法讲解

基于时域插值的几种图像放大方法

 

摘要:

图像插值是图像比例缩放的常用方法。

针对时域图像的放大问题,介绍了最邻近、双线性和双立方三种插值方法,并使用matlab对其进行实现、分析。

结果表明双立方插值得到的图像质量最高,最邻近和双线性速度较快。

1引言

在数字图像处理中,图像的几何变换作为图像处理的基础操作之一,为图像分析提供了灵活多变的预处理模式,简化了后级处理过程,图像的几何变换还为生成特殊样式的图形提供了可能。

在图像的几何变换中,图像的比例缩放是最常用的模式。

图像的比例缩放是指对数字图像大小按某确定比例进行调整的过程。

对于数字图像

则其缩放

倍的图像

,则I为x轴方向和y轴方向等比例缩放的图像;否则,图像内的像素位置会发生相对变化,产生图像几何畸变。

在本文中,讨论等比例放大图像时的情况,即

由图像变换的思想,图像几何变换应当是源图像到目的图像矩阵的映射(前向映射)。

前向映射时,由于系数k为有理数,矩阵坐标为自然数的情况,此目的矩阵映射为空;同时目的矩阵存在无灰度值相对应的情况。

因此,可引入逆映射法,首先生成一个对应大小的空目的矩阵,分别计算目的矩阵每个像素点对应于原矩阵的位置,对于落在源图像两像素之间的点,可用插值法为其映射一个灰度值,这个过程称为重采样。

重采样得出的灰度值由周围像素点的灰度和其权值特性决定,在此讨论三种常见的插值算法:

最邻近(NearestNeighbor)、双线性(Bilinear)和双立方(Bicubic)。

2最邻近插值

最邻近插值是最简单的插值方式,它是将目的矩阵映射到源矩阵上,将其距离最近的像素点的值作为插值的值。

将目的矩阵的点

映射到源矩阵上,

定义函数

图1

则目的矩阵的元素灰度值

在程序设计只需将转换到源矩阵的坐标四舍五入至整数

以4*4的像素矩阵RGB色域为例

将其放大30倍,并与Matlab库函数imresize()放大结果比较

图2

(b)放大50倍

最邻近插值方法简单,运算速度快,但其图像灰度变化处会出现明显的阶梯变化,出现“马赛克”的失真现象,整体还原情况不佳。

3双线性插值

双线性插值算法中,新插入的像素值由其距离最近的2*2个像素及与它们的距离决定。

距离和权值大小成线性关系,在x轴和y轴方向同时存在现象关系,因此称为双线性插值。

定义函数

为线性插值的权值函数

图3

在此,为加快计算速度,采用x和y轴方向长度的乘积作为衡量两像素点之间距离的参数。

因此,令d为原像素点间距

则目的矩阵的灰度值为

同样以上述4*4颜色矩阵为例

图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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1