Repository navigation
Releases: happyRip/Frame-Detection
Releases · happyRip/Frame-Detection
Release list
v0.0.11
Added
- Automatic rotation detection from frame edges and sprocket holes
- Sprocket-based rotation (preferred): extracts angle from polynomial-fitted sprocket boundary slopes
- Edge-based rotation (fallback): calculates angle from detected frame edge lines when ≥3 edges agree
- CLI flags:
--no-rotation,--no-sprocket-rotation,--max-rotation(default: 5°)
- Rotation settings in Lightroom plugin Crop tab
- Auto-rotation checkbox (enabled by default)
- Sprocket rotation checkbox (use sprocket holes for more reliable detection)
- Max rotation field (0.5-15°)
- Keystone (perspective distortion) detection
- Detects when film wasn't flat during scanning causing trapezoidal distortion
- Combined detection using both methods for complete coverage:
- Sprocket-based: measures convergence from sprocket boundary distances (one axis)
- Edge-based: measures convergence from frame edge angles (both axes)
- CLI flags:
--keystoneoutputs vertical and horizontal perspective correction values--keystone-sourceselects detection method:combined(default),sprockets, oredges
- Lightroom plugin:
- Separate "Keystone Detection" section in Film tab
- Source dropdown to select detection method
- Results dialog shows relative adjustment values (add/subtract from current settings)
- Values rounded to integers for Lightroom compatibility
- Debug visualization shows both detection methods side-by-side
Fixed
- Outlier regions from film base variance detection (e.g., light leaks) are now masked out during edge detection instead of being added as false edge hints
v0.0.10
Added
- Adaptive tolerance based on film base color variance using IQR (interquartile range)
- Tolerance automatically adjusts based on film base consistency
- Configurable min/max range via
--adaptive-min(default: 10) and--adaptive-max(default: 30) - Lower variance film bases get tighter tolerance for cleaner masks
- Gradient tolerance option (
--gradient-tolerance)- Tolerance is 0 at image center and increases to max at edges
- Helps prevent false matches in the frame area
- Adaptive tolerance controls in Filters > Film Base tab
- Min/Max sliders for adaptive tolerance range
- Gradient tolerance checkbox
Fixed
- Preview now resets crop before generating when "Reset crop" setting is enabled
- Plugin filter config values no longer overwritten by CLI defaults
v0.0.9
Added
- New
--sprocket-typeCLI option to control sprocket hole detection separately from film type:none- skip sprocket detection (medium format, pre-cropped images)bright- expect bright sprocket holesdark- expect dark sprocket holesauto- auto-detect (default)
- Plugin: New "Sprocket type" setting in Film tab
Fixed
- Plugin: Auto Crop button now correctly uses custom command path setting
v0.0.8
Changed
- Reorganized plugin settings dialog: new "Film" tab as first tab with film type and auto crop buttons, "Crop" tab now contains only crop-related settings
- Moved "Restore Defaults" button to bottom left of main dialog window
- Navigation buttons disabled when single photo selected
v0.0.7
Added
- JSON-based filter configuration via
--filter-configCLI argument - FilterConfig dataclasses for structured parameter management
- Configurable parameters for all edge detection filters:
- Canny: low/high thresholds
- Sobel/Scharr/Laplacian: blur size
- DoG: sigma1/sigma2
- LoG: sigma
- Configurable parameters for all separation methods:
- All methods: tolerance
- CLAHE: clip limit, tile size
- Adaptive: block size
- Gradient: gradient weight
- New "Filters" tab in Lightroom plugin dialog with:
- Film Base and Edge Detection subtabs
- Edge filter selection and parameter tuning
- Separation method selection and parameter tuning
- Reset buttons (↺) next to parameter labels to restore defaults
- Single dynamic preview button that switches between "Preview Film Base" and "Preview Edges" based on selected subtab
- Preview backup flow with
.bakrotation for preview temp directories --preview-modeCLI argument for minimal preview generation:separation: generates only film base mask visualizationedges: generates only edge detection visualization
Fixed
- Renamed JSON.lua to JsonEncoder.lua to avoid Lightroom reserved name conflict
v0.0.6
Changed
- CLI now requires explicit
detectsubcommand for frame detection
v0.0.4
Fixed
- CLI no longer requires OpenCV for
install/uninstallcommands (lazy imports)
Added
- Auto-discovery of
negative-auto-cropcommand from Homebrew locations - Configurable command path in plugin Debug settings
v0.0.3
Changed
- Installation method changed to Homebrew distribution
- CLI tool and Lightroom plugin now installed separately
- Keyboard shortcuts managed via
negative-auto-crop install/uninstall shortcuts
Removed
- Bundled Python environment in plugin (now uses system command)
Migration
If upgrading from a previous version, uninstall first:
negative-auto-crop uninstallSee homebrew-negative-auto-crop for installation instructions.
v0.0.2
v0.0.1
Full Changelog: https://github.com/happyRip/Frame-Detection/commits/v0.0.1