在2维中离散或分隔LAB色彩空间

时间:2016-05-21 23:36:20

标签: python opencv numpy pandas

我有一个实验室色彩空间

enter image description here

我想" bin"网格中的颜色空间为10x10的正方形。

所以第一个bin可能是(-110,-110)到(-100,-100),然后下一个可能是(-100,-110)到(-90,-100),依此类推。这些箱可以是箱1和箱2

我见过np.digitize(),但看起来你必须传递它的1维箱子。

我尝试过的一个基本方法是:

id

但" bins"结果似乎有点粗略。有一件事,有很多空的箱子,因为颜色空间确实有正方形排列的值,而且代码几乎只是从最大值和最小值开始。此外,舍入可能会导致问题。我想知道是否有更好的方法来做到这一点?我听说过颜色直方图可以计算每个" bin"中的值。我不需要价值观但是箱子是我认为我在这里寻找的东西。

理想情况下,垃圾箱将成为每个都有标签的对象。所以我可以做bins.indices [0]它会返回我给它的边界框。然后我也可以对每个观察进行分类,就像一个新颜色是color = [15.342,-6.534],color.bin将返回15或第15个bin。

我意识到这有很多要求,但我认为对于使用色彩空间的人来说,这一定是一个常见的需求。那么有没有任何python模块或工具可以完成我所要求的?你会怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

使用标准的numpy 2D直方图函数:numpy.histogram2d

import numpy as np
# a and b are arrays representing your color points
H, a_edges, b_edges = np.histogram2d(a, b, bins=10)

如果你想丢弃空箱,你必须从这里做一些工作。但我不明白为什么你会这么想,因为如果它们不在矩形网格上,那么将未来的颜色分配给现有的非空箱将会更有效。

答案 1 :(得分:1)

您可能正在尝试重复Richard Zhang在“彩色图像着色”研究中所做的事情:http://richzhang.github.io/colorization/

在这里,作者本人讨论了这个问题:https://github.com/richzhang/colorization/issues/23

幸运的是,张提供了.npy文件,其中包含那些量化值。它位于:https://github.com/richzhang/colorization/blob/master/resources/pts_in_hull.npy

现在唯一要做的就是在python脚本中加载此文件:

import numpy as np

pts_in_hull = np.load("pts_in_hull.npy")

它是313x2形状的numpy数组,包含图像中的值。

我知道这个答案来得太晚了几年,但也许会对其他人有所帮助。