Image OpenCV查找沿直线的所有有效边
我有一个图像,我用一种叫做Rake的方法在LabView中分析它。基本上,该方法所做的是找到图像上沿平行线的所有有效边。 (如链接底部最后一张图片所示)。 此函数的美妙之处在于,它将为您提供大于某个边缘强度的所有边缘点,并且每个边缘仅生成一个边缘点(边缘线的厚度为1像素) 我想用OpenCV做一些类似的事情。我可以想象这样做的方式是 -用我选择的过滤器解构Canny算子, -具有两个阈值的边缘值的滞后阈值 -其次是非最大值抑制 -沿该线读取像素并标记所有大于我的阈值的像素 问题是canny作为一个束来了,我无法单独找到非最大值抑制函数。 有人知道一种类似于我描述的手术的方法吗Image OpenCV查找沿直线的所有有效边,image,opencv,labview,edge-detection,Image,Opencv,Labview,Edge Detection,我有一个图像,我用一种叫做Rake的方法在LabView中分析它。基本上,该方法所做的是找到图像上沿平行线的所有有效边。 (如链接底部最后一张图片所示)。 此函数的美妙之处在于,它将为您提供大于某个边缘强度的所有边缘点,并且每个边缘仅生成一个边缘点(边缘线的厚度为1像素) 我想用OpenCV做一些类似的事情。我可以想象这样做的方式是 -用我选择的过滤器解构Canny算子, -具有两个阈值的边缘值的滞后阈值 -其次是非最大值抑制 -沿该线读取像素并标记所有大于我的阈值的像素 问题是canny作为一
谢谢我不确定我是否完全理解这个问题,但是关于非最大抑制部分: 二维非最大抑制的一种简单方法是: 放大图像。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)