Android中Canny边缘检测器的快速自适应阈值

Hua*_*Lim 5 java android opencv image-processing image-recognition

根据我的研究,Canny Edge Detector对于检测图像边缘非常有用.在我付出很多努力之后,我发现OpenCV函数可以做到这一点,也就是说

    Imgproc.Canny(Mat image, Mat edges, double threshold1, double threshold2)
Run Code Online (Sandbox Code Playgroud)

但是对于低阈值和高阈值,我知道不同的图像有不同的阈值,所以我知道是否有任何快速自适应阈值方法可以根据不同的图像自动分配低和高阈值?

mev*_*ron 5

这相对容易.查看关于该主题的这篇较旧的SO帖子.

一种快速方法是计算当前图像的平均值和标准偏差,并对图像应用+/-一个标准偏差.

C++中的示例如下:

Mat img = ...;
Scalar mu, sigma;
meanStdDev(img, mu, sigma);

Mat edges;
Canny(img, edges, mu.val[0] - sigma.val[0], mu.val[0] + sigma.val[0]);
Run Code Online (Sandbox Code Playgroud)

另一种方法是计算图像的中值并且目标是中值之上和之下的比率(例如,0.66*medianValue1.33*medianValue).

希望有所帮助!