Defocus and realign simulation axes

This commit is contained in:
Joe Knapper 2024-12-03 11:16:27 +00:00
parent 16317bf94c
commit 2db895a1fc

View file

@ -17,6 +17,7 @@ import time
import cv2
import numpy as np
import piexif
from scipy.ndimage import gaussian_filter
from labthings_fastapi.utilities import get_blocking_portal
from labthings_fastapi.decorators import thing_action, thing_property
@ -95,15 +96,15 @@ class SimulatedCamera(BaseCamera):
int(y) - h // 2 : int(y) - h // 2 + h,
] -= self.sprites[int(sprite)]
def generate_image(self, pos: tuple[int, int]):
def generate_image(self, pos: tuple[int, int, int]):
"""Generate an image with blobs based on supplied coordinates"""
cw, ch, _ = self.canvas_shape
w, h, _ = self.shape
tl = (int(pos[0]) - w // 2 - cw // 2, int(pos[1]) - h // 2 - ch // 2)
image = self.canvas[
image = gaussian_filter(self.canvas[
tuple(slice(tl[i], tl[i] + self.shape[i]) for i in range(2))
+ (slice(None),)
]
], sigma = np.abs(pos[2])/5, axes = (0,1))
if image.shape != self.shape:
raise ValueError(
f"Image shape {image.shape} does not match intended shape {self.shape}"
@ -125,8 +126,8 @@ class SimulatedCamera(BaseCamera):
pos = self.get_stage_position()
except Exception as e:
print(f"Failed to get stage position: {e}")
pos = {"x": 0, "y": 0}
return self.generate_image((pos["x"] / 10, pos["y"] / 10))
pos = {"x": 0, "y": 0, "z": 0}
return self.generate_image((pos["y"]/10, pos["x"]/10, pos["z"]/10))
def __enter__(self):
self._capture_enabled = True