GRASS logo


i.rectify - Rectifies an image by computing a coordinate transformation for each pixel in the image based on the control points




i.rectify help
i.rectify [-ca] group=string [input=string[,string,...]] extension=string order=integer


Use curr. region settings in target location (def.=calculate smallest area)
Rectify all images in group


Name of imagery group
Name of input raster map(s)
Output file extension (inputfile(s) + extension)
Rectification polynom order (1-3)


i.rectify uses the control points identified in i.points or i.vpoints to calculate a transformation matrix based on a first, second, or third order polynomial and then converts x,y cell coordinates to standard map coordinates for each pixel in the image. The result is a planimetric image with a transformed coordinate system (i.e., a different coordinate system than before it was rectified).

i.points or i.vpoints must be run before i.rectify, and both programs are required to rectify an image. An image must be rectified before it can reside in a standard coordinate LOCATION, and therefore be analyzed with the other map layers in the standard coordinate LOCATION. Upon completion of i.rectify, the rectified image is deposited in the target standard coordinate LOCATION. This LOCATION is selected using

Program Prompts

The first prompt in the program asks for the name of the group containing the files to be rectified.
     Enter the group containing files to be rectified
     Enter 'list' for a list of existing imagery groups
     Enter 'list -f' for a verbose listing
     Hit RETURN to cancel request
This is the same imagery group that was selected in i.points or i.vpoints and the group that contains the cell files with the marked points and their associated map coordinates. You are then asked to select the cell file(s) within the group to be rectified:
Please select the file(s) to rectify by naming an output file

       spot1.1 in mapsetname      .............
       spot1.2 in mapsetname      .............
       spot1.3 in mapsetname      .............
       spotclass1 in mapsetname   spotrectify1.
       spotreject1 in mapsetname  .............

(enter list by any name to get a list of existing cell files)

           (OR<Ctrl-C> TO CANCEL)
More than one cell file may be rectified at a time. Each cell file should be given a unique output file name.

Next, you are asked to select one of two windows regions:

  Please select one of the following options
  1.  Use the current window in the target location
  2.  Determine the smallest window which covers the image
The i.rectify program will only rectify that portion of the image or cell file that occurs within the chosen window region, and only that portion of the cell file will be relocated in the target database. It is important therefore, to check the current mapset window in the target LOCATION if choice number one is selected.

If you are rectifying a file with plans to patch it to another file using the GRASS program r.patch, choose option number one, the current window in the target location. This window, however, must be the default window for the target LOCATION. When a file being rectified is smaller than the default window in which it is being rectified, zeros are added to the rectified file. Patching files of the same size that contain 0/non-zero data, eliminates the possibility of a no-data line the patched result. This is because, when the images are patched, the zeros in the image are "covered" with non-zero pixel values. When rectifying files that are going to be patched, rectify all of the files using the same default window.

Select the order of transformation desired with the order option:

Select order of transformation -->   1st Order   2nd Order  3rd Order
The program will immediately recalculate the RMSE and the number of points required.

Linear affine transformation (1st order transformation)

x' = ax + by +c
y' = Ax + Bt +C
The a,b,c,A,B,C are determined by least squares regression based on the control points entered. This transformation applies scaling, translation and rotation. It is NOT a general purpose rubber-sheeting, nor is it ortho-photo rectification using a DEM, not second order polynomial, etc. It can be used if (1) you have geometrically correct images, and (2) the terrain or camera distortion effect can be ignored.

Polynomial Transformation Matrix (2nd, 3d order transformation)

The ANALYZE function has been changed to support calculating the registration coefficients using a first, second, or third order transformation matrix. The number of control points required for a selected order of transformation (represented by n) is
((n + 1) * (n + 2) / 2)
or 3, 6, and 10 respectively. It is strongly recommended that one or more additional points be identified to allow for an overly- determined transformation calculation which will generate the Root Mean Square (RMS) error values for each included point. The RMS error values for all the included control points are immediately recalculated when the user selects a different transformation order from the menu bar. The polynomial equations are performed using a modified Gaussian elimination method.

Program Execution

Note: The rectified image or rectified cell files will be located in the target LOCATION when the program is completed. The original unrectified files are not modified or removed.


i.rectify uses nearest neighbor resampling during the transformation choosing the actual pixel that has its centre nearest to the point location in the image. Advantage of this method is that the pixel brightness of the image is kept as i.rectify rearranges the geometry of the image pixels.

If i.rectify starts normally but after some time the following text is seen:
GIS ERROR: error while writing to temp file
the user may try the flag -c (or the module needs more free space on the hard drive).


GRASS Tutorial: Image Processing

g.transform, r.proj, v.proj,, i.points, i.vpoints,


William R. Enslin, Michigan State University, Center for Remote Sensing

Modified for GRASS 5.0 by:
Luca Palmeri (
Bill Hughes
Pierre de Mouveaux (
CMD mode by Bob Covill

Last changed: $Date: 2006/07/03 16:37:28 $

Main index - imagery index - Full index