how to enter the weights in bilinear interpolation
1 view (last 30 days)
Show older comments
here is the required code for wrapping an image using bilinear interpolation.how to calculate weights. Please help
function Iout=deform(Iin,T) % function Iout=deform(Iin,T) % Bilinear Interpolation Operation on 2D image I using Deformation Field T % Inputs: % Iin is of size nx x ny % T is of size nx x ny x 2 % T(:,:,1)=Bx, deformation along x/rows % T(:,:,2)=By, deformation along y/columns % Output: % Iout is of size nx x ny
% x,y indices nx=size(Iin,1); ny=size(Iin,2);
% Regular output grid [xout,yout]=ndgrid(1:nx,1:ny);
% Corresponding input pixels xin=xout+T(:,:,1); yin=yout+T(:,:,2);
% Nearest grid points xin0=floor(xin); yin0=floor(yin); xin1=xin0+1; yin1=yin0+1;
% check_xin0=(xin0<1)|(xin0>nx); check_yin0=(yin0<1)|(yin0>ny); check_xin1=(xin1<1)|(xin1>nx); check_yin1=(yin1<1)|(yin1>ny);
% Bilinear interpolation weights (fractions) tx=xin-xin0; ty=yin-yin0; w00=?; w01=?; w10=?; w11=?;
xin0=min(max(xin0,1),nx); yin0=min(max(yin0,1),ny); xin1=min(max(xin1,1),nx); yin1=min(max(yin1,1),ny);
% Interpolate I00=Iin(xin0+(yin0-1)*nx); I01=Iin(xin0+(yin1-1)*nx); I10=Iin(xin1+(yin0-1)*nx); I11=Iin(xin1+(yin1-1)*nx);
w00(check_xin0|check_yin0)=0; w01(check_xin0|check_yin1)=0; w10(check_xin1|check_yin0)=0; w11(check_xin1|check_yin1)=0;
Iout=$;
Answers (0)
See Also
Categories
Find more on Interpolation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!