二维离散化或bin LAB色彩空间

2024-04-29 03:47:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有实验室的色彩空间

enter image description here

我想把色彩空间“装箱”成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模块或工具可以完成我的要求呢?你会怎么做?谢谢!在


Tags: indfforab颜色top空间range
1条回答
网友
1楼 · 发布于 2024-04-29 03:47:42

使用标准的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)

如果你想扔掉空箱子,你就得在这里做些工作。但我不明白你为什么要这样做,因为如果不在矩形网格上,为现有的非空容器指定未来的颜色将是一项更大的工作。在

相关问题 更多 >