Project Description

(HackWeek 24): Continue further.

A bit more concretely.

  • Implement generic image warping (where each pixel in the result has an individual origin pixel to get its data from).
  • Implement at least one virtual image providing displacement/origin information based on a formula. I.e.

    • arbitrary scaling
    • arbitrary rotation
    • affine transformation
    • projective transformation
    • some kind of effect

Note, the already existing indexed virtual image is an origin map describing an identity transformation.

This can be used as a base for transforms providing displacements to get the absolute values currently thought to be needed by the generic warper.

Alternatively have two (2) generic wrappers, one taking absolute origin coordinates, the other relative displacements.

So, API design is still going on in the background.

Results

  • https://core.tcl-lang.org/akupries/aktive/doc/trunk/doc/ref/transformstructurewarp.md#op_transform_by
  • https://core.tcl-lang.org/akupries/aktive/doc/trunk/doc/ref/transform_effect.md#effect_swirl

IOW all 2024 targets (projective transform, effect) achieved.



(HackWeek 23): Started last hack week with some more work after that in free time. Started as experiment in describing the image and vector operations as C fragments and then using Tcl to generate all the boilerplate around that to link them to a runtime. Plus writing the runtime itself.

Internals inspired by VIPS. Got the planned multi-threaded operation done in the time after the hack week.

Things to do:

  • More operations (always)
  • Requires some kind of caching (in-memory, disk) for mismatches in native access. Examples
    • column FFT ask for column data from input, and input can provide only rows.
    • whole image operation is queried by a user for rows, tiles, etc.
  • Record per-operator information about supported/fast access modes

Goal for this Hackweek

  • At least one additional operation (code and tests)
  • Progress on specification of a cache system
  • Or progress on specification of access modes and how to combine them for a sink driving a pipeline

Resources

  • https://core.tcl-lang.org/akupries/aktive/timeline (primary, fossil)
  • https://github.com/andreas-kupries/aktive (secondary, git)

Note: Mirroring is unidirectional, from primary to secondary. Work can only happen in the primary.

Looking for hackers with the skills:

Nothing? Add some keywords!

This project is part of:

Hack Week 23 Hack Week 24

Activity

  • about 1 month ago: paulgonin liked this project.
  • about 1 year ago: andreas-kupries started this project.
  • about 1 year ago: andreas-kupries originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    This project is one of its kind!