趋近智
我们知道计算机处理的是数字,而不是像人类那样直接处理视觉场景。那么,计算机是如何“看”到图像的呢?答案在于数字图像的结构和存储方式。基于图像由像素构成的想法,我们来查看这些像素是如何以数字形式表示的。
可以把数字图像想象成一个大的网格,很像电子表格或棋盘。这个网格中的每个方格都对应一个像素。计算机在每个方格中存储一个数值(有时是多个数值),表示该特定像素位置的颜色和强度。
我们从最简单的类型开始:灰度图像,它只包含不同深浅的灰色,从纯黑到纯白。在灰度图像中,每个像素都由一个数字表示。这个数字表示像素的强度或亮度。
一种广泛采用的约定是8位灰度。在这种格式中,每个像素的强度存储为一个介于 到 之间的整数。数值 通常表示纯黑,而 表示纯白。介于两者之间的数值对应着不同深浅的灰色。因此,整个灰度图像可以被看作是一个二维矩阵(一个网格),它的每个元素都包含这些强度值之一。
灰度图像的一个小片段,表示为强度值网格(例如,0=黑色,255=白色)。
彩色图像每个像素需要更多的信息。表示颜色最常见的方式是RGB模型,它代表红、绿、蓝。其理念是,通过混合这三种光的原色以不同比例,可以近似表示任何颜色。
对于RGB图像,每个像素位置存储三个数值:
这三个值通常被称为颜色通道。与灰度类似,每个通道通常使用8位表示,这意味着红、绿、蓝的强度范围从 (该颜色无强度)到 (该颜色最大强度)。
单个像素的颜色由这三个值的组合决定。例如:
单个彩色像素位置存储红、绿、蓝通道的三个独立强度值。
在编程中,特别是在Python中使用OpenCV、NumPy或PIL(Pillow)等库时,这些表示直接转换为类似数组的数据结构:
image[row][column] 存储像素的强度值。image[row][column] 本身将是一个小数组或元组,包含该像素的三个值 (R, G, B)。第三个维度(大小为3)表示颜色通道。例如,一个相对较小的 像素的彩色图像将由一个包含 个独立数字的数据结构表示!
我们提到了0-255的范围,这来自于每个通道使用8位( 个可能值)。这被称为位深度。虽然8位对于标准图像(JPEG、PNG)非常常见,但某些应用(如医学成像或科学摄影)使用更高的位深度(例如,10位、12位或16位)来获取更细微的强度变化。更高的位深度意味着每个像素或通道有更多可能的值,从而产生更平滑的渐变和更多细节,但文件大小也会更大。
了解图像本质上是数字网格这一点很重要。正是这种数字表示使得我们能够应用数学运算和算法,用计算机处理、分析和解释视觉信息。在接下来的部分中,我们将查看表示颜色的不同方式(色彩空间)以及用于高效存储这些数字网格的常见文件格式。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造