v1.1.0 - 2026.08.07

First functioning release of LumiScan Template Finder. Earlier versions registered the application’s Data Layer nodes but returned a fixed placeholder result, so nothing in this list was usable before.

Added:

  • Template matching. <module>/find-template/execute searches a camera image for a stored template and reports every occurrence it finds, with an oriented bounding box, a confidence, and the scale and rotation the match was found at. The search covers a configurable range of scales and rotations. See Finding a Template.

  • Template creation from a live image. system/create-template/execute cuts a rectangular region out of a camera image and saves it as a template PNG, so a template can be produced from the real camera without transferring files. It is an application-wide operation: the template it writes is usable by every module at once. See Creating a Template.

  • Results as a flatbuffer. <module>/find-template/output/result carries the matches together with the template name, the matching mode and the threshold that produced them, so a stored result can be interpreted later without knowing how the search was configured.

  • Several modules. Each configuration lives under <module-id>/ with its own settings and results, and modules can be created and removed while the application runs through system/create-module and system/remove-module. system/save-current-modules keeps the set across a restart, and system/save-module-inputs keeps one module’s settings. One licence is valid for ten modules; the eleventh acquires a second licence of the same key, and a module is refused with status -11 when no licence covers it. See Module Management.

  • One template directory for the whole application. system/template-dir names the directory every module reads templates from and create-template writes them to, so a template only ever has to be created once. Change it with system/set-template-dir; the choice is saved and restored on the next start. A directory that does not exist is refused rather than created, so a typo is reported instead of silently producing an empty folder.

  • A list of the available templates. system/templates reports what is in that directory, without the .png extension, so an entry can be pasted straight into <module>/find-template/input/template-name instead of a file name being guessed. It is refreshed at startup, when the directory changes, and when create-template saves a template. See Template Storage.

  • Search only part of the image. <module>/find-template/input/crop/ limits the search to a rectangle. A zero width or height reaches the corresponding edge, so the default all-zero region searches the whole image. A region reaching past an edge is refused, naming the input and the limit it broke, rather than being trimmed to fit.

  • Choose the frame the positions are reported in. <module>/find-template/input/result-coordinate is IMAGE (the default) for positions in the full image, or CROP for positions inside the searched region.

  • The search range is grouped. The scale, rotation and preprocessing inputs sit in folders of their own - <module>/find-template/input/scale/, .../rotation/ and .../preprocess/ - so a Data Layer browser shows three small groups instead of one flat list of fourteen values.

  • Status reporting on every operation. Each operation reports output/status-code and output/status-text. The status code is signed, and the sign alone says whether the operation worked: negative is an error, zero means it has not run yet. See Execution Status.

  • Template storage in the active solution. Templates are PNG files in the application’s configuration directory, so they are included when the solution is exported and restored with it on another device. The directory is created on first start, so there is somewhere to upload to on a new installation. See Template Storage.

  • A configurable log level. system/logLevel in lumiscan-template-finder.json sets how much the application logs - TRACE, DEBUG, INFO, WARN, ERROR, FATAL or OFF - in the same block the other LumiScan applications use, so TRACE can be turned on for a support report and turned off again afterwards. It is read at startup, and a missing or misspelled value leaves the application as talkative as it was. See Template Storage.

Notes:

  • Every method clears its own output nodes as it begins, before anything that can fail, so a failed run leaves them empty rather than holding what an earlier run produced. Status -1 (busy) is the exception: that call never ran, so it leaves the running operation’s outputs alone. The outputs therefore belong to the run that is starting - read them before triggering the next one. See Execute a Method.

  • system/template-dir and system/templates are read-only. The directory is changed only through system/set-template-dir, so the listing can never disagree with the directory it came from.

  • Only files ending in a lower case .png are listed on system/templates, so give create-template a lower case name. A file copied into the directory by other means is usable at once but does not appear in the list until it is refreshed.

  • Duplicate matches are removed before the result is published. Searching a range of scales or rotations finds the same part once per step, so without this a single part would be reported many times.

  • The match confidence is rescaled for each scale/rotation step, so it is not an absolute measure of similarity, and the threshold applies per step rather than globally. This matters only when a range is searched; it is explained in Tuning the Search.

  • Directory and file names are always interpreted relative to the configuration directory. Absolute paths, and paths leading outside that directory, are rejected.