在python中如何将三个3D数组转换为RGB矩阵

2024-05-17 17:37:53 发布

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

我甚至不确定这是否可能,但我对python还很陌生。在

我有三个3D数据集,每个都是64 x 64 x 50 numpy数组。我试图将每个3D数据集合并成一个单独的3D RGB图像,其中每个单元格由一个RGB值表示,每个颜色通道表示单个数据集的值。在

例如,我的数据是在岩石中测得的三种不同的同位素,所以我希望R代表氧-16的值,G=硫-32,B=镁-24。在

我已经想出了如何用以下通用方程将每个同位素阵列归一化为0-255之间的离散值:

new_arr = ((arr - arr.min()) * (1/(arr.max() - arr.min()) * 255).astype('uint8')

更具体地说,我的数据如下:

^{pr2}$

现在,我想创建另一个64x64x503d数组,数组中的每个索引都由与上面定义的索引值对应的RGB值定义。在

举个简单的例子,如果我有2 x 1的小数组:

O16R = (151, 3)

S32G = (2 , 57)

Mg24B = (0, 111)

然后我需要一个生成的RGB嵌套矩阵:

RGB = ( [151,2,0] , [3,57,111] )

我想我需要创建一个for循环,但我还没能搞清楚。这是到目前为止我得到的,但是它没有解析数据。在

RGB = np.zeros(shape=(64,64,50)) 
for i in RGB:
    RGB = ([O16R, S32G, Mg24B])

任何帮助都将不胜感激。在


Tags: 数据图像numpyfor定义颜色rgb数组
1条回答
网友
1楼 · 发布于 2024-05-17 17:37:53

IIUC,对于您来说,您可以执行以下任一操作:

# setup:
O16R = (151, 3)
S32G = (2 , 57)
Mg24B = (0, 111)

# using zip:
RGB = np.array(list(zip(O16R, S32G, Mg24B)))
# or just transposing the array:
RGB = np.array([O16R, S32G, Mg24B]).T

两者都返回:

^{pr2}$

相关问题 更多 >