Hypothraxer
2011-02-18, 16:34:12
Guten Tag
Ich habe hier folgende Ausgangslage:
Es sind min. 2 Bilder, und die korrespondierenden Bildmessungen vorhanden. Das Ziel ist, die sechs unbekannten Orientierungsparameter der Bilder (je: X, Y, Z, Omega, Phi, Kappa) sowie die 3D Koordinaten der Bildmessungen via vermittelnder Ausgleichung auszugleichen (das gute, alte A^T P A * x = * A^T P l ).
Nun kommt das Problem: Jedes Bild bringt 6 Unbekannte mit. Jeder Objektpunkt 3.
Das heisst, dass die Normalgleichungsmatrize bei 2 Bildern und 6'000 Objektpunkten, 18'012 * 18'012 gross ist - allerdings ist sie nicht voll, sondern nur dünn besetzt.
Geht man auf etwas grössere Systeme los (z.B. 92 Bilder mit ~150'000 Punkten) so bläht sich die Normalgleichungsmatrize auf 505'200 * 505'200 auf.
Somit wollte ich fragen, ob jemand eine library empfehlen kann, die a) dünn besetzte Matrizen ausnutzen kann und b) die auch mit recht grossen Matrizen zurecht kommt.
b) ist insofern nicht ganz so schlimm - da ich im Notfall jeweils Bildtripletten ausgleichen und nachher mittels Transformation wieder aneinander ketten kann - es soll hier keine unglaublich genaue Ausgleichung sein - es dient lediglich der Approximation.
Bisher habe ich die GSL (Gnu Scientific Library) verwendet - die beherrscht aber keine dünn besetzten Matrizen (bzw. kann dies nicht speziell speichern), womit bei ~20'000 x 20'000 Matrizen Schluss ist.
Boost beherrscht dünn besetzte Matrizen, aber da ist, soweit ich das gesehen habe, bei 32'000x32'000 Schluss (auf 32-bit Systemen).
Intel's Math Kernel Library wäre auch verfügbar - habe ich bisher aber nicht genau angesehen, weil ich mit der Dokumentation nicht zurecht komme :( (Schon bei der IPP war das für mich ein Horror).
Ich habe hier folgende Ausgangslage:
Es sind min. 2 Bilder, und die korrespondierenden Bildmessungen vorhanden. Das Ziel ist, die sechs unbekannten Orientierungsparameter der Bilder (je: X, Y, Z, Omega, Phi, Kappa) sowie die 3D Koordinaten der Bildmessungen via vermittelnder Ausgleichung auszugleichen (das gute, alte A^T P A * x = * A^T P l ).
Nun kommt das Problem: Jedes Bild bringt 6 Unbekannte mit. Jeder Objektpunkt 3.
Das heisst, dass die Normalgleichungsmatrize bei 2 Bildern und 6'000 Objektpunkten, 18'012 * 18'012 gross ist - allerdings ist sie nicht voll, sondern nur dünn besetzt.
Geht man auf etwas grössere Systeme los (z.B. 92 Bilder mit ~150'000 Punkten) so bläht sich die Normalgleichungsmatrize auf 505'200 * 505'200 auf.
Somit wollte ich fragen, ob jemand eine library empfehlen kann, die a) dünn besetzte Matrizen ausnutzen kann und b) die auch mit recht grossen Matrizen zurecht kommt.
b) ist insofern nicht ganz so schlimm - da ich im Notfall jeweils Bildtripletten ausgleichen und nachher mittels Transformation wieder aneinander ketten kann - es soll hier keine unglaublich genaue Ausgleichung sein - es dient lediglich der Approximation.
Bisher habe ich die GSL (Gnu Scientific Library) verwendet - die beherrscht aber keine dünn besetzten Matrizen (bzw. kann dies nicht speziell speichern), womit bei ~20'000 x 20'000 Matrizen Schluss ist.
Boost beherrscht dünn besetzte Matrizen, aber da ist, soweit ich das gesehen habe, bei 32'000x32'000 Schluss (auf 32-bit Systemen).
Intel's Math Kernel Library wäre auch verfügbar - habe ich bisher aber nicht genau angesehen, weil ich mit der Dokumentation nicht zurecht komme :( (Schon bei der IPP war das für mich ein Horror).