RGB图像的表示方法是什么?

5

我开始学习图像处理,但卡在这里了,请帮忙。

灰度图像由M x N矩阵表示,矩阵中每个元素的值为[0,255],表示强度。

例如:

    row 1 : 2,120
    row 2 : 190, 40

这是一个2x2的矩阵,它是一张灰度图像。
现在我有些困惑,无法理解如何表示RGB图像,每个像素值或强度都是三个值的混合。
定义如下:
RGB图像用一个MxNx3数组表示,其中每个3向量对应于每个像素的红、绿和蓝强度。
但我无法理解上述句子的意思。请帮助我理解含义。
提前感谢您。

1
你了解灰度图像具有MxN个像素位置,在每个位置上,存储介于黑色(暗)和白色(亮)之间的灰度强度。现在想象一下,你不是在每个位置上存储单个强度,而是存储3个强度 - 一个用于表示该位置的红色强度,一个用于绿色,另一个用于蓝色。就是这样。 - Mark Setchell
3个回答

4
在灰度图像中,每个像素可以用一个数字表示,通常范围从0到255。这个值决定了像素的深浅程度(例如,0是黑色,而255是明亮的白色)。
在彩色图像中,每个像素可以由三个数字向量(每个数字范围从0到255)表示为三个主要颜色通道:红色、绿色和蓝色。这三个红、绿、蓝(RGB)值一起用于确定该像素的颜色。例如,紫色可能被表示为128,0,128(适度强烈的红色和蓝色混合,没有绿色)。
现在我将使用您的示例来让您理解给定的定义。
假设一个2乘2矩阵的彩色图像:
行1:绿色,蓝色
行2:红色,黑色
如果我用它的RGB值表示上述颜色:
行1:[0,255,0],[0,0,255]
行2:[255,0,0],[0,0,0]
所以,M-by-N-by 3 描述了矩阵的行数为 M,列数为 N,而 3 是表示 RGB 值的向量的大小。这里是像素网格中的 RGB 表示。

1
概念上,M×N的RGB图像是一个2D矩阵,其中每个矩阵元素是一个具有3个值的向量。
在物理内存中,有许多不同的表示方法。例如:
1. 使用MxN数组,其中每个元素都是24位整数。每个整数由红色、绿色和蓝色值(每个8位整数)组成,例如:red << 16 | green << 8 | blue(或等效地red * 256 * 256 + green * 256 + blue)。
2. 使用3个单独的MxN数组,每个颜色通道一个。
3. 使用MxNx3数组,其中第3维是“颜色维度”。您可以将其索引为img [i,j,k],其中k为0、1或2。因此,一个像素由3个数组元素组成。
最后一种格式是问题中描述的格式。这样的3D数组通常被实现为1D数组,并将索引转换为如下形式:
```python index = i * N * 3 + j * 3 + k ```
index = i + j * M + k * N*M;

或者像这样:
index = i * N*3 + j * 3 + k;

或者按照另一种不同的顺序,都没有关系(这里我们假设索引从0开始)。因此,该数组有M*N*3个元素,其中的三个元素共同表示一个像素。


0

(A)RGB像素通常保存为整数(32位)。因此,每个通道由8位表示(使您获得0到255之间的范围)。数字的前8位(32-24)表示Alpha通道,接下来的8位表示红色通道(24-16),再接下来的8位表示绿色通道(16-8),最后8位表示蓝色通道。因此,数组中的每个数字实际上表示相应颜色通道的透明度(Alpha)和3个强度值,因此也可以视为向量。M-by-N-by3描述了一个MxN矩阵,其中包含每个像素的向量(整数)以描述其颜色。

定义进一步给出了关于如何在三维空间中绘制/查看像素值的想法。想象一个3D图表,其中每个轴代表一个颜色通道。当您将特定颜色添加到图表中时,会得到一个向量,该向量描述了从原点起始的三维空间中颜色的位置!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接