webarkit / webarkit/jsfeatNext

feat(cv_backend): expose new descriptors and filterMatches in the jsfeatNext adapter

Open
#136 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

code design enhancement Typescript
Dominant language
TypeScript
Stars
12
Forks
4
Avg merge
16h 24m
Merged PRs (30d)
34

Description

Summary

Wire the new descriptors and the GMS filter into the jsfeatNext CvBackend
adapter: declare them in capabilities, honour DescribeOptions.kind, and
expose filterMatches.

This is the issue that closes the loop between the contract amendments (#128,
#129) and the algorithm modules.

Why

#128 and #129 amend the contract; the algorithm issues add the modules. Neither
makes the new capabilities reachable through CvBackend — that is this issue.

It is kept separate rather than folded into each module issue for one reason:
cv_backend.ts does not exist yet. #96 is still a draft in its issue body. If
every module issue had to wire its own adapter, every module would be blocked on
#96 — the largest and least-started piece of work in the group. Keeping
integration separate lets the modules land while the contract implementation
proceeds on its own timeline.

Scope

  • capabilities reports the detectors, descriptors and match filters this
    backend actually implements, updated as each module lands.
  • describe() honours the requested DescriptorKind, dispatching to the
    corresponding module.
  • Descriptors.kind and Descriptors.norm populated on every return.
  • filterMatches implemented over the GMS module, and advertised through
    capabilities.matchFilters.
  • Requesting an unsupported kind throws, with a typed error naming the
    requested kind and the supported set. It does not fall back to ORB: choosing a
    fallback is the high-level layer's decision, made against capabilities, and
    a silent fallback recreates exactly the bug #128 exists to prevent.
  • match() rejects descriptor sets whose kind or norm disagree.

Acceptance criteria

  • capabilities accurately reflects the modules present at the time of
    merge, and a test fails if a declared capability is not actually callable.
  • describe(img, kps, { kind }) dispatches correctly for every declared
    descriptor, and throws for every undeclared one.
  • filterMatches runs GMS and is reachable only when advertised.
  • A test with a reduced-capability backend shows the caller resolving to a
    deterministic fallback from its own preference list, with the backend
    never guessing.
  • match() throws on a kind or norm mismatch.
  • No new any (#85).

Out of scope

  • Implementing the contract itself — that is #96.
  • The PureCV, WebARKitLib and jsartoolkitNFT adapters.
  • Any algorithm implementation.
  • The high-level AR layer's fallback policy — only the test demonstrating it.

Dependencies

  • #96 (contract implemented), #128, #129.
  • At least one of #134 (GMS) / #135 (TEBLID) / #80 (FREAK); ideally all three, but the
    adapter can be extended incrementally as each lands.

Related

  • Contract: #96, amended by #128 and #129
  • Consumer: #97
  • Cross-repo: the PureCV CvBackend adapter consumes this same contract and
    should reference it rather than redefining it
  • Plan: docs/features2d-expansion-plan.md

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the contract work in #96 and the amendments in #128 and #129, then review the algorithm modules in #134, #135, and #80 alongside docs/features2d-expansion-plan.md. Locate the jsfeatNext CvBackend adapter once it exists and verify that declared capabilities are callable, dispatch and mismatch behavior are tested, and reduced-capability fallback remains the caller’s responsibility.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, computer-vision
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.