缩放方法
在本教程中,我们将正式介绍在缩放入门教程中介绍的三种缩放方法。
方法
- 像素复制或(最近邻插值)
- 零阶保持方法
- 缩放 K 倍
每种方法都有各自的优点和缺点。我们将从讨论像素复制开始。
方法 1:像素复制:
简介:
它也被称为最近邻插值。顾名思义,在这种方法中,我们只是复制相邻像素。正如我们在采样教程中已经讨论过的,缩放只不过是增加样本或像素的数量。该算法的工作原理相同。
工作原理:
在此方法中,我们从已给定的像素创建新像素。每个像素在此方法中按行和列复制 n 次,然后您便会得到放大的图像。就这么简单。
例如:
如果您有一张 2 行 2 列的图像,并且想要使用像素复制将其放大 2 倍或 2 倍,可以按照以下方法操作。
为了更好地理解,图像以矩阵的形式呈现,其中包含图像的像素值。
1 | 2 |
3 | 4 |
上面的图像有两行两列,我们首先按行缩放。
按行缩放:
当我们按行缩放时,我们只需将行像素复制到其相邻的新像素即可单元格。
以下是具体操作方法。
1 | 1 | 2 | 2 |
3 | 3 | 4 | 4 |
如您在上面的矩阵中看到的,每个像素在行中复制两次。
列大小缩放:
下一步是逐列复制每个像素,我们将简单地将列像素复制到其相邻的新列或其下方。
这里是如何完成的。
1 | 1 | 2 | 2 |
1 | 1 | 2 | 2 |
3 | 3 | 4 | 4 |
3 | 3 | 4 | 4 |
新的图像大小:
从上面的例子可以看出,原来2行2列的图像被转换成4行4列缩放后,列数增加。这意味着新图像的尺寸为
(原始图像行数 * 缩放系数,原始图像列数 * 缩放系数)
优点和缺点:
这种缩放技术的优点之一是,它非常简单。您只需复制像素,无需其他操作。
这种技术的缺点是图像被放大了,但输出非常模糊。随着缩放系数的增加,图像变得越来越模糊。最终会导致图像完全模糊。
方法 2:零阶保持
简介
零阶保持方法是另一种缩放方法。它也被称为两次缩放。因为它只能缩放两次。我们将在下面的例子中看到它为什么这样做。
工作原理
在零阶保持方法中,我们分别从行中选择两个相邻元素,然后将它们相加并将结果除以二,并将其结果放在这两个元素之间。我们首先逐行执行此操作,然后逐列执行此操作。
例如
让我们拍摄一张 2 行 2 列的图像,并使用零阶保持将其缩放两倍。
1 | 2 |
3 | 4 |
首先,我们将按行缩放,然后按列缩放。
按行缩放
1 | 1 | 2 |
3 | 3 | 4 |
我们取前两个数字:(2 + 1)= 3,然后将其除以 2,得到 1.5,近似于 1。第 2 行也应用相同的方法。
按列缩放
1 | 1 | 2 |
2 | 2 | 3 |
3 | 3 | 4 |
我们取两个相邻列的像素值,即 1 和 3。我们将它们相加,得到 4。然后将 4 除以 2,得到 2,放在它们之间。所有列都应用相同的方法。
新图像大小
如您所见,新图像的尺寸为 3 x 3,而原始图像的尺寸为 2 x 2。因此,这意味着新图像的尺寸基于以下公式
(2(行数) 减 1) X (2(列数) 减 1)
优点和缺点。
这种缩放技术的优点之一是,与最近邻插值方法相比,它不会创建模糊的图像。但是它还有一个缺点,就是它只能以 2 的幂运行。这里可以演示一下。
两次缩放的原因:
考虑上面 2 行 2 列的图像。如果我们必须使用零阶保持方法将其放大 6 倍,我们就无法做到。正如公式所示。
它只能以 2、4、8、16、32 等的幂进行放大。
即使您尝试放大它,也无法做到。因为首先当您将其放大两倍时,结果将与按列缩放中所示的结果相同,尺寸等于 3x3。然后您再次放大它,您将获得等于 5 x 5 的尺寸。现在,如果您再次执行此操作,您将获得等于 9 x 9 的尺寸。
而根据您的公式,答案应该是 11x11。因为 (6(2) 减 1) X (6(2) 减 1) 等于 11 x 11。
方法 3:K 倍缩放
简介:
K 倍是我们要讨论的第三种缩放方法。它是迄今为止讨论过的最完美的缩放算法之一。它既能应对两倍缩放,又能应对像素复制的挑战。此缩放算法中的 K 代表缩放因子。
工作原理:
它的工作原理如下。
首先,您必须像两倍缩放一样取两个相邻像素。然后您必须从较大的像素中减去较小的像素。我们称之为输出 (OP)。
将输出 (OP) 除以缩放因子 (K)。现在,您必须将结果添加到较小的值,并将结果放在这两个值之间。
再次将值 OP 添加到您刚刚放入的值,并将其再次放在前一个放入的值旁边。您必须这样做,直到在其中放入 k-1 个值。
对所有行和列重复相同的步骤,您将获得放大的图像。
例如:
假设您有一张 2 行 3 列的图像,如下所示。您必须将其放大三倍或三倍。
15 | 30 | 15 |
30 | 15 | 30 |
本例中 K 为 3。K = 3。
应插入的值的数量为 k-1 = 3-1 = 2。
按行缩放
取前两个相邻像素。分别为 15 和 30。
从 30 中减去 15。30-15 = 15。
将 15 除以 k。15/k = 15/3 = 5。我们称之为 OP。(其中 op 只是一个名称)
将 OP 添加到较低的数字。15 + OP = 15 + 5 = 20。
再次将 OP 添加到 20。 20 + OP = 20 + 5 = 25。
我们这样做了 2 次,因为我们必须插入 k-1 个值。
现在对接下来的两个相邻像素重复此步骤。它显示在第一个表中。
插入值后,您必须按升序对插入的值进行排序,以便它们之间保持对称。
它显示在第二个表中
表 1。
15 | 20 | 25 | 30 | 20 | 25 | 15 |
30 | 20 | 25 | 15 | 20 | 25 | 30 |
表 2.

按列缩放
按列执行相同的程序。该过程包括取两个相邻像素值,然后从较大的像素值中减去较小的像素值。然后,您必须将其除以 k。将结果存储为 OP。将 OP 添加到较小的像素值,然后再次将 OP 添加到第一次添加 OP 的值中。插入新值。
这是您完成所有这些后得到的结果。
15 | 20 | 25 | 30 | 25 | 20 | 15 |
20 | 21 | 21 | 25 | 21 | 21 | 20 |
25 | 22 | 22 | 20 | 22 | 22 | 25 |
30 | 25 | 20 | 15 | 20 | 25 | 30 |
新图像大小
计算新图像尺寸公式的最佳方法是比较原始图像和最终图像的尺寸。原始图像的尺寸为 2 X 3。新图像的尺寸为 4 x 7。
因此公式为:
(K(行数减 1)+ 1) X (K(列数减 1)+ 1)
优点和缺点
k 倍缩放算法的一个明显优势是它能够计算任何倍数的缩放,这是像素复制算法的力量,它还可以提供改进的结果(更少模糊),这是零阶保持方法的力量。因此它包含了两种算法的力量。
该算法的唯一困难是它必须在最后进行排序,这是一个额外的步骤,从而增加了计算成本。