我有两组值RGB
和XYZ
,它们在np.arrays
中具有相同的长度。RGB
和XYZ
中的值对应于两个不同颜色空间中的相同值,它们在向量中的外观顺序是一致的。
我有另一个数组RGB_picture
,它包含类似于RGB
中列出的值。
我希望找到一种方法,将RGB_picture
中的RGB_picture
值替换为新数组XYZ_picture
中相应的XYZ
值。
示例:
RGB = np.array([[0,0,0], [0,0,1], [0,1,0], [0,1,1], [1,0,0], [1,0,1], [1,1,1]])
XYZ = np.array([[0.237,0.32,0.8642], [0.43234,0.34,1], [0.2432,.31,0.324], [0.3242,1.324,1.234], [1.32,0.4,0.23], [1.432,0.32423,1.342], [1.234,1.324,1.324324]])
#6 pixels image
RGB_image = np.array([[[0,0,1],[0,0,1],[0,0,1],
[0,1,1],[1,0,0],[1,0,1]]])
"""I want to return this"""
>print XYZ_image
>[[0.43234,0.34,1],[0.43234,0.34,1],[0.43234,0.34,1]],
>[0.3242,1.324,1.234], [1.32,0.4,0.23], [1.432,0.32423,1.342]]
我试着用numpy做这件事,但是找不到怎么做,你能帮上忙吗?
这是我所拥有的,但这不是一个简单的解决方案,所以它非常慢:
XYZ_image = np.zeros_like(RGB_image)
w, h = RGB_image.shape
for i in xrange(w):
for j in xrange(h):
pixel = RGB_image[i,j]
for k in xrange(len(RGB)):
rgb = RGB[k]
if rgb == pixel:
XYZ_image[i,j] = XYZ[k]
break
发布于 2015-07-17 09:55:04
听起来,您正在尝试使用RGB值作为索引。您可以使用常规Python来解决这个问题。使.的
my_dict = {RGB_value_1: XYZ_Value_1, RGB_value_2: XYZ_Value_2, etc}
那么对于RGB_picture中的每一个值
my_dict[RGB_picture_value]
编辑:使用您的代码
my_dict = {RGB[i]: XYZ[i] for i in range(len(RGB))}
return [my_dict[x] for x in RGB_image]
请注意,要使其工作,RGB和RGB_picture值必须是不可变的(如元组)。
https://stackoverflow.com/questions/31481708
复制相似问题