繁体   English   中英

关于(canny)边缘检测的一般问题

[英]General questions about (canny) edge detection

我正面临一些关于图像边缘检测的一般问题(图像应该与我的问题无关)。

  1. 我希望精明的边缘检测器忽略某个像素值。 例如:如果灰度值不为0,它应该只寻找边缘。否则将检测到“假边缘”。

    我通常使用 cv2.canny 函数,它运行得非常快而且效果很好。 问题是,它不可定制。 因此,我采用了自定义 Canny 边缘检测器 ( https://rosettacode.org/wiki/Canny_edge_detector#Python ) 的这段代码来对其进行自定义。 它可以工作,但计算边缘的速度太慢(需要几分钟,而 cv2.canny 函数需要几分之一秒)。 这是我的第一个问题。

    有没有另一种方法可以使 cv2.canny 函数“忽略”某个特定值的像素。 想象一下图片中的某个地方是一个充满黑色的区域(如下图所示)。 我不希望边缘检测器检测到这个黑色区域的边缘。

在此处输入图片说明

  1. 在图像中检测到一些清晰的边缘后,我想根据这些边缘创建蒙版。 我在网上找不到任何例子。 因此,如果有人知道在哪里可以找到有关如何从边缘创建蒙版的好教程,那么如果您能帮助我,那就太好了。

提前致谢

这是一种方法:

  • 使用快速 OpenCV 函数像往常一样计算你的 Canny。

  • 现在找到图像中的所有黑色像素 - 您可以使用_,thr = cv2.threshold(im,1,255,cv2.THRESH_BINARY)并使用形态学将这些区域扩大 1 个像素,以允许边缘稍微偏移经常是。

  • 将普通 Canny 图像与您创建的蒙版相乘,使其在黑色区域中找到的任何内容都乘以零,即丢失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM