使用Python创建图像直方图

时间:2016-07-04 10:28:02

标签: python python-2.7 scikit-learn

我有一个包含10000个RGB三元组的表和另一个具有相应颜色名称的表。但是唯一颜色名称的数量只有10.现在我想使用这两个表为给定图像创建一个10-bin直方图。我使用scarest的NearestNeighbors为此学习。这是我的代码的一部分:

rgb_matrix = np.asarray(joblib.load('rgb-matrix.pkl'))
rgb_colors = np.asarray(joblib.load('rgb-colors.pkl'))

color_list = []
for i in xrange(len(rgb_colors)):
    color = rgb_colors[i]
    if color not in color_list:
        color_list.append(color)

nbrs = NearestNeighbors(n_neighbors=4,algorithm='ball_tree').fit(rgb_matrix)

rgb_arr = input_image.reshape(-1,3)
color_arr = nbrs.kneighbors(rgb_arr)[1] # No of nearest neighbours is set to 4
color_index = np.asarray(color_arr[:,0]) # Get the top color index

hist = np.zeros(10)
for i in xrange(len(color_index)):
    hist[color_list.index(rgb_colors[color_index[i]])] += 1.0

但是这个循环使得这个过程非常缓慢。有没有办法在这里使用np.histogram?

0 个答案:

没有答案