前面介绍了四种二值化算法,对于也是常使用的Otsu算法尝试使用cuda和opencv进行编写。。。其中基于CUDA编写Otsu完全参考另外一个博客大牛的写法,(原本想自己写,奈何水平有限。0.0)
1、opencv+cuda
opencv中的cuda里面的二值化算法是不包括Otsu的,大家可以翻看threshold.cu进行查看。
至于为什么不包括Otsu,后面我写cuda的时候有点小明白,因为Otsu的计算是通过计算最大类间方差从而得到最佳阈值。
如何实现Otsu呢,我们得到最佳阈值,在使用cuda::threshold
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/cudaarithm.hpp>
#include <opencv2/cudafeatures2d.hpp>
#include <opencv2/cudabgsegm.hpp>
#include <opencv2/cudacodec.hpp>
#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/cudalegacy.hpp>