next up previous contents
Next: STM-HOWTO (Quantum-Pott) Up: Gxsm and Xxsm User/Referenz Previous: Tools   Contents

Subsections


Bildbearbeitung


Menu Edit

Copy legt eine Kopie des "`Active-Channel"' an.

Crop schneidet aus dem "`Active-Channel"' ein Rechteck oder einen Kreis, je nach Selektion, aus und erzeugt damit einen neuen Channel. Bei Kreis-Crop wird der Bereicht ausserhalb des Kreises mit dem Background Value = [RadiusField] gefüllt.


Untergrund entfernen: Math/Background

In diesem Abschnitt werden Filterfunktionen zum entfernen von diversen "`Untergrundabarten"' beschrieben. Alle Filter dieser Gruppe sind über den Background-Dialog zugänglich.

Zusätzlich können hier mathematische Operationen mit zwei Scans durchgeführt werden. Z.B. kann der "`Active-Channel"' mit "`X-Channel"' addiert, subtrahiert, multipilziert oder dividiert werden.

Linear Regression 1D

Diese Funktion dient zum entfernen eines geneigten Untergrundes und von Sprüngen zwischen den einzelnen Scanzeilen. Der Filter ist in der Funktion BgLin1DScan() in xsmmath.C implementiert.

BgLin1DScan() zieht von jeder Scanzeile eine Gerade ab, die durch Regression ermittelt wird. Dazu wird der automatische Geradenabzug aus den Darstellungsroutinen verwendet.

Parabolic 1D

Dieser Untergrundabzug dient zum entfernen eines gekrümmten Untergrundes, wie er z.B. bei großen Scanbereichen durch Nichtlinearitäten der Scanpiezos entsteht. Der Filter ist in der Funktion BgPoly2nd1D() in xsmmath.C implementiert.

BgPoly2nd1D() fittet an jede Scanzeile eine Parabel an, die dann von den Daten abgezogen wird. Evtl. Krümmungen senkrecht zur Scanrichtung werden durch den Zeile für Zeile unterschiedlichen Offset der Parabel ebenfalls entfernt.

E Regression

Abzug einer Ausgleichsebene, nur der mit einem Rechteck markierte Bereich dient als Referenz.

Z Drift corr.

Es wird eine Zeilenweise Z-Drift Korrektur ausgeführt. Dafür kann ein X-Intervall (aus rechteckiger Markierung) als Referenz verwendet. In diesen X-Intervall werden alle Z-Werte gemittelt und durch die gewonnene Z(y)-Kurve ein Least-Square-Polynomfit N-ten Grades (bisher Eingabe der Ordnung im Terminal) durchgeführt. Die Ausgleichsfunktion wird zur Zeilenweisen Z-Korrektur verwendet.

Math/Filter 1D

In diesem Abschnitt werden die 1D Filterfunktionen beschrieben. Diese Funktionen werden Zeile für Zeile auf die daten angewandt und berücksichtigen damit keinerlei Korrelationen zwischen den Scanzeilen. Alle 1D Filter sind über den 1D Filter-Dialog zugänglich.

Invert

Dieser Filter invertiert die Daten, d.h. er führt die Konversion $z
\rightarrow -z$ durch.

Phase FFT

Der Name trügt, es verbirgt sich ein Tool um benachbarte Spalten miteinander zu vertauschen - dies ist nur eine Bug-Fix für .dat Dateien vor dem 15.7.1998 die mit xxsm und quantum gescannt wurden !

Aufruf von ColSwp()

Powerspectrum (log PowerSpec)

Diese Funktion berechnet von jeder Zeile das Powerspektrum (Betragsquadrat der Fouriertransformation) und stellt es dann in logarithmischer Skalierung dar. Das Berechnen des Powerspektrums ist in der Funktion F1D_LogPowerSpec in xsmmath.C implementiert. Mit dem entsprechenden 2D Filter kann das Ganze auch in zwei Dimensionen durchgeführt werden.

Lowpass

Führt eine Gauss-Faltung auf jede Zeile aus. Die Breite ist in Pixeln vorwählbar.

Lin. Stat. Diff

Kantenherforhebung durch Differentaion nach folgender Formel: [*]


