ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图像分割中的轮廓完成

2019-11-22 15:07:55  阅读:296  来源: 互联网

标签:contour image-segmentation opencv image-processing python


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

这是原始图像:

专家概述:

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

当我基于0.95的阈值将图像转换为二进制图像时,可以进一步完善:

我尝试在概率图中填充孔,但是这给我留下了很多杂音,有时还合并了附近的单元格.我还在openCV中尝试过轮廓查找,但是由于这些轮廓中的许多轮廓未完全连接,因此无法正常工作-轮廓中到处都缺少一些像素.

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

解决方法:

初始图像似乎形成了很好的对比,我想我们可以简单地通过阈值获得细胞的良好估计.这是基于形态学区域的阈值图像过滤:

阈:

基于面积的开放过滤器(需要根据您所研究的细胞数据集进行设置):

基于区域的关闭过滤器(需要根据您所研究的细胞数据集进行设置):

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

程式码片段:

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

我猜这也可以用于您的概率/置信度图上,以执行基于非线性区域的滤波.

标签:contour,image-segmentation,opencv,image-processing,python
来源: https://codeday.me/bug/20191122/2060680.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有