image - OpenCV查找沿线的所有重要边

我有一幅图像,我曾经使用一种称为Rake的方法在LabView中进行分析。基本上,该方法的作用是找到图像上沿平行线的所有有效边缘。
http://zone.ni.com/reference/en-XX/help/370281P-01/imaqvision/imaq_rake_3/(在链接底部的最后一个图像中看到)。
此功能的优点在于,它将为您提供所有大于特定边缘强度的边缘点,并且每个边缘只会生成一个边缘点(边缘线的厚度为1像素)

我想使用OpenCV做类似的事情。我可以想象的方式是
-用我选择的过滤器解构Canny运算符,
-具有两个阈值的边缘值的滞后阈值
-随后非最大抑制
-读取该行上的像素并标记所有大于我的阈值的像素

问题是canny是 bundle 销售的,我自己找不到nonmaxima抑制函数。
有人知道做与我描述的操作类似的方法吗?

谢谢

最佳答案

不知道我是否完全理解这个问题,但是关于非 bundle 的非最大抑制部分:

二维非最大抑制的一种简单方法是:
放大图像。 OpenCV中的膨胀将每个像素的值设置为局部邻域的max()。重复几次或使用更大的内核以获得所需的半径。

然后将膨胀后的图像与原始图像进行比较,并将所有具有不同值的像素设置为零。

其余像素是局部最大值。

 # some code I once used in OpenCV/Python
 # given an image, sets all pixels to zero, unless they are local maxima
 def supressNonMaxima(img):
     localMax = cvCreateImage (cvGetSize(img), IPL_DEPTH_16U, 1)
     cvDilate(img, localMax, null, 3)  # max() with radius of 3

     mask = cvCreateImage( cvGetSize(img), 8, 1)
     cvCmp(img, localMax, mask, CV_CMP_LT)

     cvSet(img,0,mask)

https://stackoverflow.com/questions/9814183/

相关文章:

android - 在android ndk中使用opencv haarcascades

jsf - Primefaces 数据表行编辑器

opencv - 如何在opencv中的多个校准摄像机中跟踪单个标记

opencv - 当 useProvidedKeypoints = true 时,cvExtract

opencv - 在cvgoodfeaturesTotrack中识别点后如何连接点

opencv - 查找特定区域内的轮廓

opencv - 使用opencv_train级联时出错

opencv - 如何使用OpenCV停止随机林中的随机采样?

python - SimpleCv-IOError (“cannot identify image

android - 适用于 Android 的 OpenCV : Autofocus native