Scikit learn 在训练之前或作为基于像素的分类的后处理执行的图形切割

Scikit learn 在训练之前或作为基于像素的分类的后处理执行的图形切割,scikit-learn,image-segmentation,supervised-learning,Scikit Learn,Image Segmentation,Supervised Learning,我目前正在使用在Scikit learn中实现的简单监督分类器对图像执行基于像素的分类。首先将图像重塑为单像素强度的向量,然后按照以下步骤进行训练和分类: 来自sklearn.linear\u模型导入SGDClassizer 分类器=sgdclassizer(详细=True) fit(训练数据、训练目标) 预测=分类器。预测(测试数据) 基于像素的分类的问题在于产生的分类图像的噪声性质。为了防止这种情况,我想使用Graph Cut(例如Boykov-Kolmogorov实现)来考虑像素之间的空

我目前正在使用在
Scikit learn
中实现的简单监督分类器对图像执行基于像素的分类。首先将图像重塑为单像素强度的向量,然后按照以下步骤进行训练和分类:

来自sklearn.linear\u模型导入SGDClassizer
分类器=sgdclassizer(详细=True)
fit(训练数据、训练目标)
预测=分类器。预测(测试数据)
基于像素的分类的问题在于产生的分类图像的噪声性质。为了防止这种情况,我想使用Graph Cut(例如Boykov-Kolmogorov实现)来考虑像素之间的空间上下文。但是,在Python(,)和C++中发现的隐含(OpenGM和原始实现:和)不显示如何从图像到图,除了在MATLAB中的[2 ],并且我对图形切割和Matlab的任何一个都不太熟悉。 因此,我的问题基本上是如何将图形切割集成到以前的分类中(例如,在培训之前或作为后处理)

我查看了Scikit image中的图形算法,但这些算法仅适用于具有离散值的RGB图像,而我的像素值是连续的。

我发现这或多或少符合我的要求。此外,还可以使用Python库包装器()调用maxflow算法对图形进行分区

它从左侧的带噪图像开始,考虑像素之间的空间约束,得到右侧的二值图像


通过“我的像素值是连续的”,您的意思是颜色信息存储在浮点值介于0和1之间的三维向量中吗?如果是这样,将向量乘以255并将其截断为整数。这将为您提供一个带有“离散值”的RGB图像,可与Scikit-image中的图形算法一起使用。是的,我的像素值是浮动的,但我的图像是单个波段而不是RGB。我找到了一个Python库,它实现了图形切割(C++的包装器),这个例子看起来像我正在尝试实现的,除了在我的例子中,后处理的图像是二进制的。剩下的另一个想法是调整参数。你认为这个解决方案怎么样?