resample_bilinear.asv
上传用户:trade789
上传日期:2018-05-10
资源大小:603k
文件大小:1k
源码类别:

2D图形编程

开发平台:

Matlab

  1. %/////////////////////////////////////////////////////////////////////////////////////////////
  2. % Author : Scott Ettinger
  3. %
  4. % resample_bilinear(img, ratio)  
  5. %
  6. % resamples a 2d matrix by the ratio given by the ratio parameter using bilinear interpolation
  7. % the 1,1 entry of the matrix is always duplicated. 
  8. %/////////////////////////////////////////////////////////////////////////////////////////////
  9. function img2 = resample_bilinear(img, ratio)
  10. img=double(img);
  11. [h,w]=size(img);  %get size of image
  12. [y,x]=meshgrid( 1:ratio:h-1, 1:ratio:w-1 );  %create vectors of X and Y values for new image
  13. [h2,w2] = size(x);                           %get dimensions of new image
  14. x = x(:);     %convert to vectors
  15. y = y(:);
  16. alpha = x - floor(x);   %calculate alphas and betas for each point
  17. beta = y - floor(y);
  18. fx = floor(x);   fy = floor(y);
  19. inw = fy + (fx-1)*h;    %create index for neighboring pixels
  20. ine = fy + fx*h;
  21. isw = fy+1 + (fx-1)*h;
  22. ise = fy+1 + fx*h;
  23. img2 = (1-alpha).*(1-beta).*img(inw) + ...  %interpolate
  24.        (1-alpha).*beta.*img(isw) + ...
  25.        alpha.*(1-beta).*img(ine) + ...
  26.        alpha.*beta.*img(ise);
  27.    
  28. img2 = reshape(img2,h2,w2);                 %turn back into 2d
  29. img2 = img2';