View - JUWEL - Forschungszentrum Jülich
View - JUWEL - Forschungszentrum Jülich
View - JUWEL - Forschungszentrum Jülich
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
50 3 Praktische Aspekte<br />
jeden Stapel einzeln vorgenommen werden.<br />
Zusätzlich zur Speicherung der Serien von zweidimensionalen Bildern wird jeder Stapel als<br />
dreidimensionales Metafile abgespeichert. Dieses Bildformat besteht aus einer Headerdatei<br />
mit der Endung .mhd und einer Binärdatei der Endung .raw.<br />
Während des Registrierungsprozesses werden die optimalen Transformationsparameter in<br />
der Klasse TransformationParameterList gespeichert. Diese Klasse speichert für<br />
jedes zweidimensionale Bild einzeln die jeweiligen Transformationsparameter Rotationswinkel,<br />
Koordinaten des Rotationszentrums und Translation in x- und y-Richtung ab. Zusätzlich<br />
wird zur weiteren Information der Metrikwert und die Anzahl der Iterationen, die der Optimierungsprozess<br />
bis zur Konvergenz benötigt, gespeichert. Diese Informationen werden in<br />
einer Textdatei in Tabellenform für jeden Datenstapel und für jede durchzuführende Registrierungsart<br />
gespeichert.<br />
Die Transformationsparameter können durch ein weiteres zur Verfügung stehendes Programm<br />
auf die einzelnen Bilder oder die gesamten Bildstapel angewandt werden. So können<br />
im Registrierungsprozess geglättete Bilddaten verarbeitet werden, die Transformationsparameter<br />
aber auf Originaldaten angewandt werden.<br />
3.5.7 Fehler- und Informationsausgabe<br />
Die Fehler- und Informationsausgabe ist in die Registrierungsanwendung eingebunden. Zur<br />
Implementierung wurde das C++ Designmuster Singleton genutzt. Ein Singleton wird dazu<br />
verwendet, sicherzustellen, dass eine Klasse nur eine Instanz hat und dass ein globaler Zugriff<br />
auf diese eine Instanz in der gesamten Registrierungsanwendung möglich ist. Die Anwendungsbeispiele<br />
für ein Singleton sind vielseitig. Ein Singleton findet immer dann Einsatz,<br />
wenn für eine Applikation einzigartige Objekte modelliert werden sollen. Die Einzigartigkeit<br />
wird durch den vom Singleton-Pattern beschriebenden Typen garantiert. Dieser instanziiert<br />
sich selbst, bietet anderen Objekten jedoch keine Möglichkeit, weitere Instanzen zu erzeugen.<br />
Dieses Konzept des Singleton ist für die Fehler- und Informationsausgabe anwendbar. Die<br />
Registrierungsapplikation benötigt nur eine Instanz, die die Ausgabe von Fehlermeldungen<br />
und Informationen steuert.<br />
Die Ausgabe der Informationsmenge kann durch den Nutzer der Registrierungsanwendung<br />
gesteuert werden. Dazu wird in der Konfigurationsdatei eine Variable je nach Ausgabemodus<br />
gesetzt. Sollen wenig Informationen ausgegeben werden, wird der Modus brief gewählt. Für<br />
eine Ausgabe von vielen Informationen wird der Modus debug gewählt. Eine mäßige Ausgabe<br />
der Informationen erzeugt der Modus verbose. Das Singleton ist so implementiert, dass<br />
in jedem Ausgabemodus die jeweils gewünschte Informationsmenge ausgegeben wird.