← 返回博客

个人博客

图像如何变成数字:像素与卷积的直觉

前情提要:第 5 篇《机器人怎样"看"世界:相机与视觉管线入门》里我们说,相机拍下来的只是"画面",不是"理解"——要变懂,还得走完一条从光信号到语义的视觉管线。这一篇我们钻进这条管线最前头:那个被相机捕获的"画面",在电脑眼里到底长什么样。

一、一张照片,其实是很多小方格

你有没有把手机照片放大到极限,看到过那种马赛克?那些小方块不是 bug,恰恰是一张数字照片的本來面目。

在计算机的世界里,任何一张彩色照片,本质上都是一张巨大的数字表格。表格由密密麻麻的小方格组成,每个小方格叫一个"像素"(picture element 的缩写,意思就是"画面的最小单元")。如果一张图是 1000 乘 1000,它就拥有 100 万个这样的小方格。

那每个方格里的数字代表什么?代表颜色。

颜色在计算机里通常被拆成三个分量:红、绿、蓝(也就是我们常说的 RGB)。每个分量用一个 0 到 255 之间的整数表示——0 表示"完全没有这种颜色",255 表示"这种颜色拉满"。比如纯红色就是 (255, 0, 0),白色是 (255, 255, 255),黑色是 (0, 0, 0)。于是,一个彩色像素其实是三个数字打包在一起,整张照片就是由这层层数字叠出来的矩阵。

换句话说,你眼中那张"蓝天白云、绿树红花"的照片,在电脑的硬盘上,只是一长串按顺序排列的数字而已。它并不知道什么叫"天"、什么叫"云",它只知道某个位置是 (135, 206, 235) 这样的颜色值。这就引出了下一个问题:既然它只认数字,那它要怎么"看出"图像里的内容?

二、局部感官:别急着看全局,先看一小块

人类看一张图,往往是一眼就认出"这是只猫"。但计算机没有"一眼"。它得一块一块地看,从最局部、最微小的图案开始,慢慢拼出整体的意思。

这里有个关键直觉:图像里真正有用的信息,往往藏在"局部"里。比如一条边缘,是"左边亮、右边暗"的小小过渡;一种纹理,是"亮暗交替重复"的局部节奏。这些特征都不需要看完整张图就能发现——只要盯住眼前这一小片区域就够了。

所以处理图像的思路是:不要一次性吞下整张图,而是拿一个小窗口,在画面上逐格滑动,每次只研究窗口里那一小块。这个"滑动小窗口",正是卷积的核心道具。

三、卷积:一把带权重的"小刷子"

现在到了正题:卷积(convolution)。

请想象你手里有一把奇怪的小刷子。这把刷子不大,可能只有 3 乘 3 那么小。刷子上有 9 个位置,每个位置都带着一个"权重"——也就是一个可以正可以负、可大可小的数字。

卷积做的事情,就是让这把小刷子从左上角开始,一格一格地滑过整张图片。每滑到一处,刷子就把自己盖住的那一小块像素,乘以对应的权重,再把这 9 个乘积加起来,得到一个新数字。这个新数字,被写到一张"新图"上、和当前位置对应的格子里。

刷子滑完整个画面,你就得到了一张新的、通常更平滑或更精简的图,叫做"特征图"。而那把带权重的刷子,专业名词叫"卷积核"(kernel)。

这把刷子的妙处在于:不同的权重,能刷出不同的东西。

比如,一把"边缘刷子"会这样设计:左边三格权重是负的,右边三格是正的。当刷子扫过"左亮右暗"的边界时,正负相乘再相加的结果是一个很大的数——于是这个边界在新图上被"点亮"了。而在一片均匀颜色的内部,亮暗差不多,加出来接近零,新图上就一片沉寂。结果就是:边缘被"刷"出来了,平坦区域被"刷"没了。

再比如,有的刷子专门抓横线、有的抓竖线、有的抓拐角。把一堆不同用途的刷子都刷一遍,再把结果叠在一起,原本"只是一堆颜色数字"的图,就被提炼成了一张"哪里有边缘、哪里有纹理、哪里有角点"的特征地图。机器后续要认物体,靠的就是这些被刷出来的特征,而不是原始像素。

四、回到矩阵:这和线性代数其实是一家人

你可能会觉得,卷积听起来很"工程"、很"图像",和数学好像隔了一层。其实不是。

那种"把一群数字按权重加起来"的操作,本质上和我们在数学系列里见过的"加权求和"是一回事。一张图本身就是一个矩阵;卷积核也是一个小矩阵;卷积就是把两个矩阵按局部做加权叠加。它和线性代数里对向量、矩阵的运算血脉相连。

如果你愿意往深里想一步,可以把"用卷积核提取特征"类比成:在另一个空间里,看图像和某个"模式"是不是"对齐"了。这跟你日后读到数学系列第 6 篇《内积与正交:量子态如何"互相独立"》时遇到的"内积"很神似——内积衡量两个东西有多"相像",卷积核刷出来的值,也恰恰在衡量"这一小块图案,有多像我这个核要找的特征"。

而那张由像素排成的二维数字矩阵,以及我们怎么对它做整体变换,也正是数学系列第 3 篇《矩阵与线性变换:量子门到底是什么》里谈的"矩阵即变换"的同一套语言。只不过图像里的变换更"局部"、更"滑动"一些罢了。

所以你看,感知这条线和数学那条线,并不是两条互不相关的河,而是同一片水域的两岸。

五、为什么要先懂这个,再谈"看"

到这儿,我们可以把今天的核心串起来:

图片在计算机里不是"画",而是一张由颜色数字排成的矩阵;卷积是一把带权重的滑动小刷子,它专门在局部上做加权求和,把边缘、纹理这些基础特征一点点"刷"出来,变成机器能读的特征图。

这一步,正是第 5 篇里那条"从画面到理解"的视觉管线的最前头。没有它,后面所有"认出这是猫、那是狗"的智能,都无从谈起。

flowchart LR A["图像: 像素矩阵"] --> B["卷积核: 滑动小窗"] B --> C["特征图: 边缘与纹理"]

读后小测

3 句话复述

1. 一张数字照片在计算机里不是"画",而是由无数小方格(像素)拼成的数字矩阵,每个格子用颜色数字表示。 2. 卷积就像一把带权重的滑动小刷子,在画面上逐格移动,对局部做加权求和,把边缘和纹理刷成特征图。 3. 这些被刷出来的特征图,是机器后续识别物体、理解画面的最底层原料。

1 件动手小事

打开手机相册,把任意一张照片放大到最大,数一数你能看到的"小方格";再仔细看一条物体轮廓的边缘——你会发现边缘处的小方格颜色突然从亮变暗。这就是卷积核最想抓住的"边缘信号",你刚刚用肉眼亲眼看到了机器要找的东西。

下一篇《让机器认出物体:分类、检测与分割》:你会看到这些被刷出来的边缘与纹理,怎样一层层组合成"这是一只猫""车在画面左边""整片天空都要标出来"的真正理解。