\begin{displaymath}I_i = \frac{1}{9}\sum_{k=i-4}^{i+4}s_k \end{displaymath}


\begin{displaymath}t_i = \frac{1}{4}\frac{s_i - I_i }
{\sqrt{\frac{1}{2}\sum_{k=i-4}^{i+4}\left(s_k-I_k\right)^2}}
+ \frac{I_i}{2}
\end{displaymath}

Koehler


\begin{displaymath}L_i = 0.92 s_{i-1} + 0.08 s_i \end{displaymath}


\begin{displaymath}R_i = 0.92 L_{i+1} + 0.08 L_i \end{displaymath}


\begin{displaymath}t_i = s_i - R_i \end{displaymath}

Math/Filter 2D

Im folgenden werden die 2D Filter beschrieben. Alle 2D Filter sind über den 2D Filter-Dialog zugänglich.

Despike

Herausfiltern von Spikesartigen Störungen. Funktioniert sehr effektiv ! Filter arbeitet Spaltenweise - d.h. senkrecht zur Scanrichtung. Algorithmus: siehe F1D_Despike() in xsmmath.C - wer mag kann sich das ja ansehen, die Korrektur wird irgendwie aus der lokalen n-fachen Ableitung gewonnen ...!

3x3 Convolution

Dieser Filter führt eine diskrete Faltung der Daten mit einer 3x3 Matrix durch. Die einzelnen Matrixelemente können in einem Dialogfenster angegeben werden. Der Filter ist über die Klasse F2D_Conv3x3 und die Funktion F2D_Conv3x3_FD() in xsmmath.C implementiert. Die Klasse F2D_Conv3x3 ist in xsmmath.h definiert.

Die eigentliche Faltung wird durch folgende Rechnung durchgeführt:

\begin{displaymath}
z'(n,m) = \sum_{-1 \le i \le 1} \sum_{-1 \le j \le 1} z(n+i,m+j)
\cdot K_{i j}
\mbox{,}
\end{displaymath}

wobei durch $K_{ij}$ die Elemente der 3x3 Matrix des Faltungskerns beschrieben werden und $z$ bzw. $z'$ für die Daten vor und nach der Filterung stehen. Um Randeffekte zu vermeiden, werden bei der Faltung die erste und letzte Scanzeile und die erste und letzte Spalte abgeschnitten.


logarithmisches Powerspektrum

Berechnet das Powerspektrum, d.h. das Betragsquadrat der Fouriertransformierten, des Scans. Das Powerspektrum wird in logarithmischer Skalierung dargestellt, damit man die Details besser erkennen kann. Die Darstellung erfolgt so, daß die Raumfrequenz (0,0) in der Bildmitte dargestellt wird. Dieser Filter ist in F2D_PowerSpec() in xsmmath.C implementiert.

Allgemeiner Fourierfilter (IFT(X*FT()))

Diese Funktion erlaubt es, beliebige Teile aus der Fouriertransformierten eines Scans zu entfernen. Dazu muß zunächst das Powerspektrum (s. 13.4.3) des Scans berechnet werden (s.o.). Danach kann ein Bereich des Powerspektrums mit Hilfe der Bearbeitungstools ausgewählt werden. Dieser Bereich kann dann mit Hilfe des ``Stop''-Buttons im Background Menü entfernt (auf ZEROVALUE gesetzt) werden. Alternativ dazu kann mit dem ``Pass''-Button auch alles außerhalb des gewählten Bereiches gelöscht werden. Der so bearbeitete Scan sollte auf Kanal X gesetzt werden (Channel Selector). Die Funktion IFT(X*FT()) berechnet dann die Fouriertransformierte des aktiven Scans, schneidet alle Bereiche heraus, die im Scan X auf ZEROVALUE gesetzt wurden, und transformiert das so modifizierte Forierspektrum zurück. Damit steht ein im Fourierraum arbeitender Filter zur Verfügung, der in der Funktion F2D_iftxft() in xsmmath.C implementiert ist.


Gauß-Stop und Gauß-Pass Fourierfilter

