webarkit / webarkit/jsfeatNext
feat(cv_backend): expose new descriptors and filterMatches in the jsfeatNext adapter
Nobody has claimed this yet.
- 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
capabilitiesreports the detectors, descriptors and match filters this
backend actually implements, updated as each module lands.describe()honours the requestedDescriptorKind, dispatching to the
corresponding module.Descriptors.kindandDescriptors.normpopulated on every return.filterMatchesimplemented 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 againstcapabilities, and
a silent fallback recreates exactly the bug #128 exists to prevent. match()rejects descriptor sets whosekindornormdisagree.
Acceptance criteria
-
capabilitiesaccurately 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. -
filterMatchesruns 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 akindornormmismatch. - 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
CvBackendadapter consumes this same contract and
should reference it rather than redefining it - Plan:
docs/features2d-expansion-plan.md
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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