Differences between revisions 17 and 19 (spanning 2 versions)
Revision 17 as of 2008-07-11 09:36:11
Size: 3930
Editor: NinaMaass
Comment:
Revision 19 as of 2008-07-11 09:47:33
Size: 4555
Editor: NinaMaass
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
die Transformation in polarstereographische Koordinaten und der nachfolgende Uebergang zu den Bildpunkten von ASAR
  Eckpunkten und Aufloseung des ASAR-Bildes variieren frei -> allgemeingueltiges Programm fuer den Uebergang
  des Outputs erfolgt als Vektor in der Form x, y, Freiboardhoehe(fbh)
   
Line 13: Line 9:
{{attachment:schemabild.jpg}} {{attachment:}}
Line 17: Line 13:
  Theorie zur Koordinatentransformation:
Line 18: Line 16:
(Arbeitsschritten, Theorie, Input/Output) Eine affine Abbildung ist eine lineare Koordinatentransformation, die die elementaren Transformationen Translation, Rotation, Dilatation, Stauchung und Scherung umfasst. Sie kann durch Vektoraddition und Matrixmultiplikation ausgedrueckt werden:
Homogene Koordinaten:
Bestimmung der Transformationskoeffizienten für drei nichtkollineare Punkte:
Bestimmung der Transformationskoeffizienten für mehr als drei nichtkollineare Punkte (Methode der kleinsten Quadrate):

(für mehr Informationen siehe B. Jähne, Digitale Bildverarbeitung, Kapitel 10.4)


Arbeitsschritte:

Die Gruppe hat drei Programme bzw. Funktionen erarbeitet:
 * -read_icesat.py:
 * -coord_trans.py:
 * -fbh_bildkoordinaten.py:
Line 60: Line 71:
    # cutting off non-corresponding data values
    m=-1
    index_vec=[]
    for xn,yn in zip(x_neu,y_neu):
        m=m+1
        if xn<=1. and xn >=0. and yn<=1. and yn >=0.:
            index_vec.append(m)

    x_bild=[]
    y_bild=[]
    fbh_bild=[]
Line 90: Line 112:
Line 106: Line 127:
}}}
Line 119: Line 139:
{{attachment:schemabild.jpg}}

Arbeitsgruppe 1: Freibord

Die Aufgabe der Arbeitsgruppe bestand darin, die I

Daten

Der Gruppe stand ein ASAR-Satellitenbild zur Verfügung, das ein Auschnitt des Weddellmeeres zeigt und ein ICESat-Datensatz, der die geographischen Positionen (lon, lat) und die an diesen Punkten gemessene Freibordhoehe (cm) für einen Ueberflug quer durch den ASAR-Ausschnitt beinhaltet.

Methodik

Theorie zur Koordinatentransformation:

Eine affine Abbildung ist eine lineare Koordinatentransformation, die die elementaren Transformationen Translation, Rotation, Dilatation, Stauchung und Scherung umfasst. Sie kann durch Vektoraddition und Matrixmultiplikation ausgedrueckt werden: Homogene Koordinaten: Bestimmung der Transformationskoeffizienten für drei nichtkollineare Punkte: Bestimmung der Transformationskoeffizienten für mehr als drei nichtkollineare Punkte (Methode der kleinsten Quadrate):

(für mehr Informationen siehe B. Jähne, Digitale Bildverarbeitung, Kapitel 10.4)

Arbeitsschritte:

Die Gruppe hat drei Programme bzw. Funktionen erarbeitet:

  • -read_icesat.py:
  • -coord_trans.py:
  • -fbh_bildkoordinaten.py:

Ergebnisse

(Output, Statistik)

Diskussion

