缩放方法


在本教程中,我们将正式介绍缩放简介教程中介绍的三种缩放方法。

方法

  • 像素复制或(最近邻插值)
  • 零阶保持法
  • 缩放K倍

每种方法都有自己的优点和缺点。我们将从讨论像素复制开始。

方法一:像素复制:

介绍:

它也称为最近邻插值。顾名思义,在这种方法中,我们只是复制相邻像素。正如我们在采样教程中已经讨论过的,缩放只不过是增加样本或像素的数量。该算法的工作原理相同。

在职的:

在这种方法中,我们从已经给定的像素创建新的像素。在此方法中,每个像素按行和列复制 n 次,然后您就得到了缩放图像。就这么简单。

例如:

如果您有 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 列尺寸的图像,并使用零阶保持将其缩放两倍。

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的2、4、8、16、32等次方。

即使你尝试缩放它,你也不能。因为一开始当您将其缩放两次时,结果将与尺寸等于 3x3 的按列缩放中所示的相同。然后再次缩放,您将获得等于 5 x 5 的尺寸。现在,如果您再次执行此操作,您将获得等于 9 x 9 的尺寸。

而根据你的公式,答案应该是 11x11。(6(2) - 1) X (6(2) - 1) 得出 11 x 11。

方法三: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.

表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 倍缩放算法的明显优势之一是它能够计算任何因素的缩放,这是像素复制算法的强大功能,而且它还提供了改进的结果(更少模糊),这是零阶保持方法的强大功能。因此它包含了两种算法的力量。

该算法唯一的困难是最后必须进行排序,这是一个额外的步骤,从而增加了计算成本。