双线性插值实现图像缩放

今天去一个公司笔试,考了一个图像缩放的算法,双线性插值,当时没搞出来呀,快哭了回来写了个程序仿真,实现了这个功能。

 原理 ,参照百度百科(1)写的很详细。

对原图实现放大2*3倍,matlab代码仿真如下:

clear
img1=imread(lena.bmp');
img1=rgb2gray(img1);
img1=double(img1);
[row1,wide1]=size(img1);
 row2=row1*2;
 wide2=wide1*3;
 img2=zeros(row2,wide2);
 for y2=5:row2-5
      for x2=5:wide2-5;
           x=x2/3;
           y=y2/2;
           q11x=floor(x);
           q11y=ceil(y);
          
           q21x=ceil(x);
           q21y=ceil(y);
          
           q22x=ceil(x);
           q22y=floor(y);
          
           q12x=floor(x);
           q12y=floor(y);
          
           X2=ceil(x);% important,当出现如整数5 的时候,x2等于5,x1=4,也就是取当前的坐标和前面的一个坐标计算
           X1=ceil(x-1);
           Y2=ceil(y-1);%important
           Y1=ceil(y);
        
          R1=( X2-x) *img1(q11y,q11x)+(x- X1)*img1(q21y,q21x);
          R2=(X2-x) *img1(q12y,q12x)+(x- X1)*img1(q22y,q22x);
           fp=-( (Y2- y)*R1 + (y-Y1)*R2) ;
           img2(y2,x2)=ceil(fp);
      end
 end
 subplot(1,2,1);
 imshow(uint8(img1));
  subplot(1,2,2);
 imshow(uint8(img2));

 

本文链接 : http://write.blog.csdn.net/postedit/13049101

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值