我已经在Python中训练了一个分类器,用于将单元格图像中的像素分类为边缘或非边缘.我已经成功地在一些图像数据集上使用它,但是遇到了这个特定数据集的问题,即使对人眼来说也是如此.我不知道任何可以准确分割它的现有自动化技术.
预测后,我得到以下图像:
我对图像处理相对较新,不确定如何继续实际获得细胞的最终分割.我简要地尝试了一些不同的技术 - 即霍夫圆形变换,水平集,骨架化,轮廓发现 - 但没有一个真正完成这个技巧.我只是没有正确调整参数,还是有更好的技术?
顺便提一下,这是正确的轮廓供参考.
和原始图像:
和连续概率图:
python opencv image-processing edge-detection image-segmentation
我正试图填写下图中的漏洞.
当我使用SciPy的binary_fill_holes()时,我通常会成功,除了触摸图像边框的对象.
是否有任何现有的Python函数可以填充接触边框的对象的漏洞?我尝试在图像周围添加白色边框,但这只会导致整个图像被填充.
是否有一个相当于np.unique()
或bincount()
为OpenCV的Mat
?我正在使用C++,所以不能只转换为numpy
数组.
我正在尝试使用机器学习(即随机森林)进行图像分割。分类器利用许多不同的像素级特征将像素分类为边缘像素或非边缘像素。我最近将我的分类器应用于一组即使手动也很难分割的图像(基于边缘像素图的图像分割),并且仍在努力从结果概率图中获得合理的轮廓。我还将分类器应用于一组更简单的图像,当我将阈值调整为 0.95 时,我获得了非常好的预测轮廓(兰德指数 > 0.97)。我有兴趣通过过滤从概率图中提取的轮廓来改善分割结果。
这是原始图像:
专家概述:
从我的分类器生成的概率图:
当我基于 0.95 的阈值将图像转换为二进制时,可以进一步改进:
我尝试填充概率图中的漏洞,但这给我留下了很多噪音,有时会合并附近的单元格。我也尝试过在 openCV 中查找轮廓,但这也不起作用,因为这些轮廓中的许多都没有完全连接 - 轮廓中这里和那里会丢失一些像素。
编辑:我最终在概率图上使用了 Canny 边缘检测。