数字图像插值算法分析与实现.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一.问题的叙述 插值是一种最基本、最常用的几何运算。尤其随着多媒体技术的发展以及大屏幕的图像显示,以及生物医学领域的发展,图像放大的重要性也越来越明显。它不仅应用广泛, 而且插值的精度直接影响最终的图像处理结果,在图像处理软件中对图像进行缩放时,插值算法的好坏直接关系到图像的失真程序, 插值函数的设计是插值算法的核心问题。常采用三种插值算法: 最近邻点插值、双线性插值和双三次插值, 其中双三次插值的效果最好, 而且这一结论也得到了普遍的公认。本文对该三种算法进行了分析并通过matlab编程实现了算法。 二.二维图像插值技术 2.1 最邻近插值法 最邻近插值又称为像素重复放大法。它是一种最简单也是最原始的图像 插值放大,它的基本原理是用原始像素直接对插值点像素用原始像素填充。 最近邻点插值又称零阶插值, 它输出的像素值等于距离它映射到的位置最近的输入像素值。对于二维图像, 该法是"取待采样点周围4 个相邻像素点中距离最近的1 个邻点的灰度值作为该点的灰度值。插值公式: (1) 其中i、j均为非负整数, u、v 为[0,1)区间的浮点数,一般可取0.5, f(i,j)表示源图像(i,j)处的的像素值。 2.2双线性插值法 二元函数的线性插值方法是一元函数线性插值方法的直接推广,将一维空间中的线段推广为二维空间中的矩形,由此产生二维线性插值。已知平面上一矩形域内四个定点P1,P2,P3,P4处的函数值为: , , 令 , 由此构造基函数: , , 所以有差值函数为 (2) 2.3 双三次差值法 对于灰度变化复杂的图像,不能简单的采用线性插值。可以采用多项式插值技术对数据点做多项式插值,不仅考虑到四个直接邻点灰度值的影响, 还考虑到各邻点间灰度值变化率的影响", 利用了待采样点周围更大邻域内像素的灰度值作三次插值。多项式插值如下:。需用n+1个数据点来建立方程组,求出系数的值。 用公式表达为: (4) 定义     f(i+u,j+v) = [A] * [B] * [C]    三.算法实现: 3.1 最邻近插值法: clc; clear; %function y=resize(a,K) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %I:输入图像 %K:缩放倍数 %type:1表示最邻近法,2表示双极性插值法 %画出缩放后图像并返回其灰度值 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=imread('girl.bmp');%读入图像 I=rgb2gray(I); K=3; [m,n]=size(I); m1=m*K;n1=n*K; % for i=1:m1 for j=1:n1 tic %计算插值所用的时间 u=round(i/K); %取最邻近值 v=round(j/K); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if u<=0 %避免取近似值时超过图像的边界 u=1; end if v<=0 v=1; end if u>=m1 u=m1; end if v>=n1 v=n1; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b(i,j)=I(u,v); %为新的图像赋值 end end toc imshow(b); title('缩放后图像'); 3.2 双线性插值关键部分程序: %双线性插值 function M=s1(x,y,nrows,ncols,K,I) % K表示放大倍数 width = K * nrows; height = K * ncols; widthScale = nrows/width; heightScale = ncols/height; % xx ,yy 表示当前像素点在源图像中的坐标,x,y表示在插值图像中的坐标 xx = x * widthScale; yy = y * heightScale; if (xx=

文档评论(0)

wx171113 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档