首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像分割中的轮廓补全

图像分割中的轮廓补全
EN

Stack Overflow用户
提问于 2013-11-02 06:22:46
回答 1查看 3.3K关注 0票数 4

我正在尝试使用机器学习(即随机森林)进行图像分割。该分类器利用许多不同的像素级特征来将像素分类为边缘像素或非边缘像素。我最近将我的分类器应用于一组即使是手动分割也相当困难的图像(Image segmentation based on edge pixel map),并仍在努力从结果概率图中获得合理的轮廓。我还将分类器应用于一组更容易的图像,当我将阈值调整为0.95时,获得了相当好的预测轮廓(Rand index > 0.97)。我感兴趣的是通过过滤从概率图中提取的轮廓来改善分割结果。

原图如下:

专家概述:

从我的分类器生成的概率图:

当我基于阈值0.95将图像转换为二进制时,这可以进一步细化:

我尝试填充概率图中的空洞,但这给我留下了很多噪音,有时还会合并附近的单元格。我也尝试了在openCV中寻找轮廓,但也不起作用,因为许多轮廓并不是完全相连的--轮廓中的一些像素将会丢失。

编辑:我最终在概率图上使用了Canny边缘检测。

EN

回答 1

Stack Overflow用户

发布于 2013-11-02 11:14:03

初始图像的对比度似乎很好,我想我们可以简单地设置阈值来获得细胞的良好估计。这是一个基于形态学区域的阈值图像滤波:

阈值:

基于区域的打开过滤器(这需要根据您正在研究的单元格的数据集进行设置):

基于区域的关闭过滤器(这需要根据您正在研究的单元格的数据集进行设置):

使用I-侵蚀的轮廓(I):

代码片段:

代码语言:javascript
复制
C is input image
C10 = C>10; %threshold depends on the average contrast in your dataset
C10_areaopen = bwareaopen(C10,2500); %area filters average remove small components that are not cells
C10_areaopenclose = ~bwareaopen(~C10_areaopen,100); %area filter fills holes 
se = strel('disk',1);
figure, imshow(C10_areaopenclose-imerode(C10_areaopenclose,se)) %inner contour

为了得到更平滑的形状,我猜可以对过滤后的图像执行精细的打开操作,从而删除单元的任何凹陷部分。此外,对于附加的单元,可以使用距离函数和距离函数上的分水岭来获得单元的分割:http://www.ias-iss.org/ojs/IAS/article/viewFile/862/765

我猜这也可以用于你的概率/置信度图,以执行基于非线性区域的过滤。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19736361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档