Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 开放CV中轮廓估计的Canny边缘与阈值_Opencv_Image Processing_Computer Vision_Contour_Canny Operator - Fatal编程技术网

Opencv 开放CV中轮廓估计的Canny边缘与阈值

Opencv 开放CV中轮廓估计的Canny边缘与阈值,opencv,image-processing,computer-vision,contour,canny-operator,Opencv,Image Processing,Computer Vision,Contour,Canny Operator,我正在使用OpenCV进行图像处理应用程序,该应用程序涉及图像中的轮廓估计。我想知道的是,对图像进行阈值化(就像他们所做的那样)或使用Canny Edge算法()是否会产生更好的结果。这是涉及算法分析还是我遗漏了什么?很明显,边缘检测很精明。它做了一系列的事情来确保结果中只会出现强边。阈值化只是查看强度,看看每个值是小还是大,我们分别得到“边缘”点但是,根据场景的复杂性,阈值和边缘检测将产生相同的结果。例如,如果您有一个干净的图像,其中包含多个清晰的对象,这些对象在前景和背景之间具有明显的强度差

我正在使用OpenCV进行图像处理应用程序,该应用程序涉及图像中的轮廓估计。我想知道的是,对图像进行阈值化(就像他们所做的那样)或使用Canny Edge算法()是否会产生更好的结果。这是涉及算法分析还是我遗漏了什么?

很明显,边缘检测很精明。它做了一系列的事情来确保结果中只会出现强边。阈值化只是查看强度,看看每个值是小还是大,我们分别得到“边缘”点但是,根据场景的复杂性,阈值和边缘检测将产生相同的结果。例如,如果您有一个干净的图像,其中包含多个清晰的对象,这些对象在前景和背景之间具有明显的强度差异,则可以使用边缘检测或阈值处理。如果您有一个更复杂的图像,其中不同区域的对比度不同,或者如果您有多个具有不同强度的对象,那么阈值化将不会给您带来好的结果,因为不可避免地会包含不属于任何适当对象的像素。这就是为什么边缘检测更好,因为它是一个局部算子,而阈值是全局。阈值化将一套原则应用于图像中的每一个像素。边缘检测将图像分解为多个面片,并确定每个面片中是否发生了某些情况


如果您想从中吸取一些东西,它们之间的区别在于阈值更多地用于对象提取,而边缘检测是处理管道中的预处理步骤,例如轮廓估计、对象检测和识别以及特征分析。阈值化是一种非常快速和肮脏的方法,可以查看是否发生了什么事情,或者提取出“活动”的东西,而边缘检测更适合于计算机视觉相关的任务


我不想解释边缘检测有多精明,我想让你们参考一些文献

  • 德雷塞尔大学的这一页让我很快开始学习:
  • 本页来自Computer Vision Online,内容更为深入:

希望这有帮助

@user3829158-我的荣幸:)祝你好运!