Previous: , Up: regrid   [Contents][Index]


15.5.491.1 regrid Details

regrid(x,xgrid,ygrid,sx,sy) and regrid3(x,xgrid,ygrid,sx,sy) work as described below. The mapped image values are interpolated from the source image x on a double grid. The coordinates of the points of the coarse grid, measured in the coordinate system of x, are given by xgrid and ygrid. A fine grid of sx by sy points is spread evenly over each cell of the coarse grid, and each point of the fine grid corresponds to a single element of the mapped image. The image value at each point of the fine grid is determined through nearest-neighbor (regrid) or bicubic (regrid3) interpolation.

For example, the x coordinates of the points on the fine grid in the cell identified by cell indices i and j are given by (xgrid(i+1,j) - xgrid(i,j))*ix/sx + (xgrid(i,j+1) - xgrid(i,j))*iy/sy + (xgrid(i+1,j+1) + xgrid(i,j) - xgrid(i+1,j) - xgrid(i,j + 1))*ix*iy/(sx*sy) for integer ix between 0 and sx - 1 and integer iy between 0 and sy - 1.

For linear transformations, such as combinations of rotations, scalings, and translations, only one grid cell (two by two coordinates) is needed.

The bicubic interpolation (for regrid3) is based on the sequence

 i = floor(x)
 b = x - i
 a = 1 - b
 w1 = -0.5*b*a*a
 w2 = 1 + b*b*(1.5*b - 2.5)
 w3 = 1 + a*a*(1.5*a - 2.5)
 w4 = -0.5*a*b*b
 y_interp = y(i-1)*w1 + y(i)*w2 + y(i+1)*w3 + y(i+2)*w4

which yields y_interp at ordinate x, interpolated from y. Application in two dimensions yields bicubic interpolation. This particular form of bicubic interpolation is due to s.k. Park and r.a. Schowengerdt (1983: Comp. Vis. & Im. Proc., Vol. 23, p. 258; with alpha = -0.5).

See also: regrid, regrid3