边缘检测器检测到的连接边缘


14

我有一个从Canny边缘检测器获得的二进制图像。在中心没有很好地检测到边缘,我需要加入它们。边缘的连接取决于方向和邻域。如果顶点低于阈值(例如小于5像素距离),则需要连接顶点。如果我的几乎线性特征定位良好,则应放宽此阈值。(这是最好的情况。) 图片

我尝试了霍夫变换,但对我来说不起作用,因为我没有直线。膨胀和侵蚀也不好;他们使图像更加混乱。

我尝试的方法是先检测顶点和节点(在MATLAB中使用bwmorph),然后将叶子作为单独的功能。这样做如下:

  1. 在3x3窗口中扫描,寻找邻居。
  2. 遍历完整的连接对象。
  3. 尝试拟合一条线(或者可能是二次多项式)。
  4. 逐个功能检查是否值得连接。

实现不是很简单,因为需要连接顶点的决策部分比较棘手。


我找到了一个有趣的解决方案来查找分支。MATLAB可以很容易地给出节点的位置。MATLAB还可以标记连接的特征。因此,您可以选择一项连接的功能。查找节点。将这些节点设置为0。基本上断开功能并再次标记它们。您将在树上有树枝。这需要较少的手动编程,结果似乎还不错。一些输入?
Naresh 2012年

对于连接部分,我现在正在考虑寻找大型功能并认为它们更可靠。然后,如果它们是直线(检查适应性),则将其转换为极坐标并像霍夫变换一样搜索邻域。对于较大的要素,搜索半径较大(与大小成比例)。我正在执行此代码。结果在路上。评论请
Naresh 2012年

Answers:


4

这可能不是完整的解决方案,但会为您提供良好的指导。

基本上,说边缘匹配的关键标准是什么?边缘的“局部”梯度匹配并且在某种程度上,距离相对于边缘连续多长时间是合理的。

如果您有几何形状的边缘(例如长直线),霍夫将立即完成非常无缝的工作。但这在边是任意曲线时不起作用。在这种情况下,您仍然可以将曲线视为大致逐段的恒定段(在您的情况下足够好),因此,您应该在本地使用Hough。也就是说,您可以拍摄一小部分图像(例如一个块)来计算霍夫峰并识别一些峰值。在此基础上,您可以确定脱霍夫正在创建有意义的差距,如果是,请继续努力或继续前进。

较小的间隙被填充后,您可以将其扩展以容纳更大的尺寸。峰会更多,但您可以从中选择更少。


感谢迪潘,我也想到了这一点。这将是昂贵的操作,但我可以提取一些信息。但是有时Hoguh变形也不给我连接线。霍夫只照顾完美的直线。并且不关心像素的连通性。它仅使一条直线适合直线上的3个或更多随机像素。我正在编码我的假设。我将在这里发布结果以供进一步讨论。Naresh
Naresh 2012年

我同意,但是当霍夫本地化时,与此问题相关的噪音变得容易。其次,对于嘈杂的边缘,您会看到较小的多个峰。我们将其转换为主峰,并将其视为连接的边缘。是的,这只是一个近似值-但是您经历的任何回归和预测过程始终都是这种情况。想法是查看哪些线在一个小区域共享。θ
Dipan Mehta 2012年

4

确实,这并不是一件容易的事情……您可以尝试完全使用Graph结构。首先从图像中提取所有连接的像素,并将它们插入到Graph中,其中相邻节点通过一条边连接。您可以舍弃小于M个节点的图(以排除与图像无关的小斑点)。

在此过程结束时,您将具有一组断开连接的图。(从您的图像来看,这些树不完全是树,因为其中存在循环)

您可以通过从某个随机节点开始并执行DFS来找到每个图的极点(每个图的外围的极点像素)。

在此过程结束时,您将为每个图具有一组像素坐标,这些像素坐标对应于极有可能形成连接的极点。

现在,您可以尝试仅用一条直线连接最近的极值点邻居(距离<= 5)。

但是,如果您要考虑导致该极值像素的线段的斜率,则可以在达到该极值像素之前尝试将线“拟合”到N个像素。因此,如果N = 5,则分支的最后5个像素将用于估算线。

因此,对于每个最近的邻居对,您现在还有另一件事可以用作判断是否应连接两个线段的标准(即,极点距离<= 5像素和近似相等的线斜率)。

为了最大程度地减少可能使您的线条在分支的尖端附近出现锯齿(从而扭曲您的斜率估计值)的噪声影响,您可以尝试对图形应用简化步骤(这是另一个要点(除上面的DFS之外))使用Graph结构)。例如,您可以删除Graph的后续节点,这些节点会使直线以大于某些截止点的角度“弯曲”(有关更复杂的信息,请参见此处)。这样,您将使“较简单”的线条大致适应由图像像素形成的段的较大部分的方向。

在大多数情况下,这可能会导致人脉相通(根据您发布的图像判断),但仍然会给您带来一些挑战。例如,如何连接分支之一在连接点附近中断的“ Y”形中断模式?(即,您必须有一个“连续”折弯,并且必须与与其“混合”的线段相连)。也许您可以查看这种情况的普遍程度,然后再修改连接标准。

另外,也许值得研究如何改善图像采集(例如提高分辨率)。


感谢您的好评。是的,您的观察是对的。它不是一棵树,所以最好制作一个图。这也将帮助我找到周期。问题是,MATLAB在bioinfo工具箱中实现了图形,我不能认为大多数人都会拥有图形。我最能走的就是图像处理工具箱。我也考虑过道格拉斯·皮克(Douglas-peucker)。但是在咨询了GIS专家之后,我意识到这可能会使事情变得更复杂,而且我可能会相交。另外,我还需要查看图形中的不同线段,因为我需要10个像素才能形成一条线,而且我可能已经分叉了。
Naresh 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.