【发布时间】:2017-11-03 01:31:43
【问题描述】:
我有一个池塘的图像(草、边缘的岩石、水)。我想使用 GMM 作为无监督分类器,将图像分割成草、岩石和水。
图像是形状为 (800, 800, 4) 的 numpy 数组形式,其中每个像素包含 4 个波长的强度数据。例如,像素 x=1 y=1 具有对应于波长 [450, 500, 600, 700] 的强度数据 [1000, 2000, 1500, 4000]。
我尝试使用 scikit-learn 拟合 GMM:
gmm=GaussianMixture(n_components=3, covariance_type="tied")
gmm=gmm.fit(data)
但是,我得到一个错误,说数据的预期维度应该小于或等于 2。
是否有任何可用的 Python 包或函数可以使 GMM 适应更高维数据?
【问题讨论】:
-
通过对 4 个值进行转换以减少它们会丢失多少信息 - 本质上是将其转换为灰度图像?
-
再次,您需要确定您认为的样本和功能。您可以将每个像素视为从 4 维波长分布中抽取的样本,然后将 GMM 拟合到该分布。在这种情况下,您需要做的就是将
data数组折叠到前两个维度上,使其形状为(640000, 4)而不是(800, 800, 4)。这对你的情况有意义吗?从你的描述我看不出来。您想通过将 GMM 拟合到这些数据来回答什么问题?你能编辑你的问题来解释一下吗? -
基本上我有一个池塘的图像(草、沿边缘的岩石、水),图像在 y 方向为 800 像素,在 x 方向为 800 像素,每个像素包含来自 4 个重要波长的数据,例如像素 x=1 y=1 具有对应于波长 [450,500,600,700] 的数据 [1000,2000, 1500,4000]。我希望使用 gmm 作为无人监督的分类器,将草从岩石和水中分割出来。我真的很感谢你在这方面的帮助。感谢您对我的耐心和对问题的坚持。
-
您介意编辑您的问题,使其包含实际的问题描述吗?这是必不可少的信息,所以不应该把它埋在 cmets 里。
标签: python image-processing machine-learning scikit-learn cluster-analysis