Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Fix Aruco marker incorrect detection near image edge #26968

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

MaximSmolskiy
Copy link
Contributor

Pull Request Readiness Checklist

Fix #26922

As I understood the algorithm, at the first stage we search for the contours of the marker several times (adaptive threshold with different windows sizes). Therefore, for the same marker, we get several contours (inner and outer with different sizes due to the different windows sizes). In the second stage, we group the contours for the same marker into one group, from which we take the largest contour as the best candidate (which should best match the border of the marker).

The problem is that using the minDistanceToBorder parameter, we discard contours at the first stage. Thus, we discard the best candidates most appropriate to the marker border, and inner contours may remain, representing a significantly smaller marker border (which we observe in the issue).

But if we use the minDistanceToBorder parameter to discard the best candidate of the group at the second stage, then there will be no such problems and we will completely discard markers located too close to the border of the image.

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

@asmorkalov
Copy link
Contributor

Looks like the image in the issue report is synthetic. Could you add similar test without additional image in opencv_extra (e.g. Board::generateImage(), warpPerspective, detect markers, check count and coordinates).

@asmorkalov
Copy link
Contributor

The patch conflicts with #26934 a bit. Most probably the larger one will be merged first to simplify things.

@asmorkalov asmorkalov self-assigned this Feb 24, 2025
@asmorkalov
Copy link
Contributor

Please take a look on the failed test:

[ RUN      ] Charuco.issue_14014
/Users/opencv-cn/GHA-OCV-1/_work/opencv/opencv/opencv/modules/objdetect/test/test_charucodetection.cpp:665: Failure
Expected equality of these values:
  rejectedPoints.size()
    Which is: 26
  24ull
    Which is: 24
[  FAILED  ] Charuco.issue_14014 (8 ms)

@asmorkalov
Copy link
Contributor

asmorkalov commented Feb 24, 2025

See difference before the patch and after. Red lines are rejected corners drown with cv::aruco::drawDetectedMarkers
Before:
before
After:
after
Looks like size check does not work or work with improper scale.

@asmorkalov
Copy link
Contributor

@MaximSmolskiy Please rebase and fix conflicts. The related PRs have been merged.

@MaximSmolskiy
Copy link
Contributor Author

Now bin/opencv_test_objdetect --gtest_filter='*ruco*' passes
It remains to add similar test from issue

@asmorkalov asmorkalov merged commit 46dbc57 into opencv:4.x Mar 12, 2025
28 checks passed
@MaximSmolskiy MaximSmolskiy deleted the fix-Aruco-marker-incorrect-detection-near-image-edge branch March 14, 2025 06:15
asmorkalov pushed a commit that referenced this pull request Mar 17, 2025
…or-detectMarkers

Add test for ArucoDetector::detectMarkers #27079

### Pull Request Readiness Checklist

Related to #26968 and #26922

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
@asmorkalov asmorkalov mentioned this pull request Apr 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Aruco marker incorrect detection for some markers of perspective transformed GridBoard near image edge
2 participants
Morty Proxy This is a proxified and sanitized view of the page, visit original site.