<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Das GEO-Forum - Helmert-Transformation mit 3D Koordinaten</title>
<link>http://forum.diegeodaeten.de/</link>
<description>DieGeodaeten.de ist ein geodätisches Portal, welches von Vermessungsingenieuren der HS Neubrandenburg ins Leben gerufen wurde. Neben Neuigkeiten aus den Bereichen Geodäsie und Geoinformatik werden Buchempfehlungen oder Downloads angeboten.</description>
<language>de</language>
<item>
<title>Helmert-Transformation mit 3D Koordinaten (Antwort)</title>
<content:encoded><![CDATA[<p>Lieber Micha,</p>
<p>Danke dir vielmals !!!</p>
]]></content:encoded>
<link>http://forum.diegeodaeten.de/index.php?id=6344</link>
<guid>http://forum.diegeodaeten.de/index.php?id=6344</guid>
<pubDate>Tue, 22 Jan 2019 22:08:48 +0000</pubDate>
<category>Geodäsie/Vermessung</category><dc:creator>uter</dc:creator>
</item>
<item>
<title>Helmert-Transformation mit 3D Koordinaten (Antwort)</title>
<content:encoded><![CDATA[<p>Hej David,</p>
<blockquote><p>In deinem Dokument in Abschnitt 2 ist mir bis zur symetrischen Matrix N auch alles klar. Aber bei &quot;..zum grössten Eigenwert gehörenden Eigenvektor der symetrischen Matrix N&quot; komm ich nicht so ganz weiter. Wie komme ich über N zu meinen Unbekannten der Quaternion q0, q1, q2 und q3? </p>
</blockquote><p>Wenn Du die Singulärwertzerlegung auf die Matrix N anwendest, erhältst Du die Singulärwerte und die Singulärvektoren. Alternativ kannst Du auch eine Eigenwertzerlegung in diesem Fall durchführen und würdest die Eigenwerte und -vektoren bekommen. Zu jedem Eigenwert existier also ein Eigenvektor. Nun suchst Du den größten Eigenwert von N. Der korrespondierende Eigenvektor ist dann die Quaternion.</p>
<p>Hier mal ein Matlab-Code, der Dir sicher weiterhilft und auch in Octave lauffähig sein sollte.</p>
<pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%%</span>
<span style="color: #228B22;">% Direkte Bestimmung der Transformationsparameter einer raeumlichen</span>
<span style="color: #228B22;">% Helmert-Transformation mittels Quaternion zur Beschreibung</span>
<span style="color: #228B22;">% der Rotationssequenz.</span>
<span style="color: #228B22;">%</span>
<span style="color: #228B22;">% Michael Loesler, 16.06.2018</span>
&nbsp;
<span style="color: #0000FF;">clear</span> <span style="color: #0000FF;">all</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
<span style="color: #0000FF;">format</span> long g;
<span style="color: #0000FF;">clc</span>;
&nbsp;
<span style="color: #228B22;">%% Punkte im Startsystem</span>
PunkteS = <span style="color: #080;">&#91;</span>
<span style="color: #33f;">4157222.543</span> <span style="color: #33f;">664789.307</span> <span style="color: #33f;">4774952.099</span>
<span style="color: #33f;">4149043.336</span> <span style="color: #33f;">688836.443</span> <span style="color: #33f;">4778632.188</span>
<span style="color: #33f;">4172803.511</span> <span style="color: #33f;">690340.078</span> <span style="color: #33f;">4758129.701</span>
<span style="color: #33f;">4177148.376</span> <span style="color: #33f;">642997.635</span> <span style="color: #33f;">4760764.800</span>
<span style="color: #33f;">4137012.190</span> <span style="color: #33f;">671808.029</span> <span style="color: #33f;">4791128.215</span>
<span style="color: #33f;">4146292.729</span> <span style="color: #33f;">666952.887</span> <span style="color: #33f;">4783859.856</span>
<span style="color: #33f;">4138759.902</span> <span style="color: #33f;">702670.738</span> <span style="color: #33f;">4785552.196</span>
<span style="color: #080;">&#93;</span>;
&nbsp;
<span style="color: #228B22;">%% Punkte im Zielsystem</span>
PunkteZ = <span style="color: #080;">&#91;</span>
<span style="color: #33f;">4157870.237</span> <span style="color: #33f;">664818.678</span> <span style="color: #33f;">4775416.524</span>
<span style="color: #33f;">4149691.049</span> <span style="color: #33f;">688865.785</span> <span style="color: #33f;">4779096.588</span>
<span style="color: #33f;">4173451.354</span> <span style="color: #33f;">690369.375</span> <span style="color: #33f;">4758594.075</span>
<span style="color: #33f;">4177796.064</span> <span style="color: #33f;">643026.700</span> <span style="color: #33f;">4761228.899</span>
<span style="color: #33f;">4137659.549</span> <span style="color: #33f;">671837.337</span> <span style="color: #33f;">4791592.531</span>
<span style="color: #33f;">4146940.228</span> <span style="color: #33f;">666982.151</span> <span style="color: #33f;">4784324.099</span>
<span style="color: #33f;">4139407.506</span> <span style="color: #33f;">702700.227</span> <span style="color: #33f;">4786016.645</span>
<span style="color: #080;">&#93;</span>;
&nbsp;
<span style="color: #228B22;">%% Ermittlung des Schwerpunktes beider System</span>
cX = <span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>PunkteS<span style="color: #080;">&#41;</span>;
cY = <span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>PunkteZ<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% Schwerpunktreduktion</span>
X = PunkteS - <span style="color: #080;">&#40;</span>cX'*<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>PunkteS,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>';
Y = PunkteZ - <span style="color: #080;">&#40;</span>cY'*<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>PunkteZ,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>';
&nbsp;
S = X'*Y;
&nbsp;
Sxx = S<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
Sxy = S<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
Sxz = S<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
&nbsp;
Syx = S<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
Syy = S<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
Syz = S<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
&nbsp;
Szx = S<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span>,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
Szy = S<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
Szz = S<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span>,<span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
&nbsp;
N = <span style="color: #080;">&#91;</span> Sxx+Syy+Szz      Syz-Szy         Szx-Sxz       Sxy-Syx
        Syz-Szy      Sxx-Syy-Szz       Sxy+Syx       Szx+Sxz
        Szx-Sxz        Sxy+Syx      -Sxx+Syy-Szz     Syz+Szy
        Sxy-Syx        Szx+Sxz         Syz+Szy    -Sxx-Syy+Szz<span style="color: #080;">&#93;</span>;
&nbsp;
<span style="color: #228B22;">% groesster positiver Eigenwert suchen und Eigenvektor nehmen == Rotationsquaternion</span>
<span style="color: #080;">&#91;</span>V,D<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">eig</span><span style="color: #080;">&#40;</span>N<span style="color: #080;">&#41;</span>;
<span style="color: #080;">&#91;</span>maxD, idxD<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">diag</span><span style="color: #080;">&#40;</span>D<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">%% Quaternion der Drehung</span>
q = V<span style="color: #080;">&#40;</span>:,idxD<span style="color: #080;">&#41;</span>;
&nbsp;
q0 = q<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
qq = q<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>:<span style="color: #0000FF;">end</span><span style="color: #080;">&#41;</span>;
&nbsp;
Cq = <span style="color: #080;">&#91;</span>  <span style="color: #33f;">0</span>    -qq<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>  qq<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>
       qq<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>   <span style="color: #33f;">0</span>    -qq<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>
      -qq<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>  qq<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>   <span style="color: #33f;">0</span>   <span style="color: #080;">&#93;</span>;
&nbsp;
<span style="color: #228B22;">%% Ableitung der Rotationsmatrix R</span>
R = <span style="color: #080;">&#40;</span>q0^<span style="color: #33f;">2</span> - qq'*qq<span style="color: #080;">&#41;</span>*<span style="color: #0000FF;">eye</span><span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span> + <span style="color: #33f;">2</span>*<span style="color: #080;">&#40;</span>qq*qq' + q0*Cq <span style="color: #080;">&#41;</span>;
&nbsp;
&nbsp;
<span style="color: #228B22;">%% Maßstab</span>
xTx = <span style="color: #0000FF;">trace</span><span style="color: #080;">&#40;</span>X' * X<span style="color: #080;">&#41;</span>;
m = maxD/xTx;
T = cY' - m*R*cX';
&nbsp;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Massstab'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span>m<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Translation'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span>T<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Rotationsmatrix'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span>R<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Quaternion'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span>q<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Omgea'</span><span style="color: #080;">&#41;</span>;
V = <span style="color: #080;">&#40;</span>m * R * PunkteS' + T * <span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>PunkteS,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>' - PunkteZ;
v = V<span style="color: #080;">&#40;</span>:<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span>v'*v<span style="color: #080;">&#41;</span>;</pre><p><br />
Viele Grüße<br />
Micha</p>
]]></content:encoded>
<link>http://forum.diegeodaeten.de/index.php?id=6343</link>
<guid>http://forum.diegeodaeten.de/index.php?id=6343</guid>
<pubDate>Tue, 22 Jan 2019 19:31:10 +0000</pubDate>
<category>Geodäsie/Vermessung</category><dc:creator>MichaeL</dc:creator>
</item>
<item>
<title>Helmert-Transformation mit 3D Koordinaten (Antwort)</title>
<content:encoded><![CDATA[<p>Hi Rafl,</p>
<p>Danke für deine Antwort ! Also habe am anfang auch Gedacht es mit der 2D Transformation zu machen und wenn der Tachy sauber horizontiert ist funktioniert das auch gut. Danke nochmal für den Hinweis mit der Z-Achse hat mich auf jedenfall nochmal zu nachdenken gebracht. Also für Messungen wie Bauaufnahmen etc. wäre diese Methode vollkommen ausreichend denk ich und auf jeden fall einfacher in meinem Code umzusetzen. Gute Alternative! Aber wie sieht es aus wenn ich genaue Messungen über etwas längere Distanzen benötige und ich habe zB einen Stehachsfehler und/oder der Tachy ist nicht perfekt horizontiert? Kann nicht so recht abschätzen wie stark sich dass dann auswirkt.</p>
<p>Würde es deshalb gerne nochmal mit der 3D Helmert Transformation versuchen, bevor ich auf diese Alternative zurückgreife, auch wenn es keine einfache Kost für mich ist <img src="http://forum.diegeodaeten.de/images/smilies/smile.gif" alt=":)" title="grins" />.</p>
<p>Michael ich habe mich etwas in die Dokumente eingelesen welche Du mir empfohlen hast. Einzelne Bereiche versteh ich glaub. Also die Rotation mit Quaternionen und warum man das macht. in diesem Ytube video wird das auch nochmal gut erklärt:</p>
<p><a href="https://www.youtube.com/watch?v=C5g62Cy6WLA">https://www.youtube.com/watch?v=C5g62Cy6WLA</a></p>
<p>Und die Singulärwertzerlegung hab ich so grob glaub auch verstanden <img src="http://forum.diegeodaeten.de/images/smilies/smile.gif" alt=":)" title="grins" />.</p>
<p>In deinem Dokument in Abschnitt 2 ist mir bis zur symetrischen Matrix N auch alles klar. Aber bei &quot;..zum grössten Eigenwert gehörenden Eigenvektor der symetrischen Matrix N&quot; komm ich nicht so ganz weiter. Wie komme ich über N zu meinen Unbekannten der Quaternion q0, q1, q2 und q3? Muss ich die Singulärwertzerlegung auf die Matrix N anwenden ? Und was beschreiben dann die daraus entstandenen 3 Matrizen ? Und was beschreibt in der äquivalenten Rotationsmatrix R das I ?</p>
<p>Wie gesagt ist bei mir alles schon etwas her und ich bin auch jemand der bei so komplexen Sachen immer alles Schritt für Schritt mit Beispielwerten für XYZ-Koordinaten durchgehen muss bis ichs dann kapiert habe. Sollte ich mich noch etwas mehr mit der Singulärwertzerlegung und was dabei rauskommt beschäftigen ?</p>
<p>Für Eure Hilfe bin ich sehr Dankbar!</p>
<p>Schöne Grüsse</p>
<p>David</p>
]]></content:encoded>
<link>http://forum.diegeodaeten.de/index.php?id=6342</link>
<guid>http://forum.diegeodaeten.de/index.php?id=6342</guid>
<pubDate>Tue, 22 Jan 2019 16:05:03 +0000</pubDate>
<category>Geodäsie/Vermessung</category><dc:creator>uter</dc:creator>
</item>
<item>
<title>Helmert-Transformation mit 3D Koordinaten (Antwort)</title>
<content:encoded><![CDATA[<p>Hallo David,</p>
<p>wenn dein Tachymeter horizontiert ist und die Stehachse parallel zur Z-Achse verläuft, ist es doch am einfachsten, wenn du das Problem getrennt nach Lage und Höhe betrachtest. Für die Lage nimmst du einfach die Formeln für eine 2D Helmerttransformation, die in jeder geodätischen Formelsammlung stehen und für die Höhe berechnest du dir über die trigonometrische Höhenberechnung rückwärts die Standpunkthöhe (gemittelt aus den Höhen, die sich von jedem Anschlussspunkt ergeben).</p>
<p>Da hast du keine Probleme mit Matrizen, Quaternionen und Inversionsalgorithmen.</p>
<p>Oder hast du ein Koordinatensystem, bei dem die Z-Achse nicht senkrecht verläuft und du auch die Rotationen um die X- und Y-Achse brauchst?</p>
<p>Schöne Grüße Rafl</p>
]]></content:encoded>
<link>http://forum.diegeodaeten.de/index.php?id=6341</link>
<guid>http://forum.diegeodaeten.de/index.php?id=6341</guid>
<pubDate>Mon, 21 Jan 2019 12:22:35 +0000</pubDate>
<category>Geodäsie/Vermessung</category><dc:creator>rafl</dc:creator>
</item>
<item>
<title>Helmert-Transformation mit 3D Koordinaten (Antwort)</title>
<content:encoded><![CDATA[<p>Hi,</p>
<p>kein Problem. Wie gesagt, nur die Gleichungen im Abschnitt 2 sind für Dich wichtig. Wenn Fragen sind, meld' Dich. </p>
<p>Viele Grüße<br />
Micha</p>
]]></content:encoded>
<link>http://forum.diegeodaeten.de/index.php?id=6340</link>
<guid>http://forum.diegeodaeten.de/index.php?id=6340</guid>
<pubDate>Sat, 19 Jan 2019 16:45:59 +0000</pubDate>
<category>Geodäsie/Vermessung</category><dc:creator>MichaeL</dc:creator>
</item>
</channel>
</rss>
