add a few more nodes
Some checks failed
Build / Build (Linux) (push) Has been cancelled
Build / Build (macOS) (push) Has been cancelled
Build / Build (Windows) (push) Has been cancelled
Deploy / test (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Tests / test (push) Has been cancelled
Some checks failed
Build / Build (Linux) (push) Has been cancelled
Build / Build (macOS) (push) Has been cancelled
Build / Build (Windows) (push) Has been cancelled
Deploy / test (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Tests / test (push) Has been cancelled
This commit is contained in:
98
docs/missing_gwyddion_features.md
Normal file
98
docs/missing_gwyddion_features.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Missing Gwyddion Features
|
||||
|
||||
Gwyddion 2D image/surface processing features not yet implemented in tono. Excludes force curves, force volume, spectroscopy, volume data, XYZ data, graph operations, and file I/O.
|
||||
|
||||
## Leveling / Background Removal
|
||||
|
||||
- [x] **Arc Revolve** — Subtract cylindrical arc background fitted by revolving an arc under the data
|
||||
- [x] **Sphere Revolve** — Subtract spherical cap background
|
||||
- [x] **Unrotate** — Auto-detect and correct in-plane scan rotation by finding dominant feature directions
|
||||
- [x] **Level Rotate** — Level by physically rotating the data plane rather than subtracting a polynomial
|
||||
- [x] **Zero Mean Value** — Shift all values so the mean is exactly zero (pure offset, no plane fit)
|
||||
- [x] **Zero Maximum Value** — Shift all values so the maximum is exactly zero
|
||||
|
||||
## Filtering / Signal Processing
|
||||
|
||||
- [ ] **2D CWT** — Continuous Wavelet Transform for scale-space analysis
|
||||
- [ ] **XY Denoise** — Denoise by combining two orthogonal scans (forward/backward or horizontal/vertical)
|
||||
- [ ] **Rank Presentation** — Rank transform image for local contrast enhancement
|
||||
- [ ] **Radial Smoothing** — Smooth data in polar coordinates, averaging along radial or angular direction
|
||||
- [ ] **Convolve Two Images** — Convolve two separate data channels together
|
||||
|
||||
## Line Correction / Scan Artifacts
|
||||
|
||||
- [ ] **Step Block Correction** — Correct vertical step offsets between scan lines by block-matching
|
||||
- [ ] **Good Mean Profile** — Compute a high-quality average scan line from repeated scans
|
||||
- [ ] **Align Rows (extended methods)** — Modus and Gaussian-weighted row alignment beyond tono's current set
|
||||
|
||||
## Correction / Restoration
|
||||
|
||||
- [ ] **Fractal Correction** — Fill masked/bad pixels using fractal interpolation (alternative to Laplace)
|
||||
- [ ] **Correlation Averaging** — Average repeated similar structures using autocorrelation alignment
|
||||
- [ ] **Coerce** — Force data to match the histogram distribution of another dataset
|
||||
- [ ] **Periodic Translate** — Translate image data treating the field as periodic (wrap-around shift)
|
||||
- [ ] **Reorder** — Reorder pixel rows/columns (interleaved to sequential, reverse scan, etc.)
|
||||
|
||||
## Statistical Analysis
|
||||
|
||||
- [ ] **Transfer Function Fit** — Fit PSF from a known reference image and a measured blurred image
|
||||
- [ ] **Transfer Function Guess** — Estimate PSF from a single image without a reference
|
||||
- [ ] **Angle Distribution** — Distribution of surface normal angles (distinct from slope distribution)
|
||||
|
||||
## Grain Operations
|
||||
|
||||
- [ ] **Otsu Threshold** — Automated grain/mask threshold using Otsu's method
|
||||
- [ ] **Remove Edge-Touching Grains** — Remove all grains touching the image border from a mask
|
||||
- [ ] **Grain Selection Shapes** — Create geometric selections (bounding boxes, inscribed discs, etc.) from grain masks
|
||||
|
||||
## Mask Operations
|
||||
|
||||
- [ ] **Mask Thin** — Morphological thinning to single-pixel-wide skeletons
|
||||
- [ ] **Mask Distribute** — Copy/distribute a mask to multiple channels simultaneously
|
||||
- [ ] **Mark With** — Create or modify a mask using arithmetic conditions on other channels
|
||||
|
||||
## Basic Operations
|
||||
|
||||
- [ ] **Invert Value** — Flip heights (z to -z)
|
||||
- [ ] **Log Scale Presentation** — Log-scaled presentation layer without modifying source data
|
||||
- [ ] **Limit Range** — Clamp data values to a specified min/max range
|
||||
- [ ] **Square Samples** — Resample so pixels are physically square (equal x/y size)
|
||||
- [ ] **Null Offsets** — Zero out the lateral (XY) origin offsets
|
||||
|
||||
## SPM-Specific Modes
|
||||
|
||||
- [ ] **MFM Field Simulation** — Simulate magnetic stray field above perpendicular media
|
||||
- [ ] **MFM Parallel Media** — Simulate MFM signal for in-plane magnetic media
|
||||
- [ ] **MFM Lift Shift** — Simulate MFM signal change when lift height changes
|
||||
- [ ] **MFM Lift Estimate** — Estimate lift height difference from data blur
|
||||
- [ ] **MFM Force Gradient** — Convert MFM raw data to force gradient units
|
||||
- [ ] **SMM Apply Calibration** — Apply Scanning Microwave Microscopy calibration coefficients
|
||||
|
||||
## Synthetic Surface Generators
|
||||
|
||||
Tono has one generic Synthetic Surface node. Gwyddion has ~20+ specialized generators:
|
||||
|
||||
- [ ] **Fractional Brownian Motion** — fBm rough surfaces with controlled Hurst exponent
|
||||
- [ ] **Spectral Synthesis** — PSD-specified random rough surfaces
|
||||
- [ ] **Lattice** — Crystalline lattice surface with defects
|
||||
- [ ] **Objects** — Randomly placed 3D objects (spheres, pyramids, etc.)
|
||||
- [ ] **Patterns** — Geometric patterns (staircase, gratings, etc.)
|
||||
- [ ] **Waves** — Sinusoidal/wave patterns
|
||||
- [ ] **Noise** — Uncorrelated random noise with configurable distribution
|
||||
- [ ] **Line Noise** — Synthetic scan-line noise/steps/scars for testing
|
||||
- [ ] **Fibres** — Random fibre network surfaces
|
||||
- [ ] **Domain Walls** — Phase-separated domain structures
|
||||
- [ ] **Columnar Growth** — Columnar thin-film growth simulation
|
||||
- [ ] **Ball Deposition** — Random ballistic deposition growth
|
||||
- [ ] **Particle Deposition** — Dynamical particle deposition model
|
||||
- [ ] **Rod Deposition** — Rod-like particle deposition
|
||||
- [ ] **Diffusion** — Diffusion-limited aggregation surfaces
|
||||
- [ ] **Discs** — Random overlapping disc surfaces
|
||||
- [ ] **CPDE / Turing** — Reaction-diffusion / Turing pattern surfaces
|
||||
- [ ] **Sand Dunes** — Aeolian sand transport simulation
|
||||
- [ ] **Annealing Lattice Gas** — Annealed lattice-gas model textures
|
||||
- [ ] **Phase Separation** — Spinodal decomposition textures
|
||||
- [ ] **Pileup** — Piled-up ellipsoids or bars
|
||||
- [ ] **Plateaus** — Stacked random plateau/terrace structures
|
||||
- [ ] **Film Residue** — Residue left after simulated film removal
|
||||
- [ ] **Wetting Front** — Propagating wetting front simulation
|
||||
29
docs/nodes/Arc Revolve.md
Normal file
29
docs/nodes/Arc Revolve.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Arc Revolve
|
||||
|
||||
Subtract a cylindrical arc background. A circular arc of the given radius is rolled under each row (or column), and the envelope it traces is subtracted as the background.
|
||||
|
||||
## Inputs
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| field | DATA_FIELD | Yes | Input field |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| leveled | DATA_FIELD | Field with arc background subtracted |
|
||||
| background | DATA_FIELD | The estimated arc background |
|
||||
|
||||
## Controls
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|------|------|---------|-------------|
|
||||
| radius | INT | 20 | Arc radius in pixels (1–1000) |
|
||||
| direction | dropdown | horizontal | Direction to apply the arc: horizontal, vertical, or both |
|
||||
|
||||
## Notes
|
||||
|
||||
- Larger radii produce smoother backgrounds that follow gentle curvature. Smaller radii track finer features.
|
||||
- The "both" direction takes the minimum of horizontal and vertical backgrounds.
|
||||
- Deep outliers are suppressed before fitting so that scratches or pits do not pull the arc down.
|
||||
21
docs/nodes/Level Rotate.md
Normal file
21
docs/nodes/Level Rotate.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Level Rotate
|
||||
|
||||
Level by physically rotating the data plane. Fits a best-fit plane, converts its slopes to tilt angles, then rotates the surface by those angles using interpolation rather than algebraic subtraction.
|
||||
|
||||
## Inputs
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| field | DATA_FIELD | Yes | Input field to level |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| leveled | DATA_FIELD | Field with tilt removed by rotation |
|
||||
|
||||
## Notes
|
||||
|
||||
- Unlike Plane Level (which subtracts a fitted plane), this node rotates the 3D surface to make it horizontal. The distinction matters for steep tilts where subtraction introduces distortion.
|
||||
- Uses bilinear interpolation to resample rotated z-values.
|
||||
- Edges are handled with nearest-neighbor extension.
|
||||
28
docs/nodes/Sphere Revolve.md
Normal file
28
docs/nodes/Sphere Revolve.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Sphere Revolve
|
||||
|
||||
Subtract a spherical cap background. A sphere of the given radius is rolled under the surface, and the envelope it traces is subtracted as the background.
|
||||
|
||||
## Inputs
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| field | DATA_FIELD | Yes | Input field |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| leveled | DATA_FIELD | Field with spherical background subtracted |
|
||||
| background | DATA_FIELD | The estimated spherical background |
|
||||
|
||||
## Controls
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|------|------|---------|-------------|
|
||||
| radius | INT | 20 | Sphere radius in pixels (1–500) |
|
||||
|
||||
## Notes
|
||||
|
||||
- Works like Arc Revolve but in two dimensions — suitable for bowl-shaped or dome-shaped backgrounds.
|
||||
- Larger radii produce smoother backgrounds. Very small radii will track individual features.
|
||||
- Deep outliers are suppressed before fitting.
|
||||
28
docs/nodes/Unrotate.md
Normal file
28
docs/nodes/Unrotate.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Unrotate
|
||||
|
||||
Auto-detect and correct in-plane scan rotation. Computes a slope angle histogram, finds the dominant feature direction for the given symmetry, and rotates the image to align features with the axes.
|
||||
|
||||
## Inputs
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| field | DATA_FIELD | Yes | Input field to correct |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| leveled | DATA_FIELD | Field with rotation corrected |
|
||||
|
||||
## Controls
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|------|------|---------|-------------|
|
||||
| symmetry | dropdown | 4-fold | Expected symmetry of the surface features: 2-fold, 3-fold, 4-fold, or 6-fold |
|
||||
|
||||
## Notes
|
||||
|
||||
- Best suited for crystalline or patterned surfaces where features have a clear preferred direction.
|
||||
- 4-fold symmetry is the most common choice for cubic crystal surfaces and rectangular gratings.
|
||||
- If the detected rotation is less than 0.01°, the data is returned unchanged.
|
||||
- Uses bilinear interpolation; edges are handled with nearest-neighbor extension.
|
||||
20
docs/nodes/Zero Maximum.md
Normal file
20
docs/nodes/Zero Maximum.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Zero Maximum
|
||||
|
||||
Shift all values so the maximum is exactly zero. All resulting values will be zero or negative.
|
||||
|
||||
## Inputs
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| field | DATA_FIELD | Yes | Input field to level |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| leveled | DATA_FIELD | Field with maximum subtracted |
|
||||
|
||||
## Notes
|
||||
|
||||
- Equivalent to subtracting the global maximum from every pixel.
|
||||
- Useful when the highest point should represent the zero reference.
|
||||
20
docs/nodes/Zero Mean.md
Normal file
20
docs/nodes/Zero Mean.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Zero Mean
|
||||
|
||||
Shift all values so the mean is exactly zero. A pure offset subtraction — no plane fit or polynomial involved.
|
||||
|
||||
## Inputs
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| field | DATA_FIELD | Yes | Input field to level |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| leveled | DATA_FIELD | Field with mean subtracted |
|
||||
|
||||
## Notes
|
||||
|
||||
- Equivalent to subtracting a constant (the mean) from every pixel.
|
||||
- Does not change relative height differences — only shifts the overall offset.
|
||||
Reference in New Issue
Block a user