shinestacker 1.2.1__tar.gz → 1.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of shinestacker might be problematic. Click here for more details.
- {shinestacker-1.2.1 → shinestacker-1.3.1}/CHANGELOG.md +41 -1
- {shinestacker-1.2.1/src/shinestacker.egg-info → shinestacker-1.3.1}/PKG-INFO +6 -6
- {shinestacker-1.2.1 → shinestacker-1.3.1}/README.md +4 -5
- {shinestacker-1.2.1 → shinestacker-1.3.1}/THIRD_PARTY_LICENSES.txt +6 -13
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/alignment.md +15 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/focus_stacking.md +1 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/job.md +2 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/main.md +1 -1
- shinestacker-1.3.1/index.html +47 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/pyproject.toml +1 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/requirements.txt +1 -0
- shinestacker-1.3.1/src/shinestacker/_version.py +1 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/align.py +152 -112
- shinestacker-1.3.1/src/shinestacker/algorithms/align_auto.py +76 -0
- shinestacker-1.3.1/src/shinestacker/algorithms/align_parallel.py +336 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/balance.py +3 -1
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/base_stack_algo.py +25 -22
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/depth_map.py +9 -14
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/multilayer.py +8 -8
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/noise_detection.py +10 -10
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/pyramid.py +10 -24
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/pyramid_auto.py +21 -24
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/pyramid_tiles.py +31 -25
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/stack.py +21 -17
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/stack_framework.py +98 -47
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/utils.py +16 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/vignetting.py +13 -10
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/gui_utils.py +10 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/main.py +10 -4
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/project.py +3 -1
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/retouch.py +3 -1
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/config/constants.py +60 -25
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/config/gui_constants.py +1 -1
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/core/core_utils.py +4 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/core/framework.py +104 -23
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/action_config.py +4 -5
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/action_config_dialog.py +409 -239
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/base_form_dialog.py +2 -2
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/colors.py +1 -0
- shinestacker-1.3.1/src/shinestacker/gui/folder_file_selection.py +106 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/gui_run.py +12 -10
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/main_window.py +10 -5
- shinestacker-1.3.1/src/shinestacker/gui/new_project.py +348 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/project_controller.py +10 -6
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/project_converter.py +4 -2
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/project_editor.py +40 -28
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/select_path_widget.py +1 -1
- shinestacker-1.3.1/src/shinestacker/gui/sys_mon.py +97 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/time_progress_bar.py +4 -3
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/exif_data.py +1 -1
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/image_editor_ui.py +2 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1/src/shinestacker.egg-info}/PKG-INFO +6 -6
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker.egg-info/SOURCES.txt +5 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker.egg-info/requires.txt +1 -0
- shinestacker-1.2.1/src/shinestacker/_version.py +0 -1
- shinestacker-1.2.1/src/shinestacker/gui/new_project.py +0 -250
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.coveragerc +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.flake8 +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.github/workflows/ci-multiplatform.yml +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.github/workflows/pylint.yml +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.github/workflows/pypi-publish.yml +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.github/workflows/release.yml +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.gitignore +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.pylintrc +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/.readthedocs.yaml +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/LICENSE +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/MANIFEST.in +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/api.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/balancing.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/conf.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/gui.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/index.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/multilayer.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/noise.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/requirements.txt +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/docs/vignetting.md +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/coffee.gif +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/coffee_stack.jpg +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/extreme-vignetting.jpg +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/flies.gif +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/flies_stack.jpg +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/flow-diagram.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/gui-finder.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/gui-project-new.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/gui-project-run.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/img/gui-retouch.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/scripts/build_release.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/scripts/git-rev-list.sh +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/scripts/validate-tomli.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/setup.cfg +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/denoise.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/exif.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/sharpen.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/algorithms/white_balance.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/about_dialog.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/help_menu.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/app/open_frames.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/config/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/config/config.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/core/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/core/colors.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/core/exceptions.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/core/logging.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/flow_layout.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/gui_images.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/gui_logging.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/ico/focus_stack_bkg.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/ico/shinestacker.icns +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/ico/shinestacker.ico +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/ico/shinestacker.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/ico/shinestacker.svg +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/img/close-round-line-icon.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/img/forward-button-icon.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/img/play-button-round-icon.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/img/plus-round-line-icon.png +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/menu_manager.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/project_model.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/gui/tab_widget.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/__init__.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/base_filter.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/brush.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/brush_gradient.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/brush_preview.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/brush_tool.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/denoise_filter.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/display_manager.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/file_loader.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/filter_manager.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/icon_container.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/image_viewer.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/io_gui_handler.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/io_manager.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/layer_collection.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/shortcuts_help.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/undo_manager.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/unsharp_mask_filter.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/vignetting_filter.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker/retouch/white_balance_filter.py +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker.egg-info/dependency_links.txt +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker.egg-info/entry_points.txt +0 -0
- {shinestacker-1.2.1 → shinestacker-1.3.1}/src/shinestacker.egg-info/top_level.txt +0 -0
|
@@ -2,8 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
This page reports the main releases only and the main changes therein.
|
|
4
4
|
|
|
5
|
-
## [v1.
|
|
5
|
+
## [v1.3.1] - 2025-09-08
|
|
6
|
+
|
|
7
|
+
## Fixed
|
|
8
|
+
- fixed input folder widget in job configuration
|
|
9
|
+
- better management of patological alignments
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- improved automatic parameters for parallel alignment
|
|
13
|
+
- improved pyramid performances by combining two input steps
|
|
14
|
+
- improved performances of ORB and SURF feature extraction with key points caching
|
|
15
|
+
- improved configuration GUI using tabs and other minor GUI improvements
|
|
16
|
+
- code clean up and some fixes
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## [v1.3.0] - 2025-09-06
|
|
21
|
+
**Parallel processing and input flexibility**
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- Parallel processing in alignment feature extraction
|
|
25
|
+
- Parallel processing of combined actions
|
|
26
|
+
- Job input can now specify a list of files (not only a folder)
|
|
27
|
+
- CPU and memory usage monitor widget for running jobs
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Path in example project
|
|
31
|
+
- Bug fix in config dialog
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- Changes some default parameters for better performances
|
|
35
|
+
- Some GUI restyling
|
|
36
|
+
- Code cleanup
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## [v1.2.1] - 2025-09-02
|
|
6
41
|
**Bug fixes and minor improvements**
|
|
42
|
+
|
|
43
|
+
### Changes
|
|
44
|
+
|
|
7
45
|
* alignment is more tolerant in case of failures: frames are skipped and the running job is not stopped
|
|
8
46
|
* fixed the -x (--expert) option
|
|
9
47
|
* more safety checks prevent crashes for abnormal conditions
|
|
@@ -16,6 +54,8 @@ This page reports the main releases only and the main changes therein.
|
|
|
16
54
|
## [v1.2.0] - 2025-08-31
|
|
17
55
|
**Parallel processing and more improvements**
|
|
18
56
|
|
|
57
|
+
### Changes
|
|
58
|
+
|
|
19
59
|
* Implemented parallel processing for pyramid stacking algorithm
|
|
20
60
|
* optimized pyramid algorithm: selects automatically the best within the given memory budget to avoid memory issues in case many pictures are selected. Explicit configuration is also possible for specific needs.
|
|
21
61
|
* Implemented automatic subsample option for alignment, balancing and vignetting, now default
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shinestacker
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: ShineStacker
|
|
5
5
|
Author-email: Luca Lista <luka.lista@gmail.com>
|
|
6
6
|
License-Expression: LGPL-3.0
|
|
@@ -20,6 +20,7 @@ Requires-Dist: numpy
|
|
|
20
20
|
Requires-Dist: opencv_python
|
|
21
21
|
Requires-Dist: pillow
|
|
22
22
|
Requires-Dist: psdtags
|
|
23
|
+
Requires-Dist: psutil
|
|
23
24
|
Requires-Dist: PySide6
|
|
24
25
|
Requires-Dist: scipy
|
|
25
26
|
Requires-Dist: tifffile
|
|
@@ -69,6 +70,10 @@ The GUI has two main working areas:
|
|
|
69
70
|
|
|
70
71
|
<img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/gui-retouch.png' width="600" referrerpolicy="no-referrer">
|
|
71
72
|
|
|
73
|
+
# Resources
|
|
74
|
+
|
|
75
|
+
🌍 [Website on WordPress](https://shinestacker.wordpress.com) • 📖 [Main documentation](https://shinestacker.readthedocs.io) • 📝 [Changelog](https://github.com/lucalista/shinestacker/blob/main/CHANGELOG.md)
|
|
76
|
+
|
|
72
77
|
# Note for macOS users
|
|
73
78
|
|
|
74
79
|
**The following note is only relevant if you download the application as compressed archive from the [release page](https://github.com/lucalista/shinestacker/releases).**
|
|
@@ -88,11 +93,6 @@ xattr -cr ~/Downloads/shinestacker/shinestacker.app
|
|
|
88
93
|
|
|
89
94
|
macOS adds a quarantine flag to all files downloaded from the internet. The above command removes that flag while preserving all other application functionality.
|
|
90
95
|
|
|
91
|
-
# Resources
|
|
92
|
-
|
|
93
|
-
🌍 [Website on WordPress](https://shinestacker.wordpress.com) • 📖 [Main documentation](https://shinestacker.readthedocs.io) • 📝 [Changelog](https://github.com/lucalista/shinestacker/blob/main/CHANGELOG.md)
|
|
94
|
-
|
|
95
|
-
|
|
96
96
|
# Credits
|
|
97
97
|
|
|
98
98
|
The first version of the core focus stack algorithm was initially inspired by the [Laplacian pyramids method](https://github.com/sjawhar/focus-stacking) implementation by Sami Jawhar that was used under permission of the author. The implementation in the latest releases was rewritten from the original code.
|
|
@@ -38,6 +38,10 @@ The GUI has two main working areas:
|
|
|
38
38
|
|
|
39
39
|
<img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/gui-retouch.png' width="600" referrerpolicy="no-referrer">
|
|
40
40
|
|
|
41
|
+
# Resources
|
|
42
|
+
|
|
43
|
+
🌍 [Website on WordPress](https://shinestacker.wordpress.com) • 📖 [Main documentation](https://shinestacker.readthedocs.io) • 📝 [Changelog](https://github.com/lucalista/shinestacker/blob/main/CHANGELOG.md)
|
|
44
|
+
|
|
41
45
|
# Note for macOS users
|
|
42
46
|
|
|
43
47
|
**The following note is only relevant if you download the application as compressed archive from the [release page](https://github.com/lucalista/shinestacker/releases).**
|
|
@@ -57,11 +61,6 @@ xattr -cr ~/Downloads/shinestacker/shinestacker.app
|
|
|
57
61
|
|
|
58
62
|
macOS adds a quarantine flag to all files downloaded from the internet. The above command removes that flag while preserving all other application functionality.
|
|
59
63
|
|
|
60
|
-
# Resources
|
|
61
|
-
|
|
62
|
-
🌍 [Website on WordPress](https://shinestacker.wordpress.com) • 📖 [Main documentation](https://shinestacker.readthedocs.io) • 📝 [Changelog](https://github.com/lucalista/shinestacker/blob/main/CHANGELOG.md)
|
|
63
|
-
|
|
64
|
-
|
|
65
64
|
# Credits
|
|
66
65
|
|
|
67
66
|
The first version of the core focus stack algorithm was initially inspired by the [Laplacian pyramids method](https://github.com/sjawhar/focus-stacking) implementation by Sami Jawhar that was used under permission of the author. The implementation in the latest releases was rewritten from the original code.
|
|
@@ -40,18 +40,17 @@ psdtags
|
|
|
40
40
|
License: MIT
|
|
41
41
|
https://pypi.org/project/psdtags/
|
|
42
42
|
|
|
43
|
+
-------------------------------------------------------------------------------
|
|
44
|
+
psutil
|
|
45
|
+
License: BSD-3-Clause
|
|
46
|
+
https://pypi.org/project/psutil/
|
|
47
|
+
|
|
43
48
|
-------------------------------------------------------------------------------
|
|
44
49
|
PySide6
|
|
45
50
|
License: GNU Lesser General Public License v3.0 (LGPL-3.0)
|
|
46
51
|
or commercial license from The Qt Company
|
|
47
52
|
https://doc.qt.io/qtforpython/
|
|
48
53
|
|
|
49
|
-
Full license text follows:
|
|
50
|
-
|
|
51
|
-
--- BEGIN LGPL-3.0 LICENSE ---
|
|
52
|
-
<qui incolla il testo completo della LGPL-3.0>
|
|
53
|
-
--- END LGPL-3.0 LICENSE ---
|
|
54
|
-
|
|
55
54
|
-------------------------------------------------------------------------------
|
|
56
55
|
scipy
|
|
57
56
|
License: BSD-3-Clause
|
|
@@ -67,14 +66,8 @@ tqdm
|
|
|
67
66
|
License: Mozilla Public License 2.0 (MPL-2.0)
|
|
68
67
|
https://github.com/tqdm/tqdm
|
|
69
68
|
|
|
70
|
-
Full license text follows:
|
|
71
|
-
|
|
72
|
-
--- BEGIN MPL-2.0 LICENSE ---
|
|
73
|
-
<qui incolla il testo completo della MPL-2.0>
|
|
74
|
-
--- END MPL-2.0 LICENSE ---
|
|
75
|
-
|
|
76
69
|
-------------------------------------------------------------------------------
|
|
77
70
|
|
|
78
71
|
NOTE:
|
|
79
72
|
This file is provided for license compliance and attribution purposes.
|
|
80
|
-
|
|
73
|
+
Shine Stacker code is licensed separately under the GNU Lesser General Public License v3.0.
|
|
@@ -93,6 +93,14 @@ alignment_config = {
|
|
|
93
93
|
* ```plot_matches``` (optional, default: ```False```): if ```True```, for each image matches with reference frame are drawn. May be useful for inspection and debugging.
|
|
94
94
|
* ```enabled``` (optional, default: ```True```): allows to switch on and off this module.
|
|
95
95
|
|
|
96
|
+
## Parallel processing
|
|
97
|
+
|
|
98
|
+
A class ```AlignFramesParallel``` implements alignment using parallel processing.
|
|
99
|
+
This class has extra parameters, in addition to the above ones:
|
|
100
|
+
|
|
101
|
+
* ```max_threads``` (optional, default: ```2```): number of parallel processes allowed. The number of actual threads will not be greater than the number of available CPU cores.
|
|
102
|
+
* ```chunk_submit``` (optional, default: ```True```): submit at most ```max_threads``` parallel processes. If ```chunk_submit``` is greater than ```max_threads``` a moderate performance gain is achieved at the cost of a possibly large memory occupancy.
|
|
103
|
+
* ```bw_matching``` (optional, default: ```False```): perform matches on black and white version of the images in order to save memory. Preliminary tests indicate that the gain with this option is marginal, and this option may be dropped in the future.
|
|
96
104
|
|
|
97
105
|
## Allowed configurations
|
|
98
106
|
|
|
@@ -119,3 +127,10 @@ give raise to an exception.
|
|
|
119
127
|
| 0.2887 | AKAZE | BRISK | NORM_HAMMING |
|
|
120
128
|
| 0.4075 | AKAZE | SIFT | KNN |
|
|
121
129
|
| 0.4397 | SIFT | SIFT | KNN |
|
|
130
|
+
|
|
131
|
+
## References
|
|
132
|
+
|
|
133
|
+
For a detailed review of the various image registration methods, see the publication below:
|
|
134
|
+
* [A Review of Keypoints’ Detection and Feature Description in Image Registration](https://onlinelibrary.wiley.com/doi/10.1155/2021/8509164), Scientific Programming 2021, 8509164, doi:10.1155/2021/8509164
|
|
135
|
+
|
|
136
|
+
|
|
@@ -48,6 +48,7 @@ Arguments for the constructor are, in addition to the ones for ```PyramidStack``
|
|
|
48
48
|
* ```tile_size``` (optional, default: 512): size of a time
|
|
49
49
|
* ```n_tiled_layers``` (optional, default: 2): number of layers that are tiled. Usually the last one or two are the ones that take more memory.
|
|
50
50
|
* ```max_threads``` (optional, default: number of cores, up to a maximum of 8): maximum number of thread used for parallel processing. The actual number of threads does not exceed the number of available cores.
|
|
51
|
+
* ```chunk_submit``` (optional, default: ```True```): submit at most ```max_threads``` parallel processes. If ```chunk_submit``` is greater than ```max_threads``` a moderate performance gain is achieved at the cost of a possibly large memory occupancy.
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
```PyramidAutoStack```, pyramid algorithn with capability to automatically switch from all-in-memory to I/O buffered tiled.
|
|
@@ -44,3 +44,5 @@ Arguments for the constructor of ```CombinedActions``` are for the :
|
|
|
44
44
|
* ```reference_index``` (optional, default: 0): the index of the image used as reference. Images are numbered starting from one to N. -1 is interpreted as the last image, 0 as the median index.
|
|
45
45
|
* ```step_process``` (optional): if equal to ```True``` (default), each image is processed with respect to the previous or next image, depending if its file is placed in alphabetic order after or befor the reference image.
|
|
46
46
|
* ```enabled``` (optional, default: ```True```): allows to switch on and off this module.
|
|
47
|
+
* ```max_threads``` (optional, default: ```2```): number of parallel processes allowed. The number of actual threads will not be greater than the number of available CPU cores.
|
|
48
|
+
* ```chunk_submit``` (optional, default: ```True```): submit at most ```max_threads``` parallel processes. If ```chunk_submit``` is greater than ```max_threads``` a moderate performance gain is achieved at the cost of a possibly large memory occupancy.
|
|
@@ -87,7 +87,7 @@ job.run()
|
|
|
87
87
|
|
|
88
88
|
### Core processing
|
|
89
89
|
```bash
|
|
90
|
-
pip install imagecodecs matplotlib numpy opencv-python pillow psdtags scipy setuptools-scm tifffile tqdm
|
|
90
|
+
pip install imagecodecs matplotlib numpy opencv-python pillow psdtags psutil scipy setuptools-scm tifffile tqdm
|
|
91
91
|
```
|
|
92
92
|
## GUI support
|
|
93
93
|
```bash
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Shine Stacker</title>
|
|
7
|
+
<meta name="description" content="Shine Stacker – Open source focus stacking framework with GUI for macro and micro photography.">
|
|
8
|
+
|
|
9
|
+
<!-- Open Graph / Facebook -->
|
|
10
|
+
<meta property="og:type" content="website">
|
|
11
|
+
<meta property="og:title" content="Shine Stacker">
|
|
12
|
+
<meta property="og:description" content="Open source focus stacking framework with GUI for macro and micro photography.">
|
|
13
|
+
<meta property="og:image" content="https://raw.githubusercontent.com/lucalista/shinestacker/main/src/shinestacker/gui/ico/shinestacker.png">
|
|
14
|
+
<meta property="og:url" content="https://lucalista.github.io/shinestacker/">
|
|
15
|
+
|
|
16
|
+
<!-- Twitter Card -->
|
|
17
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
18
|
+
<meta name="twitter:title" content="Shine Stacker">
|
|
19
|
+
<meta name="twitter:description" content="Open source focus stacking framework with GUI for macro and micro photography.">
|
|
20
|
+
<meta name="twitter:image" content="https://raw.githubusercontent.com/lucalista/shinestacker/main/src/shinestacker/gui/ico/shinestacker.png">
|
|
21
|
+
<style>
|
|
22
|
+
body { font-family: sans-serif; margin: 40px; line-height: 1.6; background: #f7f7f7; color: #333; }
|
|
23
|
+
h1 { color: #2c3e50; font-size: 48px}
|
|
24
|
+
a { color: #2980b9; text-decoration: none; }
|
|
25
|
+
a:hover { text-decoration: underline; }
|
|
26
|
+
.container { max-width: 800px; margin: auto; background: #fff; padding: 30px; border-radius: 10px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);}
|
|
27
|
+
.logo { width: 150px; }
|
|
28
|
+
ul { text-align: left; }
|
|
29
|
+
.footer { color: #A0A0A0; }
|
|
30
|
+
</style>
|
|
31
|
+
</head>
|
|
32
|
+
<body>
|
|
33
|
+
<div class="container" style="text-align:center;">
|
|
34
|
+
<h1>Shine Stacker</h1>
|
|
35
|
+
<img src="https://raw.githubusercontent.com/lucalista/shinestacker/main/src/shinestacker/gui/ico/shinestacker.png" alt="Shine Stacker Logo" class="logo"> <p>Open source framework and GUI for focus stacking macro and micro photography.</p>
|
|
36
|
+
<h2><a href="https://lucalista.github.io/shinestacker/docs/main.html">Go to GitHub website</h2>
|
|
37
|
+
<ul>
|
|
38
|
+
<li><a href="https://shinestacker.wordpress.com/">Shine Stacker on Wordpress</a></li>
|
|
39
|
+
<li><a href="https://shinestacker.readthedocs.io/">Complete documentation</a></li>
|
|
40
|
+
<li><a href="https://github.com/lucalista/shinestacker">Source code and releases on GitHub</a></li>
|
|
41
|
+
</ul>
|
|
42
|
+
<hr style="color: #f0f0ff;">
|
|
43
|
+
<p class="footer">Shine Stacker, © 2025, <a href="https://github.com/lucalista" alt="Luca Lista">Luca Lista</a> (LGPL-3.0).<br>
|
|
44
|
+
Logo © <a href="https://linktr.ee/alelista" alt="Alessandro Lista">Alessandro Lista</a> — All rights reserved.
|
|
45
|
+
</div>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.3.1'
|