📜  什么是图像压缩?

📅  最后修改于: 2021-08-25 16:43:37             🧑  作者: Mango

在图像处理领域,在开始处理较大的图像或视频之前,图像的压缩是重要的一步。图像的压缩由编码器执行,并输出图像的压缩形式。在压缩过程中,数学变换起着至关重要的作用。图像压缩过程的流程图可以表示为:

图像压缩过程的流程图

在本文中,我们试图解释图像压缩技术所涉及概念的概述。计算机中图像的一般表示就像一个像素向量。每个像素由固定数量的位表示。这些位确定颜色的强度(如果是黑白图像,则为灰度;如果是彩色图像,则具有三个RGB通道)。

为什么我们需要图像压缩?

考虑一个分辨率为1000 * 1000的黑白图像,每个像素使用8位表示强度。因此,每个图像的总位数req = 1000 * 1000 * 8 = 80,000,000位。并考虑一下上述类型图像是否为每秒30帧的视频,则3秒视频的总位为:3 *(30 *(8,000,000))= 720,000,000位

正如我们看到的那样,要存储3秒的视频,我们需要那么多的位,这是非常巨大的。因此,我们还需要一种具有适当表示形式的方法,以便以最少的位数存储有关图像的信息,而又不会丢失图像的字符。因此,图像压缩起着重要的作用。

图像压缩的基本步骤:

  • 应用图像变换
  • 量化水平
  • 编码序列。

变换图像

什么是转换(数学上):

它从一个域(矢量空间)到另一个域(其他矢量空间)映射的函数。假设T是一个变换,f(t):X-> X’是一个函数,则T(f(t))称为该函数的变换。

通常,我们将函数从一个向量空间转换为另一向量空间,因为当我们在新投影的向量空间中这样做时,我们会推断出有关该函数的更多信息。

现实生活中的转换示例:

棱镜颜色角度波长波长

在这里,我们可以说棱镜是一个转换函数,其中它将白光(f(t))分成其分量,即白光的表示形式。
我们观察到,与白光相比,我们可以推断出更多有关光的信息。这就是变换如何以有效的方式帮助理解功能的方式。

图像处理中的转换

图像也是像素位置的函数。即I(x,y)其中(x,y)是图像中像素的坐标。因此,我们通常将图像从空间域转换到频域。

为什么图像变换很重要:

  • 容易知道组成图像并帮助压缩表示形式的所有主要成分是什么。
  • 它使计算变得容易。
    • 示例:在变换之前在时域中查找卷积:

      在转换之前在时域中寻找卷积

      变换后在频域中找到卷积:

      变换后在频域中查找卷积

    • 因此我们可以看到,随着切换到频域,计算成本降低了。我们还可以看到,在时域中,卷积等效于积分运算符,但在频域中,卷积等于项的简单乘积。因此,这种方式降低了计算成本。

因此,通过这种方式,当我们将图像从域转换为其他图像时,执行空间滤波操作会变得更加容易。

量化

过程量化是至关重要的步骤,其中,基于像素上定义的数学函数,将各种强度级别分组为特定级别。通常,通过采用固定的过滤器大小“ m”并除以过滤器的每个“ m”项并将其四舍五入为最接近的整数,然后再乘以“ m”来确定较新的级别。

基本量化函数:[pixelvalue / m] * m

因此,像素值中最接近的像素值近似于单个级别,因此随着图像中涉及的不同级别的数量越来越少。因此,我们减少了强度水平上的冗余。因此,量化有助于减少不同的水平。

例如:(m = 9)

因此,在上面的示例中,我们看到两个强度值都向上舍入为18,从而减少了图像规格中不同级别(涉及的字符)的数量。

符号编码

符号阶段涉及以否的方式对图像中涉及的不同字符进行编码。根据角色出现的频率,表示字符所需的位数是最佳的。简而言之,在此阶段,将为存在的不同字符生成代码字。通过这样做,我们旨在减少数量。代表强度水平并以最佳位数表示它们所需的位数。

有很多编码算法。一些受欢迎的是:

  • 霍夫曼可变长度编码。
  • 游程编码。

在霍夫曼编码方案中,我们尝试以一种方式找到编码,使得这些编码中的任何一个都不是另一个的前缀。并且基于字符出现的可能性,确定代码的长度。为了获得最佳解决方案,最可能的字符具有最小的长度代码。

例子:

霍夫曼编码方案

我们看到了实际的8位表示形式以及新的较小长度的代码。代码生成的机制是:

代码生成机制

因此,我们看到如何减少位数的存储要求,如下所示:

因此,以这种方式,量化机制有助于压缩。图像一旦被压缩,很容易将其存储在设备上或进行传输。并且根据所使用的转换类型,量化类型和编码方案,基于压缩的逆逻辑设计解码器,以便可以基于从压缩图像中获得的数据来重建原始图像。