Die Funktionen ``FT Gauss Stop'' und ``FT Gauss Pass'' funktionieren ähnlich wie der ``IFT(X*FT())'' Filter. Sie sind in F2D_FT_GaussStop und F2D_FT_GaussPass in xsmmath.C implementiert. Bei Ihnen wird das Fourierspektrum des aktiven Scans mit der Funktion $exp(-(r-r_0)^2/R^2)$ (Gauss Pass) bzw. $1 -
exp(-(r-r_0)^2/R^2)$ (Gauss Stop) multipliziert und anschließend zurücktransformiert. Die Halbwertsbreite und Mittenposition der Gaußfunktionen muß vor Aufruf der Funktionen ausgewählt werden. Dazu sollte zuerst mit der ``lg PowerSpec'' Funktion das Powerspektrum des Scans berechnet werden. Anschließend kann mit Hilfe des Kreis-Tools die Mittenposition und die Halbwertsbreite der Gaußfkt. markiert werden. Der Radius des Kreises entspricht dann dem $R$ in den obigen Definitionen. Dem Kanal mit dem Powerspektrum sollte danach der Name X zugeordnet werden (mit dem Channel Selector) und der Kanal mit dem Ausgangsscan wieder aktiviert werden. Jetzt muß nur noch der gewünschte Fourierfilter ausgeführt werden.

allgemeine 2D Convolution mit speziellen Kernels

Alle Convolutionsfilter Falten das Bild mittels einer Kernelmatrix der Mindestgröße $2R+1$. Die Mindestgröße wird ggf. automatisch soweit vergrößert, bis Matrixelemente ungleich Null entstehen.

Der allgemeine Convolutionsalgorithmus ist in mem2d.C: MemDigiFilter::Convolve : public Mem2d untergebracht. Die Kernels selbst sind abgeleitete Objekte von MemDigiFilter und stellen die ehemals rein virtuelle Funktion CalcKernel() bereit. Die Filter werden in xsmmath.C ausgeführt, d.h. der entsprechende Kernel wird erzeugt und dann auf die Quelle Src$->$mem2d angewendet und das Resultat im Ziel Dest$->$mem2d abgelegt. Siehe z.B. F2D_Smooth() in xsmmath.C.

Die 2-D Convolutionskernel stammen noch aus alten Zeiten, d.h. pmstm - fancyfil.c von L.Anderson bzw. seinem Vorgänger ...Wer mag soll sich die aktuellen Kernel in mem2d.C genauer ansehen !

Kernel Smooth

Es wird eine Matrix mit einer Gauß Funktion erzeugt: Tiefpaß


\begin{displaymath}K_{ij} = 4*e^{-\frac{i^2+j^2}{r^2}} \end{displaymath}

Kernfkt: MemSmoothKrn()


Kernel Stat. Diff.

Berechnet im wesentlichen die Ableitung in Scanrichtung. Dies geschieht durch die Faltung mit der folgenden Fkt. (in MemDeriveXKrn::CalcKernel() in mem2d.C implementiert):

\begin{displaymath}
K_{ij} = C \cdot j \cdot e^{ - \frac{i^2}{r_y} - \frac{j^2}{r_x}}
\end{displaymath} (1)

Kernel Tderive

1-d second derivative, curvature ? [Tderiv_kernel]

Kernfkt: MemTderiveKrn()

Kernel Local Heigth

Es wird ein lokaler Hintergrundabzug vorgenommen. Die Größe der betrachteten Umgebung ist R. Also eine Art Hochpassfilter.

Kernfkt: MemLclhtKrn()

Kernel Curvature

use curvature (second derivative) as height [lderiv_kernel]

Kernfkt: MemCurvatureKrn()

Math/Transformationen

Rotate (PlugIn)

Needs Rectangle Selection.

Affine (PlugIn)

Needs Koord Obj.

Shear X bzw Y (PlugIn)

Quench Scan

Halbiert Scangröße mittels Zusammenfassung von je 2x2 Pixeln (Mittelwert).

Scale Scan

Scan beliebig in X bzw. Y skalieren.

Mirror X, Mirror Y und diagonal

Spiegelung des Bildes um die x-/ y-Achse bzw. Diagonale.

Add, Sub, Mul, Div X

Math Ops using Active- and X-Channel ...

Merge H, V

