103 :
public FunctionalOperation<std::shared_ptr<Kakshya::SignalSourceContainer>, std::vector<Kakshya::DataVariant>> {
139 m_min_activity = min_activity;
146 [[nodiscard]] std::shared_ptr<Core::VKImage> crop(
147 const std::shared_ptr<Core::VKImage>& source,
155 [[nodiscard]] std::shared_ptr<Core::VKImage> crops(
156 const std::shared_ptr<Core::VKImage>& source,
165 [[nodiscard]] std::shared_ptr<Core::VKImage> mask(
167 const std::shared_ptr<Core::VKImage>& source,
169 uint32_t w, uint32_t
h);
178 [[nodiscard]] std::shared_ptr<Core::VKImage> silhouettes(
179 const std::shared_ptr<Core::VKImage>& source,
184 [[nodiscard]] std::shared_ptr<Core::VKImage> silhouette(
185 const std::shared_ptr<Core::VKImage>& source,
191 const std::shared_ptr<Core::VKImage>& source,
193 uint32_t source_w, uint32_t source_h);
196 [[nodiscard]] std::vector<Kinesis::Vision::FieldSample> sample_regions(
197 const std::shared_ptr<Core::VKImage>& source,
199 uint32_t source_w, uint32_t source_h);
207 [[nodiscard]] std::vector<glm::vec4> sample_points(
208 const std::shared_ptr<Core::VKImage>& source,
211 uint32_t source_w, uint32_t source_h);
214 [[nodiscard]] std::shared_ptr<Core::VKImage> patches(
215 const std::shared_ptr<Core::VKImage>& source,
218 uint32_t source_w, uint32_t source_h);
225 [[nodiscard]] std::optional<size_t> select_element(
233 [[nodiscard]] std::shared_ptr<Core::VKImage> equalize(
234 const std::shared_ptr<Core::VKImage>& source,
236 uint32_t source_w, uint32_t source_h);
242 [[nodiscard]] std::shared_ptr<Core::VKImage> expose(
243 const std::shared_ptr<Core::VKImage>& source,
246 uint32_t source_w, uint32_t source_h);
249 [[nodiscard]] std::shared_ptr<Core::VKImage> edges(
250 const std::shared_ptr<Core::VKImage>& source,
252 uint32_t source_w, uint32_t source_h);
259 [[nodiscard]] std::shared_ptr<Core::VKImage> motion_mask(
260 const std::shared_ptr<Core::VKImage>& source,
262 uint32_t source_w, uint32_t source_h);
270 [[nodiscard]] std::shared_ptr<Core::VKImage> annotate(
271 const std::shared_ptr<Core::VKImage>& source,
273 uint32_t source_w, uint32_t source_h);
276 output_type run_operation(
const input_type&
input);
278 [[nodiscard]] std::shared_ptr<Core::VKImage> resolve_image(
279 const std::shared_ptr<Kakshya::SignalSourceContainer>& source,
285 [[nodiscard]] std::optional<Kinesis::Vision::BoundingBox> region_for_analysis(
288 [[nodiscard]] std::optional<uint32_t> label_for_analysis(
291 [[nodiscard]] std::vector<glm::vec2> points_for_analysis(
294 [[nodiscard]] std::shared_ptr<Core::VKImage> fill_elements(
295 const std::shared_ptr<Core::VKImage>& source,
297 const std::vector<size_t>&
indices,
300 [[nodiscard]] std::shared_ptr<Core::VKImage> tone(
301 const std::shared_ptr<Core::VKImage>& source,
304 uint32_t source_w, uint32_t source_h);
307 size_t m_element_index { 0 };
309 uint32_t m_out_w { 0 };
310 uint32_t m_out_h { 0 };
311 uint32_t m_patch_w { 0 };
312 uint32_t m_patch_h { 0 };
313 uint32_t m_tile_w { 0 };
314 uint32_t m_tile_h { 0 };
315 uint32_t m_sample_radius { 1 };
316 float m_edge_threshold { 0.5F };
317 float m_min_speed { 0.5F };
318 float m_min_confidence { 0.1F };
319 float m_min_activity { 0.0F };
320 float m_exposure_target { 0.5F };
323 uint32_t m_upload_w { 0 };
324 uint32_t m_upload_h { 0 };
GpuExecutionContext specialisation for image compute shaders.