- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 OpenCV 中,canny 运算符的低阈值和高阈值是强制性的:
cvCanny(input,output,thresh1,thresh2)
在 Matlab 中,有一个选项可以自动计算它们:
edge(input,'canny')
我研究了 Matlab 的边缘代码,这真的不是直接自动计算的代码。
您是否知道 canny 运算符的任何实现以及 OpenCV 的自动阈值计算?
最佳答案
我在寻找一种自动计算 Canny 阈值的方法时偶然发现了这个答案。
希望这有助于任何正在寻找确定 Canny 算法的自动阈值的好方法的人...
如果你的图像由不同的前景和背景组成,那么前景对象的边缘可以通过以下方式提取:
使用以下方法计算 Otsu 的阈值:
double otsu_thresh_val = cv::threshold(
orig_img, _img, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU
);
我们不需要_img
。我们只对 otsu_thresh_val
感兴趣,但不幸的是,目前 OpenCV 中没有允许您只计算阈值的方法。
使用 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/
哟 快速提问:Nhibernate HiLo id 在数据库中是唯一的吗? 我问的原因是我们有多个实体,这些实体有一个与之关联的图像。在客户端 - 我只是将这些图像存储在一个文件夹中,使用实体 ID
我有一个 Arduino,我想知道 HIGH 和 LOW 到底是什么意思,就实际值而言......它们是否有签名 ints? 无符号整数? 无符号字符?他们的值(value)观是什么?我猜测 HIGH
全部。我对编程很陌生,我试图找出为什么我的代码不能正常工作。它会一直运行良好,直到您告诉计算机它的第一个猜测是否太高 (h) 或太低 (l)。比如说,如果猜测太高,并告诉计算机,之后的每次猜测都会继续
我是一名优秀的程序员,十分优秀!