doc(features2d): OpenCV 4.10.0 parity audit of the features2d module
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript, opencv, python, rust
- Domain
- computer-vision, documentation, testing
Research direction
Wait for task B0 to establish the audit method, then read docs/parity/README.md, the B3 plan, CONTRIBUTING.md, and cpp_ref/AGENTS.md. Start by regenerating the features2d inventory at the base and measuring the listed priority rows with the pinned OpenCV 4.10.0 environment or opencv.js. Done means every public item has a status, divergences link issues, priority rows have reproducible evidence, and the listed Rust checks pass.
Written by the indexing model from the issue text.
Description
Part of the parity audit umbrella (#172). Follow-up of #165.
Deliverable: docs/parity/features2d.md, written with the audit method in docs/parity/README.md (procedure S1–S7, dimensions D1–D7, the six statuses). That method is created by task B0 of the plan, so wait for B0 before starting.
Reference: OpenCV 4.10.0. See CONTRIBUTING.md#opencv-reference-version and cpp_ref/AGENTS.md. Read sources only from the bootstrapped cpp_ref/src/opencv (and cpp_ref/src/opencv_contrib). Measure only with cpp_ref/.venv (opencv-contrib-python==4.10.0.84, IPP off) or the pinned opencv.js.
Plan section: Task B3: features2d
Audit PRs change no library code. They may add only the following:
docs/parity/;- reference scripts under
scripts/opencv_ref/; - passing tests that pin rows which already match OpenCV;
#[ignore]d tests for divergences.
Every divergence found gets its own issue.
OpenCV 4.10.0:
- doc pages: features2d main, draw, KeyPoint, BFMatcher;
- sources:
modules/features2d/src/{orb,fast,matchers,draw,keypoint}.cppandmodules/core/src/types.cpp; - contrib:
cpp_ref/src/opencv_contrib/modules/xfeatures2dat1ed3dd2c….
Inventory (indicative, regenerate at the base; #162 changed orb.rs):
Orb: params,detect,compute,detect_and_compute, pyramid helpers,compute_orientation,compute_orb_descriptor,precompute_umaxFastFeatureDetectorKeyPoint(convert_*,overlap),retain_best,sort_by_responseBFMatcher,DMatch,NormType,DescriptorMatcher,DescriptorDistancefilter_matches(ratio test)draw_keypoints,draw_matchesBIT_PATTERN_31
Seeded rows:
- Fixed on dev by #162 (closing at the next release): #123, #124, #125, #126, #136, #156.
- ORB
computeismeasuredviatest_orb_compute_matches_opencv_reference/orb_opencv_ref.rs, but only once its generator records the opencv.js build (follow-up below). Until then it isinspected. - #136: cite the FAST guard test.
- ORB
- Open ORB divergences: #158 (Harris scoring), #159 (split a–e), #160 (split a–c). Their evidence is issue comments from an unidentified opencv.js 4.10.0 build, so they are
divergeswith that evidence linked, until a committed script reproduces them. - FAST: #161, split a–d.
Type9_16+ nonmax matches according to #161, so it staysinspecteduntil S3 measures it. filter_matches→purecv-only.KeyPointplacement → see B1.
Priority rows (S3):
- FAST
Type9_16+ nonmax vscv2.FastFeatureDetector_create(thresholds 0/10/20/40) - ORB
detect_and_computekeypoint overlap vscv2.ORB_create() BFMatcher: Hamming / L2 distances,cross_checktie order,knn_matchorderingdraw_*colours and default flags
Follow-up (separate PR, chore(features2d), after approval):
- Make
scripts/opencv_ref/gen_orb_descriptors.jsdefaultOPENCV_JStocpp_ref/node_modules/@techstark/opencv-js/dist/opencv.js, and write theVersion control:line into the fixture header. - Regenerate. If the descriptors differ from the self-built build, record that as a finding rather than overwriting silently.
missing rows:
- main repo: AGAST, AKAZE/KAZE, BRISK, SIFT (in the main repo since 4.4), MSER, SimpleBlobDetector, a GFTT detector wrapper, FlannBasedMatcher;
- opencv_contrib xfeatures2d @1ed3dd2c: GMS (#101), TEBLID (#102), FREAK (#103), StarDetector (#104). The
cpp_ref/.venvwheel includes their free implementations.
Existing issues: #158, #159, #160, #161 (open); #123–#126, #136, #156 (fixed on dev); #101–#104 (contrib requests).
Done when
- every public item of the module has a row with one of the six statuses;
- every
divergesrow links an issue; - every priority row is
measuredwith reproducible evidence, or isdivergeswith a script or an#[ignore]d test; cargo fmt --check,cargo clippy -- -D warningsandcargo testpass (the guard also scansdocs/parity/*.md).
- Dominant language
- Rust
- Stars
- 29
- Forks
- 1
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 16
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing 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.
More from webarkit/purecv
-
bug video-module
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
bug video-module
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
AimesSoft/NipaPlay-Reload#1022 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ZcashFoundation/frost-tools#612 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
ScoopInstaller/Extras#19070 ·
Maintainers usually reply within 1 day
-
test: sim_zero_omega_tests race on shared temp-file names, so two pairs of tests fail at randomOpen
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100