图像缩放--最近邻插值

图像缩放--最近邻插值

  自己一直以为放大图像是会放大像素点的大小的,然后就去查了一下,发现不是这样的,而是像素点数量变了,而多的或者少的就依靠插值来实现

这里的答案我觉得不错,解决了我的问题

那么我们就来实现一下放缩的算法,今天先实现以下第一种--近邻插值

原理: 关键在于构造映射



看得清就好。

放一个链接,也是讲原理的,我觉得写得也是不错的。



代码:
(*构造映射 [1,w1] \[Rule] [1,w0]*)
zoom[pic_, fw_, fh_] := 
 Module[{data, dataN, w0, h0, w1, h1, col, i, j},
  data = ImageData[pic];
  {w0, h0, col} = Dimensions[data];
  w1 = w0 * fw;
  h1 = h0* fh;
  
  (*对每一个像素点取最接近的点*)
  
  (*使用这种情况会出现下标为零的情况*)
  
  (*
  dataN = Table[data[[Round[(w0-1)/(w1-1)*i-(w0+w1-2)/(w1-1)],
  Round[(h0-1)/(h1-1)*j-(h0+h1-2)/(h1-1)]]],{i,1,w1},{j,1,h1}];
  *)
  
  dataN = 
   Table[data[[Round[(w0 - 1)/(w1 - 1)*i + (w1 - w0)/(w1 - 1)], 
     Round[(h0 - 1)/(h1 - 1)*j + (h1 - h0)/(h1 - 1)]]], {i, 1, 
     w1}, {j, 1, h1}];
  
  Image[dataN]
  (*Image[dataN]*)
  ]
效果:

缩小
放大
其实我觉得这样子效果挺好的,换一副图看一下,可以看出锯齿
可以看到放大了以后还是会在边缘有锯齿,不过大体还可以,而且这种算法比较快

以上,所有
2016/10/6

转载于:https://www.cnblogs.com/wmn7q/p/7265556.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值