基于边缘像素图的图像分割
edge-detection
image-processing
image-segmentation
opencv
4
0

我已经在Python中训练了一个分类器,用于将单元格图像中的像素分类为边缘或非边缘。我已经在一些图像数据集上成功使用了它,但是这个特定的数据集遇到了问题,即使是人眼也似乎很模棱两可。我不知道任何现有的可以准确细分的自动化技术。

经过预测,我得到以下图像:

预测图

我对图像处理还比较陌生,不确定如何进行细胞的最终分割。我简要地尝试了几种不同的技术-即霍夫圆变换,水平集,骨架化,轮廓查找-但没有一个真正做到了。我是不是只是正确地调整参数,还是那里有更好的技术?

顺便说一下,这里是正确的提纲供参考。

正确的轮廓

和原始图像:

在此处输入图片说明

和连续概率图:

连续概率图

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

看到分类器中边缘/非边缘像素的图片,我们可以看到输入的渐变图像已经基本给出了您所学习的分类器的结果。但是置信度图显示了一个很好的解决方案,除了:1.它们是相互连接的水平集,具有不同的大小。 2.您的单元中有嘈杂的亮点,导致分类器的输出错误。 (也许可以考虑进行一些平滑处理)3.我想表征每个单元的内部可能会更容易:灰度变化,平均大小。了解这些分布可能会为您提供更好的检测结果。在拓扑上,我们有一组嵌套在较大灰度值中的低灰度值。要执行此操作,可以使用带有GMM模型的Graphcuts来支付单位成本,并使用成对项的学习梯度分布

收藏
评论

边界检测方面的工作非常出色。我曾经研究过类似的细分问题。

理论:

一旦获得了边缘图,其中e(i,j)表示像素i,j的“边缘度”程度i,j您就需要对图像进行分割,从而尽可能地尊重边缘图。
为了以更正式的方式制定此“尊重边缘图”,我建议您看一下相关性聚类(CC)功能:
CC功能基于相邻像素之间的成对关系来评估分割的质量,无论它们是应该在同一群集中(它们之间没有边缘)还是在不同群集中(它们之间都存在边缘)。
看一看上述论文第7.1节中的示例。
CC也用于医学(神经元)成像中的类似分割问题,例如参见此处


实践

一旦您说服CC确实适合您的问题,仍然存在着一个问题,即如何将二进制边缘图准确地转换为CC可以处理的亲和度矩阵。请记住,CC需要一个(通常是稀疏的)邻接矩阵作为输入,假定矩阵对的像素属于正数,而正则项属于正数,而像素对的负数属于正数。

这是我的建议:

  1. 边缘贴图中的边缘看起来很粗,无法很好地定位。我建议将非最大压抑或形态学稀释作为预处理阶段。

  2. 一旦具有更好的局部边缘,就可以忽略“边缘”像素,而只能使用“非边缘”像素,将其称为“活动”。
    两个有效像素彼此相邻:它们之间没有“边缘”像素-它们应该在一起。因此,紧邻的nieghbors的邻接矩阵应具有正整数。
    考虑一条线上的三个像素,两个端点是“活动”像素:如果中间一个是边缘,则两个活动像素不应属于同一簇-邻接矩阵中的相应条目应为负。如果中间像素也处于活动状态,则邻接矩阵中的相应条目应为正。

  3. 考虑所有可能的相邻对和三元组(诱导24连接的网格图),您可以构造具有适合CC的正负条目的亲和力矩阵。

  4. 给定一个矩阵,您应该搜索具有最佳CC得分的细分(优化阶段)。我在这里有Matlab代码。您也可以使用出色的openGM软件包。

  5. 优化将仅对活动像素进行分区,您可以将其映射回输入图像域,而将边缘像素保留为未分配给任何段。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号