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.
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.
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.
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.
Abzug einer Ausgleichsebene, nur der mit einem Rechteck markierte Bereich dient als Referenz.
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.
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.
Dieser Filter invertiert die Daten, d.h. er führt die Konversion
durch.
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()
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.
Im folgenden werden die 2D Filter beschrieben. Alle 2D Filter sind über den 2D Filter-Dialog zugänglich.
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:
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.
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.
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
(Gauss Pass) bzw.
(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
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.
Alle Convolutionsfilter Falten das Bild mittels einer Kernelmatrix der
Mindestgröße . 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 Srcmem2d 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 !
Kernfkt: MemSmoothKrn()
Berechnet im wesentlichen die Ableitung in Scanrichtung. Dies
geschieht durch die Faltung mit der folgenden Fkt. (in
MemDeriveXKrn::CalcKernel() in mem2d.C implementiert):
Kernfkt: MemTderiveKrn()
Kernfkt: MemLclhtKrn()
Kernfkt: MemCurvatureKrn()
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
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:
Das Plugin Baseinfo berechnet einige oft gebrauchte Scanparameter. Es muß ein Rechteck oder nichts markiert sein.
Berechnet werden: