hof*_*fer 32 opencv image-processing
在openCV中,canny运算符的低阈值和高阈值是强制性的:
cvCanny(input,output,thresh1,thresh2)
Run Code Online (Sandbox Code Playgroud)
在Matlab中,有一个自动计算的选项:
edge(input,'canny')
Run Code Online (Sandbox Code Playgroud)
我已经研究了Matlab的边缘代码,这实际上并不是直接自动计算的.
您是否了解canny运算符的任何实现以及opencv的自动阈值计算?
谢谢
VP.*_*VP. 46
当我在寻找一种自动计算Canny阈值的方法时,我偶然发现了这个答案.
希望这有助于任何寻找确定Canny算法自动阈值的好方法的人......
如果您的图像由不同的前景和背景组成,则前景对象的边缘可以使用以下提取:
使用以下方法计算Otsu的阈值:
double otsu_thresh_val = cv::threshold(
orig_img, _img, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU
);
Run Code Online (Sandbox Code Playgroud)
我们不需要_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 );
Run Code Online (Sandbox Code Playgroud)有关这方面的更多信息可以在本文中找到:Otsu方法在Canny算子中的应用研究.可在此处找到Otsu实施的解释.
Luc*_*ngo 16
您可以使用输入灰度图像的平均值,并使用标准偏差定义下限和上限阈值.您可以在此处获得更详细的解释和opencv代码:http: //www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/
小智 7
此外,还有一些代码可以自动执行此操作,方法是将其放入OpenCV构建中.我在OpenCV用户邮件列表中找到了它,所以没有保证.:)
讨论:http://opencv-users.1802565.n2.nabble.com/Automatic-thresholding-in-cvCanny-td5871024.html GitHub(代码):https://gist.github.com/756833
| 归档时间: |
|
| 查看次数: |
42741 次 |
| 最近记录: |