数字图像处理 - 放大方法



在本教程中,我们将正式介绍三种放大方法,这些方法在“放大介绍”教程中已介绍。

放大方法

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

每种方法都有其自身的优点和缺点。我们将首先讨论像素复制。

方法一:像素复制

介绍

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

工作原理

在这种方法中,我们根据已给定的像素创建新的像素。此方法中每个像素按行和列复制n次,即可获得放大的图像。就这么简单。

例如

如果您有一张2行2列的图像,并且想要使用像素复制将其放大两倍或2倍,则可以按如下方式进行。

为了更好地理解,图像以矩阵的形式呈现,其中包含图像的像素值。

1 2
3 4

上图有2行2列,我们首先按行放大。

按行放大

当我们按行放大时,我们将简单地将行的像素复制到其相邻的新单元格。

操作方法如下。

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。

Table2

按列放大

必须按列执行相同的过程。该过程包括取两个相邻的像素值,然后从较大的值中减去较小的值。然后,你必须将其除以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倍放大算法的一个明显的优点是它能够计算任何倍数的放大,这是像素复制算法的能力,它也提供了改进的结果(更清晰),这是零阶保持法的能力。因此,它包含了这两种算法的能力。

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

广告
© . All rights reserved.