2D DCT 基函数如何交互以生成 8x8 JPEG 切片?

信息处理 图像处理 离散信号 图片 图像压缩 JPEG
2022-01-30 02:53:44

本节有点介绍。如果您想直接跳到明确概述问题的地方,请跳到这篇文章的底部。请注意,我不熟悉数学术语,因此问题大纲可能包含我为自己理解问题而创造的术语和短语。定义在此介绍部分中,并与粗体定义的术语/短语配对。

不久前,我发现您可以使用差异混合模式将图像的质量较低的 .jpeg 副本叠加在其自身之上,以创建8x8“纯 jpeg 瓷砖”(如果使用 Photoshop,请执行以下步骤):

  1. 将源图像另存为 .jpeg,其压缩级别会产生明显的质量差异
  2. 以差异混合模式将这个新的 .jpeg 叠加在源图像上
  3. 执行 aImage -> Adjustments -> Levels...以使输出更容易可见(Image -> Adjustments -> Brightness/Contrast...在图像的相似值子集上使用时可以获得类似的结果,但在将覆盖物应用于整个图像时效果不佳)

我很快注意到这些图块看起来非常有趣且像游戏一样。我的最终目标是利用它们的力量为我将围绕它们设计的视频游戏生成图块集。我需要你的帮助来理解这怎么可能!

一些共享的研究,引自这篇文章的顶部:

在图像的标准 JPEG 格式中,使用离散余弦变换。但我们不是对整个图像应用变换,而是首先将图像划分为 8x8 块并对每个图像应用变换。因此,在量化过程中,我们去除了较高频率的小系数。这些步骤在此处进行了详细说明

我之前访问过链接的维基百科 JPEG 文章,它在#Encoding 小节中谈到了我需要理解的内容:色彩空间转换下采样块拆分离散余弦变换等等。我敢肯定对某些人可能有用,但是该领域的行话非常密集,我很快就不知所措和灰心丧气。

为了避免这些负面情绪,我转向实验,试图发现如何产生工程结果。以下是我运行的一些测试:

我已经确定 JPEG 切片有多种原型:灰度、红色/青色、绿色/品红色、蓝色/黄色和混合。我的意思是,当您查看形成 8x8 JPEG 平铺的像素时,它们之间的关系中存在一种模式。也许这可以用这张图片来最好地解释:

6 个 JPEG 瓦片被放大显示,与它们从中提取的较大输出图像隔离开来: 2 个可以被描述为仅包含蓝色、黄色和沿它们之间的线性插值的颜色; 2 可以类似地描述为绿色和品红色; 和 2 属于混合原型,包含超过 2 个基本色调。

我提取了某些瓷砖原型的多个示例来说明不同的颜色流模式,从技术上讲,它们被描述为由每个颜色通道上的 2D DCT 交互创建的形式(YCBCR)。


问题:

我不知道如何始终如一地生成特定原型的 JPEG 图块,也不知道如何始终生成具有特定颜色流模式的图块。我假设可能的 8x8 JPEG 瓦片的数量是有限的,如果这是正确的,是否有某种“JPEG 主图像”可以通过上述步骤运行以生成所有可能的(或全面的原型子集)JPEG 瓦片?或者,也许作为实现我的目标的更有效的方法,我是否可以通过某种方式直接使用二维 DCT 基函数来手动创建看起来像我想要的样子的 JPEG 图块?

如果可能的话,请尽量把你的答案用外行的话,或者至少包括一个外行的答案摘要。我是一名艺术家,在 Photoshop 中制作这些 JPEG 瓷砖,而密集的数学内容让我很快就不知所措。任何和所有的帮助表示赞赏,谢谢!!!

0个回答
没有发现任何回复~