图像放大的两种编程算法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像放大的两种插值算法编程实现
1最邻近插值(近邻取样法)
1.1算法思想
最邻近插值的的思想很简单,就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。可见,最邻近插值简单且直观,速度也最快,但得到的图像质量不高。
1.2最邻近插值法的MATLAB源代码为:
1.3运行结果:
图1
用最邻近插值法放大4倍后的图如图2所示:
图2
2双线性内插值法
2.1算法思想
在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。
这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。
在MATLAB中,可用其自带的函数imresize()来实现双线性内插值算法。
2.2程序代码
双线性内插值算法的MATLAB源代码为:
2.3运行结果
程序运行后,原图如图3所示:
图3
双线性内插值法放大8倍后的图如图4所示:
图4
3结论
最近邻插值运算简单快速,能够保持插值图像边缘清晰,但边缘轮廓有显著的锯齿现象,图像背景产生马赛克,形成伪边缘,视觉效果差,重构误差较大与最邻近法相比,双线性内插法由于考虑了待采样点周围4个直接邻点对待采样点的影响,因此基本克服了前者灰度不连续的缺点,其计算量有所增大。此方法仅考虑4个直接邻点灰度值的影响,而未考虑到各邻点间灰度值变化率的影响,因此具有低通滤波器的性质,使放大后图像的高频分量受到损失,图像的轮廓变得较模