Commit graph

109 commits

Author SHA1 Message Date
jaknapper
ee128ad91f Rename to StackParams, move undershoots into Params 2025-06-23 13:47:14 +01:00
jaknapper
7cff0f8f44 StackInfo dataclass 2025-06-23 12:56:31 +01:00
Julian Stirling
72faba0272 Fix issues found by linter in PiCamera Code
Issue #423 created based on lens shading TODOs
2025-06-23 12:39:25 +01:00
jaknapper
333ea1b644 More input validation and comments 2025-06-23 12:02:00 +01:00
Joe Knapper
7a7547542c Apply suggestions from code review of branch fast-stack
Co-authored-by: Julian Stirling <julian@julianstirling.co.uk>
2025-06-23 10:36:26 +00:00
Julian Stirling
0e3f4305b5 Tidy post refactor of cameras 2025-06-23 11:26:24 +01:00
Julian Stirling
4368dc3d90 Consolidate functionality into BaseCamera from Capture Thing and StreamingPicamera2 2025-06-23 11:26:22 +01:00
jaknapper
628fd145f3 Cleaned up settling time maths to only calculate once 2025-06-23 11:25:49 +01:00
jaknapper
2f9e37a02f More descriptive timing variable names 2025-06-23 11:25:49 +01:00
jaknapper
985d20e032 Capture resolution as a Thing property 2025-06-23 11:25:49 +01:00
jaknapper
968bd339c2 SETTLING_TIME global in stacking 2025-06-23 11:25:37 +01:00
jaknapper
52b58241cc Added copy_sharpest_image to autofocus 2025-06-23 11:19:23 +01:00
jaknapper
0d32983b62 Only undershoot z stack if image count > 1, settle before first capture 2025-06-23 11:19:23 +01:00
jaknapper
744ec28f93 Get images as a PIL image from camera, use resizing and saving as settling time in stack 2025-06-23 11:19:20 +01:00
jaknapper
9f2a131f1e Swap stream for scan, target_resolution as arg 2025-06-23 11:17:46 +01:00
jaknapper
f5c1ff2621 Ruff formating 2025-06-23 11:17:46 +01:00
jaknapper
de7ffb9d1e Stream_name and capture_method args updated 2025-06-23 11:17:46 +01:00
jaknapper
8bc0573ab1 Capture_array can now use "full" stream 2025-06-23 11:17:46 +01:00
jaknapper
9d1385231d Rename jpeg_array to highres_array 2025-06-23 11:17:46 +01:00
jaknapper
132efa8033 Options for capture method, default downsampling of correlations 2025-06-23 11:17:45 +01:00
jaknapper
26163dc97e Added a new way to capture full res JPEGs, need to do a comparison of results 2025-06-23 11:17:45 +01:00
jaknapper
ab33de7ccd Capture a jpeg to disk 2025-06-23 11:17:45 +01:00
jaknapper
d8878e40da Stacking in autofocus with temp capture Thing 2025-06-23 11:17:45 +01:00
Joe Knapper
d1ed7ec797 Apply suggestions from code review of branch fast-stack 2025-06-20 11:26:58 +00:00
Joe Knapper
006d3b2a7b Apply suggestions from code review of branch fast-stack
Co-authored-by: Beth Probert <beth_probert@outlook.com>
2025-06-20 11:23:14 +00:00
jaknapper
ce33b94aab Capture as a Raw dependency to use methods that aren't actions 2025-06-20 12:19:07 +01:00
jaknapper
6cf2f4d8c3 Typehints and docstrings in z_stack 2025-06-19 14:58:16 +01:00
jaknapper
6acfbaefd6 Split up z stack function 2025-06-18 18:36:21 +01:00
jaknapper
e8c4103bb0 Remove unneeded logging 2025-06-17 14:34:42 +01:00
jaknapper
f363ec0eff Docstring for test_stack 2025-06-17 14:34:42 +01:00
jaknapper
dbb65d55b5 Use scan autofocus dz 2025-06-17 14:34:42 +01:00
jaknapper
cdd603d751 Capture the full stack requested 2025-06-17 14:34:42 +01:00
jaknapper
0671f2d1be Backlash correction as global, more comments 2025-06-17 14:34:42 +01:00
jaknapper
712f524414 Looping autofocus on failed smart stack 2025-06-17 14:34:42 +01:00
jaknapper
3e164102f6 A stack that tests whether the sharpest image is towards the middle 2025-06-17 14:34:42 +01:00
Julian Stirling
2050c2dc7c Add return checker, needed 4 fixes 2025-06-10 16:07:48 +01:00
jaknapper
b812c6be35 Settling time as global, settle before taking first image in stack 2025-05-21 15:41:49 +01:00
jaknapper
bdb307ca18 Remove verify_autofocus from autofocus 2025-05-08 17:32:04 +01:00
jaknapper
673a135157 Reorganise imports 2025-05-07 19:52:21 +01:00
jaknapper
6cf99d5096 Stack settings in GUI 2025-05-07 19:52:21 +01:00
jaknapper
f50580cdd0 Give sharpness monitor a descriptive name, not m 2025-05-07 19:52:20 +01:00
jaknapper
bf6437b42c Renaming z_stack features for clarity, docstring on AutofocusThing 2025-05-07 19:52:20 +01:00
jaknapper
9f39f61d03 Stacking in autofocus with temp capture Thing 2025-05-07 19:52:18 +01:00
Richard Bowman
83e10b125b Fix return type annotation for autofocus 2024-12-18 14:23:58 +00:00
Richard Bowman
9fd8fc37f1 Formatted with Ruff 2024-12-03 06:46:08 +00:00
Richard Bowman
27aec769a2 Linter fixes
NB I have permitted bare except: blocks in smart_scan. This should be reverted.
2024-12-03 06:43:45 +00:00
Richard Bowman
a0fbbc3e40 Convert Stage to a Protocol
The Stage is now implemented as a runtime-checkable Protocol.

Part of this led to the realisation that we can't create a DirectThingClient
based on a Protocol, only on a concrete Thing. While it might be
a good idea to address that in LabThings in due course, for now
we work around it by creating both a Protocol and a stub class. The stub class implements the protocol, and
can be used to declare a dependency.
2024-11-29 12:53:04 +00:00
Richard Bowman
adbb805556 Formal Protocol for camera interface
I've now split the base camera code into a runtime-checkable Protocol
and a concrete base class (which is optional). This removes the requirement
for cameras to subclass `openflexure_microscope.things.camera.Camera`
and instead uses duck typing that should
work both statically and dynamically.

As part of this, I've moved the commonly-used dependencies
on the camera inside `openflexure_microscope.things.camera` for consistency, and to make it easy to update them if it changes in the future.
2024-11-29 11:26:38 +00:00
Richard Bowman
2268425bf3 Depend only on generic Camera and Stage
I've now defined parent classes for camera and stage, and depend only on those. This allows
proper typing while enabling the actual hardware
classes to be swapped.

The interfaces definitely aren't final - this is a first
draft, largely to enable me to test out the concept
of a configuration server.
2024-08-09 02:41:39 +01:00
jaknapper
aed5a22983 Autofocus verify based on sharpness range, removed repetitive logging 2024-02-15 11:02:44 +00:00