我有实验室的色彩空间
我想把色彩空间“装箱”成10×10平方的网格。在
所以第一个箱子可能是(-110,-110)到(-100,-100),然后下一个可能是(-100,-110)到(-90,-100),依此类推。这些箱子可以是箱子1和箱子2
我见过数字化()但似乎你必须通过一维的箱子。在
我尝试过的一个基本方法是:
for fn in filenames:
image = color.rgb2lab(io.imread(fn))
ab = image[:,:,1:]
width,height,d = ab.shape
reshaped_ab = np.reshape(ab,(width*height,d))
print reshaped_ab.shape
images.append(reshaped_ab)
all_abs = np.vstack(images)
all_abs = shuffle(all_abs,random_state=0)
sns
df = pd.DataFrame(all_abs[:3000],columns=["a","b"])
top_a,top_b = df.max()
bottom_a,bottom_b = df.min()
range_a = top_a-bottom_a
range_b = top_b-bottom_b
corner_a = bottom_a
corner_b = bottom_b
bins = []
for i in xrange(int(range_a/10)):
for j in xrange(int(range_b/10)):
bins.append([corner_a,corner_b,corner_a+10,corner_b+10])
corner_b = bottom_b+10
corner_a = corner_a+10
但结果似乎有点粗略。一方面,有许多空的箱子,因为颜色空间确实有一个正方形排列的值,而这些代码几乎只与最大值和最小值相差不大。此外,舍入可能会导致问题。我想知道有没有更好的办法?我听说过颜色直方图,它计算每个“箱子”中的值。我不需要价值观,但我想我在这里要找的就是这些垃圾箱。在
理想情况下,垃圾箱应该是一个每个都有标签的物体。所以我可以这么做箱子.索引[0]它会返回我给它的边界框。然后我可以把每一个观察结果,比如如果一个新颜色是color=[15.342,-6.534],颜色.bin会退回15个或15个箱子。在
我知道这是一个很大的要求,但我认为这一定是一个有点共同的需要,为人们工作的色彩空间。那么,有没有什么python模块或工具可以完成我的要求呢?你会怎么做?谢谢!在
使用标准的numpy 2D直方图函数:numpy.histogram2d:
如果你想扔掉空箱子,你就得在这里做些工作。但我不明白你为什么要这样做,因为如果不在矩形网格上,为现有的非空容器指定未来的颜色将是一项更大的工作。在
相关问题 更多 >
编程相关推荐