fbh_bildkoordinaten.py

   1 from polar_projection import *
   2 from read_asar import *
   3 from read_icesat import *
   4 from coord_transform import *
   5 from scipy import *
   6 
   7 def fit_freeboard_ASAR(filename1,filename2):
   8     """filename1: ASAR data file, filename2: freeboard data file
   9        creates new coordinate system defined by corners of ASAR image and selects freeboard values within ASAR image box
  10        returns an array containing normalized image coordinates and corresponding freeboard values:
  11        [x_coordinate, y_coordinate, freeboardheight(cm)]"""
  12     
  13     sgn=-1  #Antarctica
  14     ASAR=array(read_asar_corners(filename1))
  15     ASAR_p=zeros(8)
  16     for k in arange(0,7,2):       #computing polarstereographic coordinates
  17         ASAR_p[k:k+2]=mapll(ASAR[k],ASAR[k+1],sgn)
  18 
  19     A=coord_transformation(ASAR_p)
  20 
  21     # reading freeboard data and computing geographic into polarstereographic coordinates
  22     ICESAT_p,fbh=read_icesat(filename2,sgn)    #fbh are measured freeboard heights in cm
  23 
  24     # calculating new coordinates for freeboard data
  25     x_neu=[]
  26     y_neu=[]
  27     for x,y in zip(ICESAT_p[0],ICESAT_p[1]):
  28         x_neu.append(dot(array([A[0,0],A[0,1]]),array([x,y]))+A[0,2])
  29         y_neu.append(dot(array([A[1,0],A[1,1]]),array([x,y]))+A[1,2])
  30    
  31     # cutting off non-corresponding data values  
  32     m=-1
  33     index_vec=[]
  34     for xn,yn in zip(x_neu,y_neu):
  35         m=m+1
  36         if xn<=1. and xn >=0. and yn<=1. and yn >=0.:
  37             index_vec.append(m)
  38 
  39     x_bild=[]
  40     y_bild=[] 
  41     fbh_bild=[]
  42     for i in index_vec:
  43         x_bild.append(x_neu[i])
  44         y_bild.append(y_neu[i])
  45         fbh_bild.append(fbh[i])
  46 
  47     x_y_fbh=array([x_bild,y_bild,fbh_bild])
  48 
  49     return x_y_fbh

coord_transform.py

   1 from scipy import linalg as la
   2 
   3 def coord_transformation(ASAR_p):
   4     # polarstereographic coordinate system
   5     y00,x00,y01,x01,y02,x02,y03,x03=int(ASAR_p[1]),int(ASAR_p[0]),int(ASAR_p[7]),int(ASAR_p[6]),int(ASAR_p[5]),int(ASAR_p[4]),int(ASAR_p[3]),int(ASAR_p[2])
   6     # new coordinate system with normalized coordinates  
   7     y10,x10,y11,x11,y12,x12,y13,x13=0,0,1,0,1,1,0,1
   8 
   9     # calculating transformation matrix:
  10     P0=array([[x00, x01, x02, x03],[y00,y01,y02,y03],[1.0,1.0,1.0,1.0]])
  11     P1=array([[x10, x11, x12, x13],[y10,y11,y12,y13],[1.0,1.0,1.0,1.0]])
  12 
  13     Faktor1=dot(P1,la.transpose(P0))
  14     Faktor2=la.inverse(dot(P0,la.transpose(P0)))
  15     A=dot(Faktor1,Faktor2)  # Transformation matrix
  16     return A

read_icesat.py

   1 # reading freeboard data
   2 
   3 import string
   4 from geo_polar import *
   5 from scipy import io
   6 
   7 def read_icesat(filename,sgn):
   8     data=io.read_array(filename)
   9     polar=mapll(data[:,1],data[:,0],sgn)
  10     fbh=data[:,2]
  11     return polar,fbh
  12 
  13 
  14 Die benötigten Module polar_projection.py und read_asar.py sind auf der Seite der Arbeitsgruppe 0 [[AG0_ASAR_Einlesen]] zu finden. 
  15 
  16 '''fbh_bildkoordinaten_test.py'''
  17 
  18 Zum Testen hängt man an das obige Programm folgende Zeilen an: 
  19 {{{#!python
  20 filename1='ASA_IMP_1PNDPA20060617_043346_000000162048_00362_22460_2136.N1'
  21 filename2='LonLatFre_1706_6.xyz'
  22 ergebnis=fit_freeboard_ASAR(filename1,filename2)

attachment.schemabild2.jpg

LehreWiki: \AG1_Freibord (last edited 2008-07-11 11:19:34 by NinaMaass)