[英]General questions about (canny) edge detection
我正面临一些关于图像边缘检测的一般问题(图像应该与我的问题无关)。
我希望精明的边缘检测器忽略某个像素值。 例如:如果灰度值不为0,它应该只寻找边缘。否则将检测到“假边缘”。
我通常使用 cv2.canny 函数,它运行得非常快而且效果很好。 问题是,它不可定制。 因此,我采用了自定义 Canny 边缘检测器 ( https://rosettacode.org/wiki/Canny_edge_detector#Python ) 的这段代码来对其进行自定义。 它可以工作,但计算边缘的速度太慢(需要几分钟,而 cv2.canny 函数需要几分之一秒)。 这是我的第一个问题。
有没有另一种方法可以使 cv2.canny 函数“忽略”某个特定值的像素。 想象一下图片中的某个地方是一个充满黑色的区域(如下图所示)。 我不希望边缘检测器检测到这个黑色区域的边缘。
提前致谢
这是一种方法:
使用快速 OpenCV 函数像往常一样计算你的 Canny。
现在找到图像中的所有黑色像素 - 您可以使用_,thr = cv2.threshold(im,1,255,cv2.THRESH_BINARY)
并使用形态学将这些区域扩大 1 个像素,以允许边缘稍微偏移经常是。
将普通 Canny 图像与您创建的蒙版相乘,使其在黑色区域中找到的任何内容都乘以零,即丢失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.