2015-06-24 53 views
-1

我一直在试图弄清楚如何通过Python模块(如skimage或scipy)中的K-means聚类来分割图像。我发现代码here由k表示的图像分割意味着在Python中聚类

当我尝试运行我的图像的代码时,我的python解释器停止响应。

此外,我不明白上述给定的链接代码的下采样部分。 请告诉我该怎么做?

+0

研究并理解代码,而不是盲目地运行它。尤其要注意可扩展性。 –

回答

1

该代码是正确的,(它对我来说很好)。这只需要时间,完成(我的笔记本电脑80秒)。也许你需要像lena图像那样的灰度图像。

对于下采样;

lena = sp.misc.lena() 
print np.shape(lena) 
print np.shape(lena[::2, ::2]) # lena[0,0], lena[0,2], lena[0,4], lena[0,6] 
print np.shape(lena[1::2, ::2]) # lena[1,0], lena[1,2], lena[1,4], lena[1,6] 
print np.shape(lena[::2, 1::2]) # lena[0,1], lena[0,3], lena[0,5], lena[0,7] 
print np.shape(lena[1::2, 1::2]) # lena[1,1], lena[1,3], lena[1,5], lena[1,7] 

# lena[0,0], lena[0,2], lena[0,4], lena[0,6], ... 
#  +  , +  , +  , +  , + 
# lena[1,0], lena[1,2], lena[1,4], lena[1,6], ... 
# +  , +  , +  , +  , + 
# lena[0,1], lena[0,3], lena[0,5], lena[0,7], ... 
# +  , +  , +  , +  , + 
# lena[1,1], lena[1,3], lena[1,5], lena[1,7], ... 
# =  , =  , =  , =  , = 
# lena[0,0], lena[0,1], lena[0,2], lena[0,3], ... 


lena = lena[::2, ::2] + lena[1::2, ::2] + lena[::2, 1::2] + lena[1::2, 1::2] 
print 'Shape :', np.shape(lena) 
lena = lena[::2, ::2] + lena[1::2, ::2] + lena[::2, 1::2] + lena[1::2, 1::2] 
print 'Shape :', np.shape(lena) 
+0

我尝试使用此代码下取样并得到下面的输出和错误我的形象:输出:(1571L,1571L) (786L,786L) (785L,786L) (786L,785L) (785L,785L)和错误:ValueError:操作数无法与形状一起广播(786,786)(785,786) – RachJain

+0

嗨,使用此代码,您需要具有对形状的图像。 裁剪你这样的图像:image = image [0:1570,0:1570] – Geodor

+0

是的,它现在适用于我。谢谢! – RachJain