gpt4 book ai didi

image-processing - opencv中Canny操作自动计算高低阈值

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:48 26 4
gpt4 key购买 nike

在 OpenCV 中,canny 运算符的低阈值和高阈值是强制性的:

cvCanny(input,output,thresh1,thresh2)

在 Matlab 中,有一个选项可以自动计算它们:

edge(input,'canny')

我研究了 Matlab 的边缘代码,这真的不是直接自动计算的代码。

您是否知道 canny 运算符的任何实现以及 OpenCV 的自动阈值计算?

最佳答案

我在寻找一种自动计算 Canny 阈值的方法时偶然发现了这个答案。

希望这有助于任何正在寻找确定 Canny 算法的自动阈值的好方法的人...


如果你的图像由不同的前景和背景组成,那么前景对象的边缘可以通过以下方式提取:

  1. 使用以下方法计算 Otsu 的阈值:

    double otsu_thresh_val = cv::threshold(
    orig_img, _img, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU
    );

    我们不需要_img。我们只对 otsu_thresh_val 感兴趣,但不幸的是,目前 OpenCV 中没有允许您只计算阈值的方法。

  2. 使用 Otsu 的阈值作为 Canny 算法的较高阈值和较低阈值的一半。

    double high_thresh_val  = otsu_thresh_val,
    lower_thresh_val = otsu_thresh_val * 0.5;
    cv::Canny( orig_img, cannyOP, lower_thresh_val, high_thresh_val );

与此相关的更多信息可以在 this paper: The Study on An Application of Otsu Method in Canny Operator 中找到.可以找到 Otsu 实现的解释 here .

关于image-processing - opencv中Canny操作自动计算高低阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com