图像和图像处理

已完成

在浏览图像处理和其他计算机视觉功能之前,考虑在计算机程序的数据上下文中实际 的图像 非常有用。

图像作为像素数组

对于计算机,图像是数值 像素 值的数组。 例如,请考虑以下数组:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

该数组由七行和七列组成,表示 7x7 像素图像的像素值(这称为图像的 分辨率)。 每个像素的值为 0(黑色)和 255(白色):这些边界之间的值表示灰色阴影。 此数组表示的图像类似于以下(放大)图像:

灰度图像示意图。

此图像的像素值的数组是二维(表示行和列,或 xy 坐标),并定义像素值的单个矩形。 这样的单个像素值层表示灰度图像。 实际上,大多数数字图像都是多维图像,由三个层(称为 通道)组成,这些通道代表红色、绿色和蓝色(RGB)颜色色调。 例如,我们可以通过定义三个像素值的通道来表示颜色图像,这些像素值创建与上一个灰度示例相同的正方形形状:

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

下面是生成的图像:

彩色图像的示意图。

紫色方块由组合表示:

Red: 150 
Green: 0 
Blue: 255 

中心的黄色方块由组合表示:

Red: 255
Green: 255
Blue: 0

使用筛选器处理图像

执行图像处理任务的一种常见方法是应用 筛选器 来修改图像的像素值以创建视觉效果。 筛选器由一个或多个像素值数组定义,称为筛选器 内核。 例如,可以使用 3x3 内核定义筛选器,如以下示例所示:

-1 -1 -1
-1  8 -1
-1 -1 -1

然后,内核将跨图像 卷积,计算每个 3x3 像素补丁的加权总和,并将结果分配给新图像。 通过浏览分步示例,可以更轻松地了解筛选的工作原理。

我们先来从之前浏览的灰度图像开始:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

首先,将滤波器内核应用到图像的左上角区域,将每个像素值乘以内核中的相应权重值,并将所有结果相加:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

结果(-255)成为新数组中的第一个值。 然后,我们将滤波器内核向右移动一个像素,并重复该操作。

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

同样,结果将添加到新数组,该数组现在包含两个值:

-255  -510

此过程将重复,直到筛选器在整个图像中卷积,如以下动画所示:

滤波器的示意图。

过滤器在整个图像上卷积,计算出新的值数组。 某些值可能超出 0 到 255 像素值范围,因此这些值经过调整以适应该范围。 由于筛选器的形状,不计算像素的外部边缘,因此应用填充值(通常为 0)。 生成的数组表示一个新图像,其中筛选器已转换原始图像。 在这种情况下,滤镜具有对图像中形状的边缘 进行突出显示 的效果。

若要更清楚地看到筛选器的效果,下面是应用于真实图像的相同筛选器的示例:

原始图像 筛选的图像
香蕉示意图 过滤香蕉的示意图。

这种图像处理方式通常称为卷积滤波,因为滤波器在图像中进行卷积。 此示例中使用的筛选器是一种特定类型的筛选器(称为 laplace 筛选器),可突出显示图像中对象的边缘。 有许多其他类型的筛选器可用于创建模糊、锐化、颜色反转和其他效果。