您刚刚了解了计算机视觉的目标:让计算机从数字图像或视频中获取信息。但是,计算机究竟是如何“看”的,这与我们人类感知视觉景象的方式有何不同?弄清这种区别是掌握计算机视觉所用方法的重要一步。人类视觉:直观且关联我们的视觉系统是生物工程的奇迹。当光线进入眼睛时,它聚焦在视网膜上,触发感光细胞(视杆细胞和视锥细胞)。这些信号通过视神经传输到大脑,在那里进行极为复杂的处理。我们的大脑不只是记录光强度和颜色;它能即时解读形状、辨认熟悉物体、推断距离、判断空间关系,并使用多年的经验和情境。试想一下在人群中认出朋友的脸。你的大脑能轻松处理光线、角度、表情甚至部分被遮挡视线的变化。这个过程感觉瞬间完成且直观。它是整体性的、关联的,并与我们的其他感官和已有知识紧密结合。计算机视觉:数值化与明确化计算机如何理解图像,与人类的视觉感知方式不同。计算机缺乏生物构造和固有的识别能力。对于计算机而言,数字图像并非一个完整的场景;它仅仅是数据。具体来说,图像被表示为由微小元素构成的网格,这些元素被称为像素(英文“picture elements”的缩写)。想象一下将图像划分为一个细密的网格,就像在一张图像上覆盖了一张方格纸。网格中的每个方块都是一个像素,它包含一个或多个数值,代表该特定点的颜色和亮度。灰度图像: 最简单的情况下,对于灰度(黑白)图像,每个像素都有一个值表示其亮度。这个值通常范围是0(代表黑色)到255(代表白色),介于两者之间的是不同深浅的灰色。计算机看到的是这些亮度值的二维数组(或矩阵)。彩色图像: 对于彩色图像,每个像素通常存储三个值,通常代表红、绿、蓝光的强度(RGB色彩模型)。因此,彩色图像本质上是三个数值网格堆叠在一起,每个网格对应一个颜色通道。我们用一个微小、简化的灰度图像来数值化地表示它:digraph G { // layout=neato; // 保持移除 node [shape=plaintext]; edge [style=invis]; // 全局设置(下面是冗余的,但无妨) // 定义网格可视化节点 subgraph cluster_image { label = "简化图像"; bgcolor="#e9ecef"; node [shape=square, style=filled, label="", width=0.5, height=0.5]; a1 [pos="0,1!", fillcolor="#adb5bd"]; a2 [pos="1,1!", fillcolor="#ffffff"]; a3 [pos="2,1!", fillcolor="#adb5bd"]; b1 [pos="0,0!", fillcolor="#495057"]; b2 [pos="1,0!", fillcolor="#000000"]; b3 [pos="2,0!", fillcolor="#495057"]; } // 定义数值矩阵节点 subgraph cluster_matrix { label = "计算机表示(像素值)"; bgcolor="#e9ecef"; node [shape=rect, width=0.6, height=0.4]; m11 [pos="4,1!", label="150"]; m12 [pos="5,1!", label="255"]; m13 [pos="6,1!", label="150"]; m21 [pos="4,0!", label="80"]; m22 [pos="5,0!", label="0"]; m23 [pos="6,0!", label="80"]; } a3 -- m11 [style=invis]; }计算机如何将一个非常小的低分辨率灰度图像存储为强度值网格(0=黑色,255=白色)的示例。对于计算机来说,左侧的图像只不过是右侧的数值网格。它没有内置的“阴影”、“形状”或“物体”这类认识。它看到的只是数字:150、255、150、80、0、80。弥合差异这个根本性的差异是计算机视觉的主要难题。该学科致力于发展算法和方法,以处理这些原始的数值数组并提取有意义的信息,力求以计算方式重现人类视觉识别能力的某些方面。识别物体、辨识人脸或阅读文本等任务,都涉及分析这些像素值,找出数字中的规律、构成和关联,从而推断出更深层的含义。继续学习时,请记住这个主要观点:计算机视觉始于将图像视为数字(像素)的结构化集合。您将学到的方法旨在处理和解读这些数值数据以达成特定目标,从原始像素值逐步转向图像内容的识别。下一章将更具体地研究这种数值表示,仔细查看像素、色彩空间以及图像的存储方式。