基于边缘像素图的图像分割 [英] Image segmentation based on edge pixel map

查看:168
本文介绍了基于边缘像素图的图像分割的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have trained a classifier in Python for classifying pixels in an image of cells as edge or non edge. I've used it successfully on a few image datasets but am running into problems with this particular dataset, which seems pretty ambiguous even to the human eye. I don't know of any existing automated technique that can segment it accurately.

预测后,我得到以下图像:

After prediction I obtain the following image:

我对图像处理相对较新,不确定如何继续实际获得最终版本细胞的分割。我简要地尝试了一些不同的技术 - 即霍夫圆形变换,水平集,骨架化,轮廓发现 - 但没有一个真正完成这个技巧。我只是没有正确调整参数,还是有更好的技术?

I am relatively new to image processing and am unsure with how to proceed with actually obtaining the final segmentations of the cells. I have briefly tried a few different techniques - namely Hough circular transform, level sets, skeletonization, contour finding - but none have really done the trick. Am I just not tuning the parameters correctly or is there a better technique out there?

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

Here are the correct outlines, by the way, for reference.

原始图片:

连续概率图:

推荐答案

非常好的工作边界检测。我曾经处理类似的分段问题。

Very nice work on boundary detection. I used to work on similar segmentation problems.

获得边缘图后<$> c $ c> e(i,j)表示像素的边缘度 i,j 您想要分割尽可能尊重边缘地图的图像。

为了以更正式的方式制定这个尊重边缘地图,我建议你看看 相关聚类(CC) 功能:

CC功能根据相邻像素之间的成对关系来评估分割的质量,无论它们是否应位于同一群集(它们之间没有边缘)或不同群集中(它们之间有一个边缘。)

看一下上述论文。

CC用于类似的细分医学(神经元)成像中的问题,例如,这里

Once you obtained your edge map where e(i,j) indicates the "edge-iness" degree of pixel i,j you would like a segmentation of the image that would respect the edge map as possible.
In order to formulate this "respect the edge map" in a more formal fashion I suggest you look at the Correlation clustering (CC) functional:
The CC functional asses the quality of a segmentation based on pair-wise relations between neighboring pixels whether they should be in the same cluster (no edge between them) or in different clusters (there is an edge between them).
Take a look at the example at section 7.1 of the aforementioned paper.
CC is used for similar segmentation problems in medical (neuronal) imaging as well, see e.g., here.

一旦你说服自己CC确实是适合你的问题的公式,仍然存在如何将二进制边缘映射转换为CC可以处理的亲和度矩阵的问题。请记住,CC需要作为输入(通常是稀疏的)邻接矩阵,其中假定属于同一段的像素对的正条目,以及假定属于不同段的像素对的负条目。

Once you convince yourself that CC is indeed an appropriate formulation for your problem, there is still the question of how exactly to convert your binary edge map into an affinity matrix that CC can process. Bear in mind that CC needs as an input a (usually sparse) adjacency matrix with positive entries for pairs of pixels assuming to belong to the same segment, and negative entries for pairs of pixels assumed to belong in different segments.

这是我的建议:


  1. 边缘地图中的边缘看起来很厚而不是很好地本地化。我建议将非最大抑制或形态学作为预处理阶段。

  1. The edges in your edge map looks quite thick and not well localize. I suggest a non-max supression, or morphological thining as a pre-processing stage.

一旦有了更好的局部化边缘,就会忽略边缘只使用非边缘像素,我们称它们为活动。

两个相邻的有效像素:它们之间没有边缘像素 - 它们应该是一起。因此,对于移民的nieghbors应该具有正的entires。

考虑一条线上的三个像素,两个端点是有效像素:如果中间的一个是边缘,那么两个有效像素不应该属于同一群集 - 对象矩阵中的相应条目应为负数。如果中间像素也处于活动状态,则对象矩阵中的相应条目应为正。

Once you have a better localized edges, you ignore the "edge" pixels and only work with the "non-edge" pixels, lets call them "active".
Two active pixels that are next to each other: there is no "edge" pixel between them - they should be together. So the adjecency matrix for immidiate nieghbors should have positive entires.
Consider three pixels on a line, with the two endpoints are "active" pixels: if the middle one is an edge then the two active pixels should not belong to the same cluster - the corresponding entries in the adjecency matrix should be negative. If the middle pixel is also active than the corresponding entries in the adjecency matrix should be positive.

考虑所有可能的相邻对和三元组(引入24连接网格图表)允许您构建一个具有适合CC的正和负条目的亲和度矩阵。

Consider all possible neighboring pairs and triplets (inducing 24-connected grid graph) allows you to construct an affinity matrix with positive and negative entries suitable for CC.

给定矩阵,您应该搜索具有最佳CC分数的分段(优化阶段)。我有Matlab代码这里。您还可以在C++\"> openGM 中使用优秀的包。

Given a matrix you should search for the segmentation with the best CC score (optimization stage). I have Matlab code for this here. You can also use the excellent openGM package.

优化只会产生活动像素的分区,您可以将其映射回输入图像域,将边缘像素保留为un - 分配给任何细分。

The optimization will result with a partition of the active pixels only, you can map it back to the input image domain, leaving the edge pixels as un-assigned to any segment.

这篇关于基于边缘像素图的图像分割的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