Zusammensetzen von Scans in horizontaler bzw. vertikaler Richtung.

Math/Statistik

Histogramm

Scan Höhenverteilung bestimmen, Resultat erscheint in neuem Math Kanal, zur Ansicht View-Mode auf ``Profile 1D'' stellen!

HistoHOP: Auswertung von Stufenfolgen

Der histoHOP Filter dient zur Vorbereitung der Auswertung von Stufenhöhen und Terrassenlängen. Der Filter sucht Zeile für Zeile Stufen und berechnet die Länge und Höhe der dazugehörigen Facette sowie die Länge der anschließenden Terrasse. Dieser Filter wurde von Holger Pietsch entwickelt[*]. Der Filter ist in xsmmath.C über die Klasse F2D_HistoHOP implementiert.

Die Detektion der Stufen geschieht durch eine Faltung mit der Funktion

\begin{displaymath}
K_{ij} = C \cdot j \cdot e^{ - \frac{i^2}{r_y} - \frac{j^2}{r_x}}
\end{displaymath} (2)

(s.a. 13.4.6, Stat. Diff. Kernel Faltung). Nach der Faltung werden alle Bereiche, die den Schwellwert threshold überschreiten als Facetten, die anderen als Terrassen behandelt. Wenn die Filteroption ``step detect only'' gewählt ist, wird ein binäres Bild erzeugt, in dem dei Facettenbereiche den Wert 1 und die Terrassenbereiche den Wert 0 haben.

Durch den oben beschriebenen Filterprozeß kann das Bild in eine Folge von Stufenhöhen-Terrassenlängen Daten zerlegt werden. Der Zerlegungsprozeß wird durchgeführt, wenn die ``step detect only'' Option nicht ausgewählt ist. Die Daten geben jeweils die Länge und Höhe einer Facette sowie die Länge und Höhe der darauffolgenden Terrasse an. Aus diesen Daten wird das ursprüngliche Bild ``rekonstruiert''. Durch den Vergleich des Originals mir der Rekonstruktion kann die Qualität der Filterung abgeschätzt werden.

Der Filter an sich bietet keine weiteren Möglichkeiten zur Auswertung der Daten, speichert diese jedoch in einer Datei im ASCII-Format ab. Diese Daten können dann mit externen Programmen ausgewertet werden. Dazu stehen einige kleine Perl-Skripte zur Verfügung:

Table 13.1: Perl-Skripte zur Auswertung der mit dem HistoHOP Filter erzeugten Daten
Skript Beschreibung
filterhig.pl Filtert Stufen deren Höhe unter $h$ liegt heraus.
stepheightavg.pl Berechnet die mittlere Stufenhöhe.
stepheighthist.pl Erstellt ein Stufenhöhenhistogramm.
terlenavg.pl Berechnet die mittlere Terrassenlänge.
terlenhist.pl Erstellt ein Terrassenlängenhistogramm.


Math/Baseinfo

Das Plugin Baseinfo berechnet einige oft gebrauchte Scanparameter. Es muß ein Rechteck oder nichts markiert sein.

Berechnet werden:

Bei der Begutachtung von $\sigma$ ist auf ein gutmütiges Verhalten des Mittelwertes zu achten. Auf der Standardausgabe werden die ermittelten Werte ausgegeben, um ein Markieren mit der Maus zu ermöglichen. Der Pixelmode ist z.Z. nicht implementiert.

Math/Step counter

Dieses Plugin zählt die Anzahl der Stufen, die größer als 256 a.u. sind. An jedem Ort $(x,y)$ wird der $z$-Wert mit dem rechten Nachbarn verglichen. Falls Differenz größer 256, wird dies als Aufwärts-, bzw. Abwärtsstufe gezählt. Das Ergebnis landet auf der Konsole.

Math/Misc

Diverses...

Hinzufügen von Math Ops

Neue Math Operationen können via PlugIns auf sehr einfache Weise hinzugefügt werden. Siehe Abschnitt PlugIns im Hacking-Kapitel [*]!


next up previous contents
Next: STM-HOWTO (Quantum-Pott) Up: Gxsm and Xxsm User/Referenz Previous: Tools   Contents
Percy Zahl 2002-05-08