ScanSlicer/docs/parameters.md

91 lines
4 KiB
Markdown

# Parameter Reference
This page documents the detection parameters defined in `scanslicer/params.py` (`AutoslicerParams.SPECS`).
## Notes
- All values are integer-backed.
- Some parameters are context-sensitive and only apply to specific detection modes.
- Internal safeguards:
- `aspect_ratio_max` is clamped to be `>= aspect_ratio_min`
- `canny_high` is clamped to be `>= canny_low`
## Choice Parameters
- `detect_pipeline`
- `0`: Threshold pipeline
- `1`: Canny pipeline
- `bw_method` (threshold pipeline only)
- `0`: Simple threshold
- `1`: Adaptive Gaussian threshold
- `2`: Otsu threshold
- `invert_mode`
- `0`: Auto (try normal polarity, then inverted fallback)
- `1`: Off (normal polarity only)
- `2`: On (force inverted polarity)
- `morph_op`
- `0`: None
- `1`: Dilate
- `2`: Erode
- `3`: Open
- `4`: Close
## Full Table
| Parameter | Default | Range | Step | Used In | Effect |
|---|---:|---|---:|---|---|
| `detect_pipeline` | `0` | `0..1` | `1` | global | Select threshold or Canny detection pipeline. |
| `clahe_clip` | `0` | `0..40` | `1` | preprocessing | CLAHE contrast boost (`0` disables). Effective clip limit is `value/10`. |
| `gaussian` | `0` | `0..100` | `1` | preprocessing | Gaussian blur kernel size (`0` disables). Even values are bumped to odd. |
| `bw_method` | `0` | `0..2` | `1` | threshold pipeline | Selects Simple, Adaptive Gaussian, or Otsu thresholding. |
| `bw_thresh` | `210` | `0..255` | `5` | threshold+simple | Binary threshold cutoff. |
| `bw_gauss` | `64` | `0..1000` | `2` | threshold+adaptive | Adaptive block size basis. Converted to odd and at least `3`. |
| `bw_adaptive_c` | `2` | `-20..20` | `1` | threshold+adaptive | Adaptive threshold subtraction constant. |
| `canny_low` | `50` | `0..255` | `5` | Canny pipeline | Lower Canny hysteresis threshold. |
| `canny_high` | `150` | `0..255` | `5` | Canny pipeline | Upper Canny hysteresis threshold. |
| `invert_mode` | `0` | `0..2` | `1` | global | Controls polarity inversion behavior before contour extraction. |
| `morph_op` | `1` | `0..4` | `1` | global | Morphological operation on mask/edges. |
| `contour_approx_pct` | `0` | `0..50` | `1` | contour extraction | Polygon approximation epsilon percentage (`value/1000`). |
| `bbox_min_size` | `2` | `0..100` | `1` | contour filtering | Minimum candidate area as % of full image area. |
| `bbox_max_size` | `90` | `1..100` | `1` | contour filtering | Maximum candidate area as % of full image area. |
| `bbox_fill_thresh` | `10` | `0..100` | `1` | contour filtering | Minimum contour fill ratio within min-area box (%). |
| `expected_count` | `0` | `0..20` | `1` | scoring/autotune | Expected number of photos (`0` means auto/unbounded heuristics). |
| `aspect_ratio_min` | `100` | `100..1000` | `5` | contour filtering | Minimum long/short aspect ratio, scaled by `x100`. |
| `aspect_ratio_max` | `400` | `100..1000` | `5` | contour filtering | Maximum long/short aspect ratio, scaled by `x100`. |
| `border_ignore` | `0` | `0..20` | `1` | contour filtering | Ignore candidates touching image edges within this margin (%). |
| `iou_merge_thresh` | `30` | `0..100` | `1` | contour dedup | Merge overlap threshold as IoU percentage. |
| `dilate_kernel` | `30` | `0..500` | `1` | morphology | Morph kernel size for selected morph operation (`0` disables morphology). |
## Advanced Parameters in UI
The UI can hide/show advanced controls. Advanced set:
- `detect_pipeline`
- `clahe_clip`
- `gaussian`
- `bw_adaptive_c`
- `invert_mode`
- `contour_approx_pct`
- `bbox_max_size`
- `aspect_ratio_min`
- `aspect_ratio_max`
- `border_ignore`
- `iou_merge_thresh`
## Practical Tuning Guidance
- Too many tiny false positives:
- Increase `bbox_min_size`
- Increase `bbox_fill_thresh`
- Increase `iou_merge_thresh`
- Missed photos:
- Lower `bbox_min_size`
- Broaden `aspect_ratio_min/max`
- Try `detect_pipeline=1` (Canny)
- Try `invert_mode=2`
- Border/frame artifacts:
- Increase `border_ignore`
- Switch morphology operation/kernel
- Uneven illumination:
- Use adaptive mode (`bw_method=1`)
- Enable modest `clahe_clip`