i.ortho.photo(1grass)
β¨ i.ortho.photo β¨
okay bestie, welcome to i.ortho.photo(1grass) β that's the GRASS User's Manual page, and it's a whole main-character moment π
πΈ NAME πΈ
i.ortho.photo β the menu driver for the photo imagery programs. yeah. it's the girl who runs the whole group chat π
π KEYWORDS π
imagery, orthorectify, geometry
π SYNOPSIS π
i.ortho.photo
i.ortho.photo --help
i.ortho.photo group=name productname=string [--help] [--verbose]
[--quiet] [--ui]
π¦ Flags:
--helpβ prints the usage summary. your lil cheat sheet fr fr--verboseβ verbose module output, i.e. it tells you everything that's happening. oversharing but supportive π«Ά--quietβ quiet module output. the silent treatment, but make it functional--uiβ forces the GUI dialog to launch. buttons and windows, no terminal-girl behavior
π Parameters:
group=name[required] β the name of the imagery group for ortho-rectification β¨productname=string[required] β name of Modules
Options for productname:
i.group, i.ortho.target, i.ortho.elev, i.ortho.camera, g.gui.photo2image, i.ortho.init, g.gui.image2target, i.ortho.rectify
and here they are all numbered, like a little countdown π
i.group: 1 - Select/Modify imagery groupi.ortho.target: 2 - Select/Modify imagery group targeti.ortho.elev: 3 - Select/Modify target elevation modeli.ortho.camera: 4 - Select/Modify imagery group camerag.gui.photo2image: 5 - Compute image-to-photo transformationi.ortho.init: 6 - Initialize exposure station parametersg.gui.image2target: 7 - Compute ortho-rectification parametersi.ortho.rectify: 8 - Ortho-rectify imagery files
π DESCRIPTION π
so. i.ortho.photo is a menu that launches the different parts of the ortho rectification process of aerial imagery. that's the whole vibe. it lets you ortho-rectify imagery group files that consist of several scanned aerial photographs (raster maps) of a common area πΈ
and the way it does it? it guides you through 8 steps that you need to ortho-rectify the raster maps in a single imagery group. all 8. no skipping, bestie. alternatively, you can do all the steps separately by just running the appropriate modules yourself β independent queen behavior π
- Initialization Options
- Create/Modify imagery group to be orthorectified:
i.group - Select/Modify target project (formerly known as location) and mapset for orthorectification:
i.ortho.target - Select/Modify target elevation model used for orthorectification:
i.ortho.elev - Create/Modify camera file of imagery group:
i.ortho.camera
- Create/Modify imagery group to be orthorectified:
- Transformation Parameters Computation
- Compute image-to-photo transformation:
g.gui.photo2image - Initialize parameters of camera:
i.ortho.init - Compute ortho-rectification parameters from ground control points:
g.gui.image2target
- Compute image-to-photo transformation:
- Ortho-rectification
- Ortho-rectify imagery group:
i.ortho.rectify
- Ortho-rectify imagery group:
okay and now the actual science, because she's not just pretty, she's smart π§
the ortho-rectification procedure in GRASS places the image pixels on the surface of the earth by matching the coordinate system of the aerial image in pixels (image coordinate system) and the coordinate system of the camera sensor in millimetres (photo coordinate system) for the interior orientation of the image, and further to the georeferenced coordinate system defined by projection parameters (target coordinate system) for exterior orientation.
no cap. that's literally the whole magic trick π
(part 2 is loadingβ¦ π)
β¨ EXAMPLE β¨
okay so listen up bestie, before anything else β you need five groups of input parameters for ortho-rectification. five. not four. not "eh I'll add the rest later". all five π
- π©οΈ Aerial image (
images), - π· Exposure and characteristics of the camera, i.e. its coordinates in target coordinate system and height above sea level, focal length, yaw, pitch and roll, dimensions of the camera sensor and resolution of aerial images,
- β°οΈ Reference surface, i.e. digital elevation model in the target coordinate system used to normalize the terrain undulation,
- πΊοΈ Topographic reference map used to find corresponding ground control points and/or,
- π Coordinates of ground control points in the target coordinate system.
Example of an input oblique image in a source project
So to ortho-rectify aerial images you gotta follow the menu options step by step, bestie. orrrr, if you're feeling independent, every single step can also be done separately by running the corresponding modules. main character energy either way β¨
the aerial photos go in a source project β that's a general Cartesian coordinate system (XY). the digital elevation model and a map reference (topo sheet or whatever map you're using for ground control point matching) go in a target project in a real-world coordinate system (e.g. ETRS33).
here's the whole journey, step by step, no skips:
1 β Create/Modify imagery group to be orthorectified: i.group
this step runs in the source project π«Ά
first thing first: you make or modify an imagery group of aerial images for ortho-rectification. the current imagery group is displayed at the top of the menu, so you always know what you're working with. you can pick a new or existing imagery group for the ortho-rectification. once you choose this option you'll be prompted for the name of a new or existing imagery group. and boom β a new file mapset/group/name_of_group/REF gets created, holding the names of all images in a group.
IMG_0020 source_mapset
IMG_0021 source_mapset
IMG_0022 source_mapset
2 β Select/Modify target project and mapset for orthorectification: i.ortho.target
also runs in the source project π
the target project and mapset can be selected or modified here in Step 2. you'll be prompted for the names of the projected target project and mapset where the ortho-rectified raster maps will live. lowkey important: the target project is also the project from which the elevation model (raster map) will be selected (see Step 3). and as a result of Step 2, a new file mapset/group/name_of_group/TARGET is created containing the names of target project and mapset.
ETRS_33N
target_mapset
3 β Select/Modify target elevation model used for orthorectification: i.ortho.elev
yep, still the source project πΈ
Step 3 is where you select the raster map from the target project to be used as the elevation model. this elevation model is required for both the computation of photo-to-target parameters (Step 6) and for the ortho-rectification of the imagery group files (Step 8). the raster map you pick for the elevation model should cover the entire area of the image group to be ortho-rectified, fr fr β no partial coverage shenanigans. DTED and DEM files are suitable for use as elevation model in the ortho-rectification program. here you'll be prompted for the name of the raster map in the target project that you want to use as the elevation model. and as a result of this step, a new file mapset/group/name_of_group/ELEVATION is created, containing the name and mapset of the chosen DEM.
elevation layer :ELEVATION
mapset elevation:target_mapset
location :ETRS_33N
math expression :(null)
units :(null)
no data values :(null)
4 β Create/Modify camera file of imagery group: i.ortho.camera
source project again bestie, keep up π
in Step 4 you can select or create a camera reference file that'll be used with the current imagery group. a camera reference file contains info on the internal characteristics of the aerial camera, plus the geometry of the fiducial or reseau marks. the most important characteristic of the camera is its focal length, no cap. the fiducial or reseau marks locations are required to compute the scanned image to photo coordinate transformation parameter (Step 5). two new files get created here: a file mapset/group/name_of_group/CAMERA holding the name of the reference camera, and a file mapset/camera/name_of_reference holding the camera parameters.
CAMERA NAME sony
CAMERA ID 123
CAMERA XP 0
CAMERA YP 0
CAMERA CFL 16
NUM FID 4
0 -11.6 0
1 0 7.7
2 11.6 0
3 0 -7.7
5 β Compute image-to-photo transformation: g.gui.photo2image
source project vibes only π¦
the scanned image to photo coordinate transformation parameters β aka the "interior orientation" β get computed in Step 5. this one's interactive: you associate the scanned reference points (fiducials, reseau marks, etc.) with their known photo coordinates from the camera reference file. a new file mapset/group/name_of_group/REF_POINTS is created, containing a list of pairs of coordinates in image and photo coordinate systems.
# Ground Control Points File
#
# target location: XY
# target mapset: source_mapset
# source target status
# east north east north (1=ok, 0=ignore)
#-------------------------------------------------------------
0 1816 -11.6 0.0 1
2728 3632 0.0 7.7 1
5456 1816 11.6 0.0 1
2728 0.0 0.0 -7.7 1
Step 5: Image-to-photo transformation of an oblique image
6 β Initialize parameters of camera: i.ortho.init
you guessed it β source project π
in Step 6, initial camera exposure station parameters and initial variances may be selected or modified. let's break it down:
- π X: East aircraft position;
- π Y: North aircraft position;
- π Z: Flight height above surface;
- π Omega (pitch): Raising or lowering of the aircraftβs front (turning around the wingsβ axis);
- π Phi (roll): Raising or lowering of the wings (turning around the aircraftβs axis);
- π§ Kappa (yaw): Rotation needed to align the aerial photo to true north: needs to be denoted as
+90Β°for clockwise turn and-90Β°for a counter-clockwise turn.
Principle of pitch and yaw
in Step 6, a new file mapset/group/name_of_group/INIT_EXP is created, containing camera parameters.
INITIAL XC 215258.345387
INITIAL YC 6911444.022270
INITIAL ZC 1101.991120
INITIAL OMEGA 0.000000
INITIAL PHI -0.168721
INITIAL KAPPA 3.403392
VARIANCE XC 5.000000
VARIANCE YC 5.000000
VARIANCE ZC 5.000000
VARIANCE OMEGA 0.000000
VARIANCE PHI 0.020153
VARIANCE KAPPA 0.017453
STATUS (1=OK, 0=NOT OK) 0
7 β Compute ortho-rectification parameters from ground control points: g.gui.image2target
π¨ plot twist: this step runs in the target project π¨
the photo to target transformation parameters β the "exterior orientation" β get computed in Step 7. this one's interactive too: control points are marked on one or more imagery group files and associated with the known standard (e.g. UTM) and elevation coordinates. reasonable rectification results can be obtained with around twelve control points well distributed over the image, bestie β twelve, spread out, don't clump them. in this step, a new file mapset/group/name_of_group/CONTROL_POINTS is created, containing a list of pairs of coordinates of ground control points in photo and target coordinate systems.
# Ground Control Points File
#
# target location: ETRS_33N
# target mapset: target_mapset
# source target status
# east north height east north height (1=ok, 0=ignore)
#------------------------------ ---------------------- ---------------
98.3679932698 906.327649515 0.0 1.0 5.0 100.0 1
733.293023813 1329.61100321 0.0 2.0 6.0 100.0 1
1292.6317412 1703.76325335 0.0 3.0 7.0 100.0 1
1625.54617472 1368.11694482 0.0 4.0 6.0 100.3 1
3239.82849913 1390.97403968 0.0 7.4 6.0 100.3 1
1570.09788497 2790.06537829 0.0 3.0 11.0 100.0 1
Step 7: Detail of ground control points matching in an oblique image and terrain model
8 β Ortho-rectify imagery group: i.ortho.rectify
and we're back in the source project for the finale π¬
Step 8 is where you actually perform the image ortho-rectification, once all the transformation parameters have been computed. ortho-rectified raster files will be created in the target project for each selected imagery group file. you may select either the current window in the target project or the minimal bounding window for the ortho-rectified image β your call, bestie.
Step 8: Ortho-rectified oblique image
as a result, the ortho-rectified raster map is available for visualization and further image analysis. slay π
π REFERENCES π
Wolf P.R. (1983). Elements of Photogrammetry: With Air Photo Interpretation and Remote Sensing McGraw Hill Higher Education ISBN-10: 0070713456, ISBN-13: 978-0070713451
π SEE ALSO π
g.gui.image2target, g.gui.photo2image, i.group, i.ortho.camera, i.ortho.elev, i.ortho.init, i.ortho.rectify, i.ortho.target
π AUTHORS π
Mike Baba, DBA Systems, Inc. GRASS development team, 199?-2017
πΎ SOURCE CODE πΎ
available at: i.ortho.photo source code (history)
latest change: Friday Aug 08 09:39:19 2025 in commit: ed72c71d8580e872cd6fd345c84a15c324764465
Main index | Imagery index | Topics index | Keywords index | Graphical index | Full index
Β© 2003-2026 GRASS Development Team, GRASS 8.5.0 Reference Manual
and that's a wrap on i.ortho.photo, bestie π«Ά this page ships as part of GRASS 8.5.0 (that's the version riding in the footer, with i.ortho.photo(1grass) hanging out right next to it) β¨ go forth and recti-fy your oblique images, you've got this, periodt π
π¦ where this page comes from
- alpine 3.24: grass-gis-doc 8.5.0-r1 Β· GPL-2.0-or-later
- ubuntu stonking: grass-doc 8.5.0-1ubuntu1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms