\chapter{Mosaik aus Luftbildern erstellen}
\label{mosaicking_aerial_images_de}

\subsubsection{Aufgabenstellung}

Da Luftbildflüge streifenweise mit großer Überlappung der einzelnen
Aufnahmen durchgeführt werden, ist die Erstellung eines Mosaiks aus
den einzelnen Aufnahmen eine interessante Aufgabe.
F"ur diesen Fall haben wir 10 Luftbilder, die durch zu Identifizierende 
Passpunkte geokodiert werden k"onnen. Obwohl durch
den Einsatz moderner Kamera- und
Navigationstechnik die mittleren Standardabweichungen der Fluglage
und Richtung unter 0,01 Gon liegen, lassen sich die unbearbeiteten
Aufnahmen nicht ohne Ungenauigkeiten zusammenfügen.
Dies liegt an der Zentralperspektive der Reihenmesskammern,
durch die sich auf den Aufnahmen mit zunehmenden Abstand zur
Bildmitte eine Verzerrung auftritt. Desweiteren ergibt sich durch 
Höhenänderungen des Gländes im Luftbild eine Maßstabsänderung.
Bei der sogenannte Orthophotoherstellung lassen sich Luftbilder so
bearbeiten, dass sie wie eine Karte behandelt werden k"onnen.
Es kann in ihnen gemessen werden und durch die hohe
Informationsdichte des geokodierten Orthophotos ergeben sich vielfältige
M"oglichkeiten der Datengewinnung. 
Grundsätzlich ist für eine solche Entzerrung ein Höhenmodell
erforderlich. Überschreiten die Höhendifferenzen in einem
Luftbild einen Wert von (Bildmaßstabszahl : 500) nicht, kann ein Orthophoto
auch ohne ein Höhenmodell berechnet werden (vergl. \cite{neteler}).
Da in dem verwendeten Beispielmaterial die maximale Höhendifferenz
von 12 Metern (Bildmaßstabszahl 6000 : 500 = 12) kaum überschritten
wird, kann die Zentralprojektion der Luftbilder durch das Modul
{\em i.ortho.photo} in eine Parallelprojektion (Kartenprojektion)
transformiert werden. Anschließend wird ein 
Luftbildmosaik aus den so berichtigten Bildern erstellt.
\nomenclature{\bf Gon}{\input{glossary-de/glossary-gon-de}}
\nomenclature{\bf Reihenmesskammer}{\input{glossary-de/glossary-reihenmesskammer-de}}
\subsubsection{Beispieldaten}
Die verwendeten Luftbilder liegen als Tiff Dateien 174.tif - 183.tif vor.
Jede Datei hat eine Größe von 360 MB. 
Diese Daten wurden von der RWE Rheinbraun AG Abteilung
BT3 - Photogrammetrie zur Verfügung gestellt.
Diese Daten wurden den Vorgaben dieses Tutorials entsprechend unter die 
GPL (General Public License) gestellt.

%\subsubsection{Weitere Verwendung der Beispieldaten}


\section{L"osung mit GRASS}
\label{mosaicking_aerial_images_de:grass}
Es wurde GRASS 5.0pre2 unter einer Debian GNU/Linux
Installation (woody) verwendet.\\

\subsection{Erzeugung eines Orthophotos ohne Höhenmodell}

Da für die hier erfolgende Luftbildentzerrung keine Georeferenzierung
in ein "ubergeordnetes Koordinatensystem erforderlich ist,
reicht es aus, alle Luftbilder mit {\tt r.in.tiff} in ein {\em Mapset}
einer {\em Location} zu importieren.
Der Ablauf wird hier beispielhaft mit der Datei {\em 181.tif}
durchgeführt.

\begin{kommando}
\begin{verbatim} 

GRASS:> r.in.tiff -v input=181.tif output=raw181
TIFF Directory at offset 0x16678646
  Image Width: 11194 Image Length: 11193 Image Depth: 1
  Bits/Sample: 8
  Compression Scheme: None
  Photometric Interpretation: RGB color
  Software: "TLD2TIFF, Z/I Imaging GmbH, Oberkochen, Germany"
  Orientation: row 0 top, col 0 lhs
  Samples/Pixel: 3
  Rows/Strip: 5
  Planar Configuration: single image plane
  Looking for TIFF World file ...   Not Found!
11194x11193x24 image
 8 bits/sample, 3 samples/pixel   
Total colors = 948082
WARNING: Color levels quantization...
Total used colors = 8000
Creating SUPPORT Files for raw181
done.

\end{verbatim}
\end{kommando}

Obwohl kein Höhenmodell benötigt wird, muß man eine Rasterdatei
von der Größe des Ziel-{\em Mapsets} mit dem Befehl
{\em r.mapcalc h=0} erstellt. Hiermit wird eine Datei {\em h}
mit einem Rasterwert 0 für jede Zelle erzeugt.
Diese Datei wird später als Quasi-Höhenmodell bei der Entzerrung beutzt.\\  


\begin{kommando}
\begin{verbatim}

GRASS:> r.mapalc h=0 

EXECUTING h =... 100%
CREATING SUPPORT FILES FOR h
range: 0 0

\end{verbatim}
\end{kommando}



Zur weiteren Bearbeitung kann direkt das Modul {\tt i.ortho.photo}
aufgerufen werden. Hier werden der Rheihe nach die Punkte {\em 1 - 8}
abgearbeitet.




\begin{kommando}
\begin{verbatim}

GRASS:> i.ortho.photo

i.ortho.photo --        Imagery Group = 181

Initialization Options:

   1.     Select/Modify imagery group
   2.     Select/Modify imagery group target
   3.     Select/Modify target elevation model
   4.     Select/Modify imagery group camera

Transformation Parameter Computations:

   5.     Compute image-to-photo transformation
   6.     Initialize exposure station parameters
   7.     Compute ortho-rectification parameters

Ortho-rectification Option:

   8.     Ortho-rectify imagery files

RETURN   exit

\end{verbatim}
\end{kommando}

\paragraph{Punkt 1}
Durch diesen Unterpunkt wird eine Gruppe gebildet, in der das zu bearbeitende
Luftbild benannt wird. Es können auch mehrere Dateien benannt werden.
Da diese {\em group} noch nicht existiert wird ihre Bildung mit einem
{\tt y} bestätigt.\\  

\begin{kommando}
\begin{verbatim}

181 - does not exist, do you wish to create a new group? (y/n) [y]

\end{verbatim}
\end{kommando}


\begin{kommando}
\begin{verbatim}
   
LOCATION: tutorial            i.group            MAPSET: ortho
 
This program edits imagery groups. You may add data layers to,
or remove data layers from an imagery group.
You may also create new groups
 
Please enter the group to be created/modified
 
 
GROUP:    181_________________   (list will show available groups)
 
 
      AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                        (OR <Ctrl-C> TO EXIT)


181-does not exist, do you wish to create a new group?(y/n) [n] y


LOCATION: tutorial           GROUP: 181           MAPSET: ortho
 
Please mark an 'x' by the files to be added in group [181]
 
MAPSET: 181
 
x_ raw181
 
 
      AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                       (OR <Ctrl-C> TO CANCEL)	     



Group [181] references the following raster file
-----------------------
        raw181 in 181
-----------------------
Look ok? (y/n) y

Group 181 created!

\end{verbatim}
\end{kommando}

\paragraph{Punkt 2}
Der Aufruf {\em  Select/Modify imagery group target} benennt das Ziel-
{\em Mapset} für die Entzerrung, in diesem Fall {\em ortho}
, also Zielsystem ist gleich Startsystem.
Dieses geht natürlich nur problemlos wenn, wie in diesem Fall, beide Systeme
übereinstimmen, jeweils ein kartesisches {\em x-y} - System.\\

\begin{kommando}
\begin{verbatim}

GRASS:> i.target
This program targets an imagery group to a GRASS database
 
Enter group that needs a target
Enter 'list' for a list of existing imagery groups
Enter 'list -f' for a verbose listing
Hit RETURN to cancel request
>181


Please select the target LOCATION and MAPSET for group <181>
 
CURRENT LOCATION: tutorial
CURRENT MAPSET:   ortho
 
 
TARGET LOCATION:  tutorial
TARGET MAPSET:    ortho
 
(enter list for a list of locations or mapsets within a location)

 
 
 
     AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                     (OR <Ctrl-C> TO CANCEL)

group [181] targeted for location [tutorial], mapset [ortho]   

\end{verbatim}
\end{kommando}




\paragraph{Punkt 3}
Hier wird die zu Begin erzeugte Rasterdatei {\em h} an {\em i.ortho.photo}
übergeben. Wie schon Eingangs erwähnt, kann bei geringen Höhenunterschieden
das Orthophoto ohne H"ohenmodell berechnet werden.\\

\begin{kommando}
\begin{verbatim}


Please select the elevation raster file for group <181>


Elevation raster file:      h___________________

(enter list for a list of existing raster files)



           AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                            (OR <Ctrl-C> TO CANCEL)

\end{verbatim}
\end{kommando}

Um die Luftbildentzerrung zu berechnen, ben"otigt GRASS Angaben zu der
verwendeten Kamera oder besser gesagt Reihenme"skammer. Benutzt wurde eine 
ZEISS Luftbildkamera RMK TOP 15. Die dem Kalibrierschein entnommenen
Werte werden in das unter Punkt {\em 4   Select/Modify imagery group camera}
eingetragen.\\

\begin{kommando}
\begin{verbatim} 

Enter a camera reference file to be used with this imagery group
Enter 'list' for a list of existing camera files
Enter 'list -f' for a verbose listing
Hit RETURN to cancel request
> rmk15

                   Please provide the following information:
+---------------------------------------------------------------------+
   Camera Name                                    RMK________________
   Camera Identification                          ___________________
   Calibrated Focal Length mm.                    153.878____________
   Point of Symmetry: X-coordinate mm.            0.007______________
   Point of Symmetry: Y-coordinate mm.            -0.003_____________
   Maximum number of fiducial or reseau marks     8__________________

+---------------------------------------------------------------------+

       AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                       (OR <Ctrl-C> TO CANCEL)

\end{verbatim}
\end{kommando}

Im folgenden Eingabemenü werden den im Luftbild vorhandene Rahmenmarken
die entsprechenden Werte der Kalibrierung zugeordnet.\\

\begin{kommando}
\begin{verbatim}


               Please provide the following information:
+---------------------------------------------------------------------+

            Fid#     Fid Id          Xf              Yf

             1       1_____      113.005___      0.014_____
             2       2_____      -112.99___      0.004_____
             3       3_____      0.012_____      113.001___
             4       4_____      0.001_____      -112.985__
             5       5_____      113.005___      113.006___
             6       6_____      -112.992__      -112.993__
             7       7_____      -112.991__      113.002___
             8       8_____      113.004___      -112.994__


                            Next: end__

+---------------------------------------------------------------------+



           AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                            (OR <Ctrl-C> TO CANCEL)

\end{verbatim}
\end{kommando}

\paragraph{Punkt 5}
Um das gescannte Luftbild nun mit den eingegebenen Werten für die Rahmenmarken
zu verbinden, werden diese im nächsten Schritt,
Punkt {\em 5  Compute image-to-photo transformation}, einander zugewiesen
(Abb. \ref{marks1}). Durch geschicktes heranzoomen und anklicken der
Rahmenmarken, anschlie"sendes doppelklicken des entsprechenden
Eintrages in der Liste,
und einem bestätigendem, abschließendem Mausklick in dem GRASS - Monitor,
werden alle Rahmenmarken identifiziert. Die im Luftbild ausgewiesenen Nummern
stimmen mit denen in der Liste überein. Ein abschließendes Überprüfen erfolgt
mit der {\em ANALYZE} - Funktion (Abb. \ref{marks2}).
Mit dem Verlassen des Identifizierungmen"us werden die Parameter gespeichert.\\

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{mosaic-from-aerial-images/marks1.eps}
\caption[Screenshot GRASS Identifizierung Rahmenmarken]{\label{marks1}Identifizierung der Rahmenmarken in GRASS}
\end{figure}

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{mosaic-from-aerial-images/marks2.eps}
\caption[Screenshot GRASS Analyse Rahmenmarken]{\label{marks2}Analysierung der Genauigkeit der Rahmenmarkenidentifizierung in GRASS}
\end{figure}

\paragraph{Punkt 6}

Unter Punkt 6 werden Daten zu der Position und Lage der Kamera w"ahrend der 
Aufnahme gemacht. Die gr"obsten Abweichungen von der Idealen Position
werden durch die Kameraaufh"angung im Flugzeug ausgeglichen. 
Die "`Restwerte"' sind im Befliegungsprotokoll zu finden.
Eine Umrechnung mu"s bei den {\em Initial Camera degrees} erfolgen,
da diese im Protokoll in Gon (Neugrad) angegeben sind, von GRASS
aber in Grad verlangt werden. Die Umrechnung ist denkbar einfach, der GON-
Wert wird mit 360 multipliziert und dann durch 400 geteilt.
Die Nadirkoordinaten, also die Koordinaten bei denen die optische Achse
der Kamera auf den "`Boden"' trifft, werden mit den Bildmittenkoordinaten
gen"ugend angenähert. Die Flughöhe {\em Z-coordinate Meters} kann aus dem
ungefähren Luftbildma"sstab und der Brennweite (Kammerkonstante) der 
Kamera berechnet werden. Dazu wird die Ma"sstabszahl des Luftbildes,
wiederum im Befliegungsprotokoll zu finden, mit der Brennweite der Me"skammer
multipliziert, diese findet sich im Kalibrierungsprotokoll,
daraus ergibt sich: \begin{math}5978 * 153.878=919882.684\end{math}\ mm,
also rund 920 Meter. Ist ein a priori - Wert für die Standardabweichung
der Kameraposition ermittelt worden kann er in den Zeilen 
{\em Apriori standard deviation X-coordinate Meters:} angegeben werden,
falls kein solcher Wert  bekannt ist kann er mit 10 Meter angenommen werden.
F"ur die {\em Apriori standard deviation Omega/Phi/Kappa degrees:} kann
0 angenommen werden. Sind wie in unserem Fall die Angegebenen Werte
durch ein GPS-gest"utztes Navigationssystem ermittelt worden, so 
k"onnen sie w"ahrend der Laufzeit benutzt werden {\em Use these values at run time? (1=yes, 0=no)}.\\ 

\begin{kommando}
\begin{verbatim}

                   Please provide the following information:
+-----------------------------------------------------------------------+
     Initial Camera Exposure X-coordinate Meters:           5597__________
     Initial Camera Exposure Y-coordinate Meters:           5597__________
     Initial Camera Exposure Z-coordinate Meters:           920___________
     Initial Camera Omega (roll) degrees:                   0.00485_______
     Initial Camera Phi  (pitch) degrees:                   0.00365_______
     Initial Camera Kappa  (yaw) degrees:                   0.00152_______

     Apriori standard deviation X-coordinate Meters:        10____________
     Apriori standard deviation Y-coordinate Meters:        10____________
     Apriori standard deviation Z-coordinate Meters:        10____________
     Apriori standard deviation Omega (roll) degrees:       0_____________
     Apriori standard deviation Phi  (pitch) degrees:       0_____________
     Apriori standard deviation Kappa  (yaw) degrees:       0_____________

     Use these values at run time? (1=yes, 0=no)            1_
+------------------------------------------------------------------------+

           AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                            (OR <Ctrl-C> TO CANCEL)

\end{verbatim}
\end{kommando}

\paragraph{Punkt 7}

Mit dem Men"upunkt {\em 7.     Compute ortho-rectification parameters}
werden die im Luftbild erkennbaren, kordinatenm"a"sig bekannten 
Passpunkte für eine Georefrenzierung identifiziert. In unserem vereinfachten
Beispiel wird ein kartesische Koordinatensystem für Luftbild und 
Orthophoto benutzt. Zu diesem Zweck werden bei der Identifizierung der
Passpunkte beliebige Punkte im Luftbild benutzt deren angezeigte
{\em X: und Y: } -Werte als {\em CONRTOL COORDINATES} direkt wieder
an GRASS "ubergeben werden. Hierf"ur kann es notwendig werden eine
gr"o"sere Zahl von Punkten (20 - 30) "uber das gesammte Luftbild zu verteilen
um einen annehmbaren {\em Analyse}-Fehlerwert zu erreichen. \\

\begin{kommando}
\begin{verbatim}

+----------------------------------------------------------------------+
|                                                                      |
|                                                                      |
| Point 20 marked at IMAGE COORDINATES:                                |
|                                                                      |
|  X:      1711.31                                                     |
|  Y:      7307.66                                                     |
|                                                                      |
+----------------------------------------------------------------------+
| Enter CONTROL COORDINATES as east north elevation: 1711.31 7307.66 0 |
|                                                                      |
+----------------------------------------------------------------------+

\end{verbatim}
\end{kommando}

Im abschließenden Punkt {\em 8.     Ortho-rectify imagery files} wird
eine Bezeichnung {\tt 181ortho} für das entstehende Orthophoto
angegeben.\\ 

\begin{kommando}
\begin{verbatim}


Please select the file(s) you wish to rectify by naming an output file

181 in tutorial  . . . . . . . . . . 181ortho_______


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




           AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                            (OR <Ctrl-C> TO CANCEL)


\end{verbatim}
\end{kommando}

Um für das entstehende Orthophoto dieselbe {\em Location} des Luftbildes
zu benutzen wird Menuüpunkt 
{\tt 1. Use the current window in the target location} ausgew"ahlt.\\


\begin{kommando}
\begin{verbatim}

Computing equations...


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
>1


You will receive mail when photo.rectify is complete

\end{verbatim}
\end{kommando}

\newpage

\section{Erzeugung des Mosaikes}

Um mit GRASS das gew"unschte Orthophotomosaik zu erstellen, k"onnen
mehrere Wege gew"ahlt werden. Es k"onnte jedes Bild für sich erst
georeferenziert werden um zum Schluß alle zusammenzufügen.
Da sich bei dem vorliegenden Datenmaterial nicht in
jedem Orthophoto ausreichend markierte Passpunkte in der Örtlichkeit
befinden, erstellt man alternativ eine {\em x-y Location}
 mit einem Mapset für jedes Orthophoto.
Anschließend werden die untereinander liegenden Bilder je in ein 
gemeinsames {\em Mapset} transformiert, so das sich die 5 Einzelteile
für die erste Transformationsreihe ergeben. Von diesen 5
Einzelteilen wird das mittlere, Nummer 3 sozusagen,
als Zielsystem für die zweite Transformationsreihe bestimmt.
Die 4 "ubrigen Mosaike werden von innen also 2,4 nach 3 und
1,5 nach 3 in das Zielsystem transformiert. Auch bei genauestem
Markieren der identischen Passpunkte in den Orthophotos
werden sich Spannungen, die sogenannte
"`Klaffen"\ bei der Ermittlung der Transformationsparameter nicht
vermeiden lassen. Als Grad der Transformation wird 1 gew"ahlt. 


\subsection{Vorbereitungen für das Mosaik}
Um alle 10 Orthophotos zu einem Mosaik zusammenzufügen, wird nach dem
Start von GRASS eine {\em Location} mit einem {\em x-y}
Koordinatensytem erstellt z.B. {\em import}. Die Ausdehnung sollte
so gro"sz"ugig gew"ahlt werden, da"s das gesamte endg"ultige
Mosaik Platz findet. Ein nachträgliches "Andern der
Regionsparameter ist jedoch jederzeit
m"oglich. Die Bildgr"o"se eines Orthophotos betr"agt ca. 12000 * 12000
Pixel, ausgehend hiervon sollte eine Nord-S"ud Ausdehnung von +13000
bis -15000 ausreichend sein, da die Photos sich ja
überdecken. In Ost-West Richtung kann man mit den werten -25000
bis +25000 arbeiten. Innerhalb dieser {\em Location} 
werden nun 10 {\em Mapsets} erzeugt. Der Einfachheit halber k"onnen
diese z.B. nach der Numerierung der Orthophotos (175-182) benannt werden.
Bei der Benutzung der Bilder in voller Aufl"osung ergeben sich je nach
Rechner pro Transformation Rechenzeiten im Bereich von Stunden.
Es ist also eine "Uberlegung wert, die Transformationsparameter im
Voraus für mehrere Bilder zu bestimmen und die eigentlichen
Transformationen {\em i.rectify} "uber Nacht ablaufen zu lassen. 
In jede der neu erstellten {\em Mapsets} wird nun die zugeh"orige 
Orthophotodatei importiert. Dazu wird Beispielsweise das {\em Mapset
176} ge"offnet und bei dem ersten Aufruf angelegt. 

\begin{kommando}
\begin{verbatim}

                            GRASS 5.0.0pre2
 
LOCATION: This is the name of an available geographic location.
          -spearfish- is the sample data base for which all
	  tutorials are written.
 
MAPSET:   Every GRASS session runs under the name of a MAPSET.
          Associated with each MAPSET is a rectangular
	  COORDINATE REGION and a list of any new maps created.
 
DATABASE: This is the unix directory containing the geographic
          databases
 
         The REGION defaults to the entire area of the chosen 
	 LOCATION. You may change it later with the command:
	 g.region
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
LOCATION:   import________   (enter list for a list of locations)
MAPSET:     176___________   (or mapsets within a location)
 
DATABASE:   /spare/gisdata/rheinbraun/________________________
 
 
 
   AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                    (OR <Ctrl-C> TO CANCEL)

Mapset <<176>> is not available
 
Mapsets in location <import>
----------------------
(+)PERMANENT
 
note: you only have access to mapsets marked with (+)
----------------------
 
Would you like to create < 176 > as a new mapset? (y/n) y

\end{verbatim}
\end{kommando}\

%Ist so das {\em Mapset} angelegt, kann durch den Befehl 
%{\em r.in.tiff -v input=/spare/gisdata/rheinbraun/176.tif output=176}
%das Orthophoto importiert werden.\\

%\begin{kommando}
%\begin{verbatim}

%Welcome to GRASS 5.0.0pre2 (September 2001)
 
%Geographic Resources Analysis Support System (GRASS) is Copyright,
%1999-2001 by the GRASS Development Team, and licensed under
%terms of the GNU General Public License (GPL).
 
%This GRASS 5.0.0pre2 release is coordinated and produced by the
%GRASS Development Team headquartered at ITC-irst (Trento, Italy)
%with worldwide support and further development sites located at
%Baylor University and the University of Illinois (U.S.A.).
 
%This program is distributed in the hope that it will be useful, but
%WITHOUT ANY WARRANTY; without even the implied warranty of
%MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%General Public License for more details.
 
%This version running thru the Bash Shell (/bin/bash)
%Help is available with the command:      g.help
%See the licence terms with:              g.version -c
%Start the graphical user interface with: tcltkgrass&
%When ready to quit enter:                exit


%GRASS:> r.in.tiff -v input=176.tif output=176
%TIFF Directory at offset 0x16678646
%  Image Width: 11194 Image Length: 11193 Image Depth: 1
%  Bits/Sample: 8
%  Compression Scheme: None
%  Photometric Interpretation: RGB color
%  Software: "TLD2TIFF, Z/I Imaging GmbH, Oberkochen, Germany"
%  Orientation: row 0 top, col 0 lhs
%  Samples/Pixel: 3
%  Rows/Strip: 5
%  Planar Configuration: single image plane
%  Looking for TIFF World file ...   Not Found!
%11194x11193x24 image
% 8 bits/sample, 3 samples/pixel   
%Total colors = 948082
%WARNING: Color levels quantization...
%Total used colors = 8000
%Creating SUPPORT Files for 176
%done.

%\end{verbatim}
%\end{kommando}\

%Dieses Importieren wird in allen {\em Mapsets} f"ur die jeweiligen
%Orthophotos ausgef"uhrt.
   
\section{Transformationsparameter bestimmen}
Beispielhaft wird jetzt die Bestimmung der Transformationsparameter
f"ur den ersten "`Block"\ bestimmt. Um die Spannungen zwischen den
einzelnen Bl"ocken so klein wie m"oglich zu halten, wird als Ursprung
und endgültiges Zielsystem aller folgenden Transformationen ein
Orthophoto gew"ahlt, das in der Mitte einer der beiden
Befliegungsstreifen (175ortho, 176ortho, 177ortho, 178ortho)
und (179ortho, 180otho, 181ortho, 182ortho)
liegt.
Ist das Zielsystem also das Orthophoto 181ortho so wird GRASS für die
{\em Location: import} mit dem {\em Mapset: 176} aufgerufen.
F"ur das zu transformierende Orthophoto wird nun eine Gruppe mit
{\em i.group} gebildet. Bei der Benennung der Gruppe hat man freie
Wahl, doch bei umfangreichen Transformationen ist es hilfreich,
eindeutige Bezeichnungen zu w"ahlen, in unserem Fall wird die Gruppe
nach dem orthophoto "`176"' genannt. Die dieser {\em Group} beigef"ugte Datei
ist nat"urlich 176ortho. Nach der abschließenden Best"atigung ist die
{\em Group 176} erstellt.\\

\begin{kommando}
\begin{verbatim}

GRASS: > i.group
   
LOCATION: import            i.group            MAPSET: 176
 
This program edits imagery groups. You may add data layers to,
or remove data layers from an imagery group.
You may also create new groups
 
Please enter the group to be created/modified
 
 
GROUP:    176_________________   (list will show available groups)
 
 
      AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                        (OR <Ctrl-C> TO EXIT)


176-does not exist, do you wish to create a new group?(y/n) [n] y


LOCATION: import           GROUP: 176           MAPSET: 176
 
Please mark an 'x' by the files to be added in group [176]
 
MAPSET: 176ortho
 
x_ 176ortho
 
 
      AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                       (OR <Ctrl-C> TO CANCEL)	     

Group [176] references the following raster file
-----------------------
        176ortho in 176ortho
-----------------------
Look ok? (y/n) y

Group 176 created!

\end{verbatim}
\end{kommando}\
  
    Dieser Gruppe mu"s jetzt ein Zielsystem für die Transformation
    zugewiesen werden. Dazu dient der Befehl {\em i.target}. Als
    Ziel {\em Mapset} wird 181 ausgew"ahlt da dieses Orthophoto in der
    Reihe "uber 176 liegt. Das Orthophoto 181ortho wird damit das Zielsystem
    dieser Transformation.\\



\begin{kommando}
\begin{verbatim}

GRASS:> i.target
This program targets an imagery group to a GRASS database
 
Enter group that needs a target
Enter 'list' for a list of existing imagery groups
Enter 'list -f' for a verbose listing
Hit RETURN to cancel request
>176


Please select the target LOCATION and MAPSET for group <176>
 
CURRENT LOCATION: import
CURRENT MAPSET:   176
 
 
TARGET LOCATION:  import______________
TARGET MAPSET:    181_________________
 
(enter list for a list of locations or mapsets within a location)

 
 
 
     AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                     (OR <Ctrl-C> TO CANCEL)

group [176] targeted for location [import], mapset [181]   

\end{verbatim}
\end{kommando}\

Zur Bestimmung der Transformationsparameter wird das schon in
Kapitel \ref{sec:passpunkte} Seite \pageref{sec:passpunkte}
besprochene Modul {\em i.points} aufgerufen, nachdem vorher mit {\em
d.mon} ein GRASS-Monitor gestartet wurde.\\

\begin{kommando}
\begin{verbatim}

GRASS:/spare/gisdata/grass/bin > i.points
 
Enter imagery group to be registered
Enter 'list' for a list of existing imagery groups
Enter 'list -f' for a verbose listing
Hit RETURN to cancel request
>176

\end{verbatim}
\end{kommando}\
    
Im Grass-Monitor kann jetzt die im {\em Mapset} vorhandene Datei 176ortho
mit einem Doppelklick aufgerufen werden. Anschließend wird mit einem
Mausklick auf {\em PLOT RASTER} die im Ziel-{\em Mapset} liegende
Datei 181ortho in dem vorher angew"ahlten Viertel des GRASS-Monitors
angezeigt. Durch Vergr"o"sern identischer Bildausschnitte
in beiden Bildern durch die ZOOM-Funktion k"onnen identische
Punkte bestimmt werden. Es ist darauf zu achten, dass diese Punkte
direkt auf der Erdoberfläche liegen, es bieten sich also
Straßenmarkierungen Gullydeckel und "ahnliches an (Abb. \ref{mosaik_ipoints}).
Dachfirste, Strommasten, Kirchtürme u.s.w. k"onnen nicht benutzt werden.
Auch bei scheinbar parkenden Autos ist Vorsicht geboten, da man nur
in den seltensten F"allen einen identischen Punkt auf dem Boden, 
sprich Reifenunterkante in zwei Bildern genau identifizieren kann.
Bedingt durch die kurze Zeitspanne zwischen zwei Aufnahmen k"onnen
sich scheinbar stillstehende Objekte unbemerkt bewegt haben.
Nach dem Identifizieren von mindestens 4 Punkten kann mit einem
Mausklick auf {\em ANALYZE} der momentane Fehler der
Transformationsparameter mit den aktuell identifizierten Punkte
berechnet werden. Bei einer fl"achenhaften Verteilung der
Passpunkte in der "Uberlappungsfl"ache der beiden Bilder und 
gewissenhafter Bestimmung der Passpunkte ist es m"oglich, den Fehler 
im Bereich unter 10 Einheiten zu halten.
Bei einer ungef"ahren Kantenl"ange eines Pixels von 15 cm
h"atte man so eine Ungenauigkeit von unter 1,5 m. Dies erscheint bei 
einer Bildausdehnung von 1,8 * 1,8 km und der Tatsache, da"s die
Orthophotos ohne H"ohenmodell erstellt wurden durchaus annehmbar. 

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{mosaic-from-aerial-images/mosaik-ipoints.eps}
\caption[Screenshot GRASS Passpunkte identifizieren]{\label{mosaik_ipoints}Nutzung von {\em i.points} zur Identifizierung von Passpunkten in Orthophotos}
\end{figure}


\section{Transformieren des Orthophotos}
Mit dem Befehl {\em i.rectify} wird die gew"unschte Transformation
mit den bestimmten Parametern ausgeführt. Abschlie"send wird noch
der neue Name in dem Ziel-{\em mapset} angegeben {\em Please select the file(s) you wish to rectify by naming an output file}. \\

\begin{kommando}
\begin{verbatim}

GRASS:> i.rectify
 
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
> 176
<176> 

Please enter the order of the transformation you want: 1

Please select the file(s) you wish to rectify
by naming an output file
 
176@176  . . . . . . . . . . . . . . 176____________
 
 
(enter list by any name to get a list of existing raster files)
 
    AFTER COMPLETING ALL ANSWERS, HIT <ESC><ENTER> TO CONTINUE
                     (OR <Ctrl-C> TO CANCEL)


Please select one of the following options
 1. Use the current region in the target location
 2. Determine the smallest region which covers the image
 >2

\end{verbatim}
\end{kommando}\

Die angezeigte kleinste Ausdehnung der Startdatei in der Ziel-{\em Region}
kann nun im Regionsbildschirm mit {\em ESC ENTER} best"atigt
werden. Die Frage {\em Do you accept this region? (y/n) [n]  y}
wird bejaht und {\em Would you like this region saved as the region in the target location? (y/n)} verneint. \\ 

\begin{kommando}
\begin{verbatim}

Do you accept this region? (y/n) [n] y
Would you like this region saved as the region
in the target location?
(y/n) n

You will receive mail when i.rectify is complete
GRASS:/spare/gisdata/grass/bin >

\end{verbatim}
\end{kommando}\
     
 Wie schon geschrieben, kann die aufgerufene Transformation einige
 Zeit dauern. Mit {\em exit} kann GRASS nun beendet werden. 
 Nach der Meldung per e-mail, dass die Datei transformiert wurde,
 wechselt man in den Ziel - {\em Mapset 181} und f"uhrt hier 
 {\em r.support} aus, um die von GRASS ben"otigten Hilfsdateien
 auf den neuesten Stand zu bringen oder "uberhaupt erst zu erzeugen.
 In einem gestarteten GRASS-Monitor k"onnen nun nacheinander
 beide vorhandene Rasterdateien (176 und 181) aufgerufen und
 durch die Option {\em -o} f"ur Overlay überlagert werden (Abb.
 \ref{mosaik1}). Zur besseren Unterscheidung der einzelnen
 Orthophotos sind hier die Bildr"ander mit den Rahmenmarken nicht
 entfernt worden, bei der Arbeit mit Orthophotos w"urde
 nat"urlich vor der Transformation eine entsprechende Maske
 wie in \ref{sec:maskierung} auf Seite \pageref{sec:maskierung}
 beschrieben erstellt und angewendet werden. \\ 
  
\begin{kommando}
\begin{verbatim}

GRASS:/spare/gisdata/grass/bin > d.rast  map=181  
GRASS:/spare/gisdata/grass/bin > d.rast -o map=176  

\end{verbatim}
\end{kommando}\

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{mosaic-from-aerial-images/mosaik-1.eps}
\caption[Screenshot GRASS Mosaik]{\label{mosaik1}Überlagerte Ausgabe von 2 Orthophotos}
\end{figure}

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{mosaic-from-aerial-images/mosaik-2.eps}
\caption[Screenshot GRASS Mosaik komplett]{\label{mosaik2}Überlagerte Ausgabe von 10 Orthophotos}
\end{figure}



Um die beiden Bilder zu einer Rasterdatei zusammenzufügen, gibt
es den Befehl {\em r.patch}, der "ubergebene Rasterdateien so
"uberlagert, dass die zuerst angegebene Datei als oberste "`Folie"\ 
erscheint und die sp"ater aufgerufenen Dateien in den
"Uberlappungsgebieten verdeckt. Dem Programm  werden an der Kommandozeile
alle Rasterdateien "ubergeben, ist dies geschehen wird die folgende
Aufforderung ohne Eingabe mit {\em ENTER} best"atigt, daraufhin
fragt der Befehl den Namen der neuen Rasterdatei ab. Anschließend
wird wieder {\em r.support} für die neuerstellte Datei aufgerufen. 

\section{Abschlie"sendes Vorgehen}
Diese Art der Transformation wird für alle verbliebenen "'Orthophotopaare"'\
ausgeführt. Anschließend können die 4 "au"seren neugebildeten
"`Patch-Dateien"'\ wiederum in das System der "'mittleren"'\ Transformiert
und "`gepatcht"' werden (Abb. \ref{mosaik2}).

%\section{Alternative Vorgehensweisen}
%Sollten auf diese Weise die Ungenauigkeiten zwischen den einzelnen
%Bildbl"ocken zu gro"s werden, kann man versuchen, jedes Orthophoto einzeln an
%das Ursprungsbild anzuh"angen. So k"onnten die Spannungen zwischen den
%einzelnen Bildern unter Umst"anden besser verteilt werden.


