1 ,插值算法(3 种): (1)最邻近插值(近邻取样法): 最邻近插值的的思想很简单,就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。可见,最邻近插值简单且直观,速度也最快,但得到的图像质量不高。 最邻近插值法的MATLAB 源代码为: A = imread('F:\lena.jpg');%读取图像信息 imshow(A); %显示原图 title('原图128*128'); Row = size(A,1); Col = size(A,2);%图像行数和列数 nn=8;%放大倍数 m = round(nn*Row);%求出变换后的坐标的最大值 n = round(nn*Col); B = zeros(m,n,3);%定义变换后的图像 for i = 1 : m for j = 1 : n x = round(i/nn); y = round(j/nn);%最小临近法对图像进行插值 if x==0 x = 1; end if y==0 y = 1; end if x>Row x = Row; end if y>Col y = Col;end B(i,j,:) = A(x,y,:); end end B = uint8(B);%将矩阵转换成8位无符号整数 figure; imshow(B); title('最邻近插值法放大8倍1024*1024'); 运行程序后,原图如图 1 所示: 图1 用最邻近插值法放大4 倍后的图如图2 所示: 图2 (2)双线性内插值法: 在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(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( )来实现双线性内插值算法。 双线性内插值算法的MATLAB 源代码为: A=imread('F:\lena.jpg'); imshow(A); title('原图128*128'); C=imresize(A,8,'bilinear'); %双线性插值 figure; imshow(C); title('双线性内插值法放大8倍1024*1024'); 程序运行后,原图如图 3 所示: 图 3 双线性内插值法放大 8 倍后的图如图 4 所示: 图4 (3)双三次插值法: 双三次插值法能够在很大程度上克服以上两种算法的不...