Skip to content
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

support similarity masks #18624

Merged
merged 8 commits into from
Oct 22, 2020
Merged

support similarity masks #18624

merged 8 commits into from
Oct 22, 2020

Conversation

qchateau
Copy link
Contributor

@qchateau qchateau commented Oct 19, 2020

Content

This PR adds the necessary code to add a similarity mask to the exposure compensator of the stitching pipeline.

You can configure a similarity_threshold which defines a threshold on the relative error between the pixels of two images. If the error is above the threshold, it is ignored when calculating the exposure compensation. This allows the removal of ghosting artifacts due to exposure compensation when part of the images are different (for instance a moving car which would only be present on a single picture)

Note that by default the behavior is unchanged.

Example

The top 2 images are the source images. The bottom left one used a block, per channel exposure compensation. The bottom right used the same, with a similarity threshold of 0.1.

Despite the seam finder and blender doing their job perfectly, the red artifact persists due to the exposure compensator.

The red rectangle has obviously been added artificially but that kind of artifact can exist naturally (example of a moving car above).

Untitled

Pull Request Readiness Checklist

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 other license that is incompatible with OpenCV
  • The PR is proposed to proper branch
  • There is reference to 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
    -> The feature is not documented, but neither are the other features are the exposure compensators. They belong to the detail namespace, I guess this is why ?

@alalek
Copy link
Member

alalek commented Oct 19, 2020

Thank you for contribution!

Please add simple test for new feature (reuse existed test code and testdata with adding artificial "rectangle" on input like on example).

@qchateau
Copy link
Contributor Author

Added the test, I hope it's good enough

Copy link
Member

@alalek alalek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great! Thank you for update 👍

Could you please take a look on comments below.
If you have some issues, then I can prepare proposals in the end of week.

modules/stitching/src/exposure_compensate.cpp Outdated Show resolved Hide resolved
modules/stitching/src/exposure_compensate.cpp Outdated Show resolved Hide resolved
modules/stitching/src/exposure_compensate.cpp Outdated Show resolved Hide resolved
modules/stitching/src/exposure_compensate.cpp Outdated Show resolved Hide resolved
modules/stitching/test/test_exposure_compensate.cpp Outdated Show resolved Hide resolved
@qchateau
Copy link
Contributor Author

I ended up reworking buildSimilarityMask to follow your advice and fix the bugs. I hope it addresses your comments. Let me know

Copy link
Member

@alalek alalek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great! Thank you 👍

modules/stitching/src/exposure_compensate.cpp Outdated Show resolved Hide resolved
modules/stitching/src/exposure_compensate.cpp Show resolved Hide resolved
modules/stitching/test/test_exposure_compensate.cpp Outdated Show resolved Hide resolved
@alalek alalek merged commit ea1e3fb into opencv:master Oct 22, 2020
@alalek alalek mentioned this pull request Nov 27, 2020
@qchateau qchateau deleted the similarity-mask branch December 7, 2020 09:04
a-sajjad72 pushed a commit to a-sajjad72/opencv that referenced this pull request Mar 30, 2023
* support similarity masks

* add test for similarity threshold

* short license in test

* use UMat in buildSimilarityMask

* fix win32 warnings

* fix test indentation

* fix umat/mat sync

* no in-place argument for erode/dilate
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.

2 participants