-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Add Otsu's method to cv::cuda::threshold #3943
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
base: 4.x
Are you sure you want to change the base?
Conversation
cc @cudawarped |
@troelsy Your test currently doesn't use the Otsu method and when it does it fails the assert. I can't review the PR until this is fixed. How does the performance of this compare to the CPU version? |
You're measuring the API calls there not the execution time of the kernels/memory allocs etc.. As you are including synchronization this should be about the same but in general it is not the same thing. If there wasn't any synchronization the time for the API calls would be much much smaller than the execution time.
You should be able to reduce the allocations/deallocations by using |
|
||
// TODO: Replace this is cv::cuda::calcHist | ||
template <uint n_bins> | ||
__global__ void histogram_kernel( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@asmorkalov Due to a circular dependency when adding the opencv_cudaimgproc to opencv_cudaarithm in CMakeLists.txt cv::cuda::calcHist
cannot be called from here. To avoid refactoring would it make sence at a minimum to only have a single implementation of calcHist
even if it is duplicated or do you have a better suggestion? i.e. copy the implemntation from cv::cuda::calcHist
here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@asmorkalov any thoughts on this?
@cudawarped What's the next step? The test fails, but it says Should I do something about the histogram implementation or should we let it be for now? |
Please ignore the error. Looks like some bug in our CI scripts. I'll take a look. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍
I implemented Otsu's method in CUDA for a separate project and want to add it to cv::cuda::threshold
I have made an effort to use existing OpenCV functions in my code, but I had some trouble with
ThresholdTypes
andcv::cuda::calcHist
. I couldn't figure out how to includeprecomp.hpp
to get the definition ofThresholdTypes
. Forcv::cuda::calcHist
I tried addingopencv_cudaimgproc
, but it creates a circular dependency oncudaarithm
. I have include a simple implementation ofcalcHist
so the code runs, but I would like input on how to usecv::cuda::calcHist
instead.Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
Patch to opencv_extra has the same branch name.