当前位置: 首页 > 知识库问答 >
问题:

用canny算子分割图像边缘

苏骏
2023-03-14

我使用精明的边缘检测器来检测输入图像的边缘。

在每个输入图像中,可以有两个对象(主对象和其中的另一个对象),如示例图像所示。因此,在这种情况下,我应该检测两条边

我根据输入图像自动确定上下阈值(使用中值和西格玛)。大多数情况下,canny工作正常,但有时当图像对比度不太好时,边缘检测失败,如以下示例所示(注意:-外边缘始终正确检测,内边缘出现问题)

Canny检测到外部边界的边缘,但内部对象的边缘检测失败。目前,我正在使用openCV和python。有什么方法可以改进canny边缘检测的结果吗

任何帮助都将不胜感激

共有1个答案

燕和裕
2023-03-14

Canny可能不是这里最好的工具,但只是一个想法:你试过直方图均衡吗?它会提高对比度,所以卡尼很可能会工作得更好。

 类似资料:
  • 我接到一个任务,要找到一种算法,将图G(V,E)分成几对相邻边(给图上色,这样每对相邻边都有相同的颜色)。 我试图通过绘制一些随机图表来解决这个问题,并得出了一些结论: 如果顶点连接到2(4,6,8…)阶数为1的顶点构成一对边 如果阶数为1的顶点直接连接到循环,则循环的哪条边与单条边配对并不重要 然而,我无法得出任何其他结论,所以我尝试了另一种方法。我考虑过使用DFS,找到连接点,并将图划分为具有

  • 我需要在MATLAB中实现一个基于连通分量算法原理的图像分割函数,但需要做一些修改。这是为了非常简单的2D图像,有一个背景颜色和一些不同颜色的对象。 其思想是,将图像作为一个矩阵,我提供了一个选择背景颜色的工具(它将对每个图像变化)。然后,当图像的背景颜色的值被选中时,我要对图像中的所有对象进行分割,结果应该是一个带标签的矩阵,图像大小相同,背景为0,每个对象有不同的数字。 这是我的意思的一个生动

  • 目标 在本章中, 我们将学习使用分水岭算法实现基于标记的图像分割 我们将看到:cv.watershed() 理论 任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰,低强度表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局部最小值)。随着水位的上升,根据附近的山峰(坡度),来自不同山谷的水明显会开始合并,颜色也不同。为了避免这种情况,你要在水融合的地方建造屏障。你继续填满水,建造障

  • 目标 在这一章当中, 我们将学习使用基于标记的分水岭算法来进行图像分割 我们将看到:cv2.watershed() 理论基础 任何灰度图像可以被看作是一个地形表面,其中高强度表示峰和山,而低强度表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局部最小值)。随着水位上升,根据附近的山峰(梯度),来自不同山谷的水,明显不同的颜色将开始合并。为了避免这种情况,你在水合并的地方建立障碍。你继续填

  • 高分辨率遥感影像中丰富的地物目标与空间语义关系必须在多个尺度下才能充分表达和描述。多层次图像分割的目标就是对一幅图像通过一次分割生成具有网络层次关系的多尺度层次表达,为图像分类与地物目标提取提供基础。

  • 我得到了一个图像,也得到了图像中区域的边界。例如,我有一个逻辑类型的掩码,边界的值为1,而对于其他像素,该值为0。我想对边界分割的区域进行标注,而我不确定如何基于连续边界对区域进行分割和标注。 边界看起来是这样的: 有了上面的图表,将会识别出四个区域。