【待续】数媒引论 复习指北

Table of Contents

General

引论体型5个大题,每个20分。前面4个各自围绕一个主题,三四个小问题,基本概念,计算,流程(算法),数据结构范畴等。主题必然包括音频、图像、图形;ab卷,剩下的一个可能来自视频,或者动画游戏。知识点范围:课件。最后一个大题,和往年差不多,围绕一类应用的策划分工,要求有可行性,各部分逻辑相互支撑,不能空想。不及格很难。

开什么玩笑,要吐了(

真题分析

18年 A卷

填空

每空1分,共20分。

  1. 国际电信联盟从技术的角度定义媒体,包括感觉(Perception)、表示(Presentation)、显示(Display)、存储(Storage)以及传输(Transmission)。按照该定义,光盘、硬盘属于存储,动画属于感觉,H264 属于表示,移动网络属于传输,液晶显示器属于显示
  2. 分辨率为 1600×1200 的图像,共有约1.92M像素点,如果图像为 32 位颜色,不采用压缩方法存储该图像需要约7.32MB存储空间。用 44.1kHz、16bit 来进行立体声采样,录制 2 分钟的音频,数据量约为20.67MB。
  3. 打印机通常采用的颜色模型为CMYK,HSB颜色模型的三个分量分别表示色相(Hue)饱和度(Saturation)亮度(Brightness)
  4. 典型的游戏类型缩写,RPG 表示Role-Playing Game(角色扮演游戏),FPS 表示First-Person Shooter(第一人称射击游戏),RTS 表示Real-Time Strategy(实时战略游戏)
  5. MIDI是用于在乐器、音乐合成器和计算机之间交换音乐信息的一种标准协议,适合描述乐曲音乐,不适合描述自然界的声音和人声等声音。
  6. H.264/AVCH.265/HEVC都是常见的视频压缩编码方案。

简答

本部分回答皆由chatGPT回答,除非特别说明。

Q:将模拟声音数字化为 CD 音质的 Mp3 音乐,主要步骤是什么?

A:采样(将模拟声音信号采样为数字信号。CD音质要求44.1kHz)-> 量化(将连续的数字信号转换为离散的数字信号。CD音质要求16bits)-> 压缩编码(将原始的数字信号转换为一种压缩后的格式,以减少数据量。MP3 格式采用的是有损压缩的方式,通过抛弃人耳听不到的高频信号和利用人耳听觉模型的特性,可以将数据压缩至原来的 1/10 到 1/12 左右的大小)-> 存储

Q:YUV 颜色模型的概念、用途及特点。

A:YUV 颜色模型是一种将彩色图像分解为亮度(Y)和色度(U、V)三个分量的颜色空间。它的用途主要是在视频编码和图像处理领域,特点是可以有效地压缩彩色图像的大小,减少存储空间和传输带宽,同时能够保持较高的图像质量。其中:

  • 亮度(Y)表示图像的亮度信息,即黑白部分。在 YUV 颜色模型中,亮度分量对应的是灰度图像,取值范围为 0 到 255,值越大表示亮度越高。
  • 色度(U、V)表示图像的色度信息,即彩色部分。在 YUV 颜色模型中,色度分量用来表示颜色的信息,它们分别对应蓝色和红色通道,取值范围同样为 0 到 255。

与 RGB 颜色模型相比,YUV 颜色模型的一个显著特点是分离了亮度和色度信息,这使得在对彩色图像进行压缩和处理时更加方便和高效。在视频编码中,一般会对亮度分量和色度分量分别进行压缩编码,以达到更好的压缩效果。此外,YUV 颜色模型还具有适应性,可以根据不同场景调整色度分量的比重,以适应不同的图像内容和压缩需求。

Q:真彩色图、伪彩色图、灰度图与二值图

A:下面分别介绍真彩色图、伪彩色图、灰度图和二值图:

  • 真彩色图:真彩色图是一种由 RGB 颜色空间构成的图像,其中每个像素包含红色、绿色和蓝色三个颜色通道的值。每个颜色通道都有 8 位,可以表达 256 种不同的亮度值,因此真彩色图可以呈现非常细腻和真实的颜色细节。
  • 伪彩色图:伪彩色图是使用一种非 RGB 颜色空间的方法将图像的亮度信息映射到颜色上,从而得到一种颜色图像。伪彩色图的颜色通常不是真实的颜色,而是通过一定的颜色映射规则将亮度值映射为颜色值。伪彩色图常用于医学图像、卫星图像等领域,可以增强图像的可视化效果。
  • 灰度图:灰度图是一种只包含亮度信息的图像,通常使用单个颜色通道来表示图像中的每个像素,这个颜色通道的取值范围一般为 0 到 255,表示黑色到白色的灰度级别。灰度图只包含亮度信息,没有颜色信息,因此它在某些应用中比真彩色图和伪彩色图更有效。
  • 二值图:二值图是一种只包含黑色和白色两种颜色的图像,通常被用来表示图像中的物体或者背景。二值图中的每个像素只有两种取值,通常是 0 和 1,表示黑色和白色。二值图通常由灰度图经过阈值处理得到,它们在数字图像处理中被广泛应用于图像分割、物体识别、字符识别等方面。

Q:列举滤镜在数字图像处理中的五类典型应用

A:滤镜在数字图像处理中具有广泛的应用,下面列举五类典型的应用:

  • 锐化滤镜:锐化滤镜可以增强图像的边缘和细节,使得图像看起来更加清晰和鲜明。常见的锐化滤镜有拉普拉斯滤波、Sobel 滤波和Prewitt 滤波等。
  • 模糊滤镜:模糊滤镜可以降低图像的细节和噪声,使得图像更加柔和和模糊。常见的模糊滤镜有高斯滤波、均值滤波和中值滤波等。
  • 色彩调整滤镜:色彩调整滤镜可以调整图像的色彩平衡、亮度、对比度和饱和度等属性,以达到更好的视觉效果。常见的色彩调整滤镜有色彩平衡、曲线调整和色阶调整等。
  • 色彩特效滤镜:色彩特效滤镜可以改变图像的色彩外观和氛围,比如使图像呈现黑白、复古、冷暖等效果。常见的色彩特效滤镜有灰度化、交叉处理和暗角处理等。
  • 图像增强滤镜:图像增强滤镜可以增强图像的对比度和色彩饱和度,从而使得图像更加鲜明和生动。常见的图像增强滤镜有直方图均衡、自适应增强和细节增强等。

Q:视频蒙太奇与转场特效

A:视频蒙太奇是将多段视频或图片素材通过剪辑、变形、混合等手段拼接在一起,形成一个新的视频作品。视频蒙太奇可以用于讲述一个完整的故事,或是创造一个非现实的画面效果。常见的视频蒙太奇技术包括画面分割、叠加、抠像、遮罩、混合等。通过这些技术,可以将多个画面和素材混合在一起,形成一个连贯、流畅的视频作品;转场特效是指在两个不同的视频片段之间添加一种过渡效果,使得两个画面的切换更加自然流畅。转场特效通常会在一个画面慢慢消失,另一个画面慢慢出现的过程中,添加一些动态的效果,比如模糊、扭曲、缩放、渐变等。常见的转场特效包括淡入淡出、百叶窗、推拉门、放大缩小、旋转等。通过添加这些特效,可以使得视频画面的转换更加自然和有趣。

Q:游戏策划中的龙与地下城规则

A:龙与地下城规则是名为Dungeons & Dragons的角色扮演游戏规则,1974 年发行,最新版本是 2008 年发行的第四版。很多游戏(如冰风谷和无冬之夜)和小说(如龙枪系列和黑暗精灵系列)都部分建立在这规则之上。玩的时候一般需要很多人聚到一起面对面,玩家(Player Character,简称 PC)需要准备好人物卡,城主(Dungeon Master,简称 DM)需要准备好情节,地图,遭遇,怪物,一个长而连贯的剧情被称为战役。玩的时候需要玩家和城主进行角色扮演,进行游戏中需要的判定,如命中或者伤害时需要用到骰子,核心的三本规则书《城主指南》(Dungeon Master’s Guide)《玩家手册》(Player’s Handbook)和《怪物图鉴》(Monster Manual)被称为三宝书。1

Q:三维游戏中,你看到一片树叶从空中落下,GPU 做了哪些计算

A:在三维游戏中,当你看到一片树叶从空中落下时,GPU会进行以下计算:

  • 物理模拟计算:树叶的下落需要受到重力、空气阻力等物理因素的影响,GPU会使用物理模拟算法来模拟这些因素。这些计算需要处理大量的物理特性,例如物体的形状、质量、空气密度、重力加速度等。
  • 渲染计算:当树叶下落时,GPU需要计算它的位置、方向、速度等参数,并且实时更新它的状态。这些计算需要考虑物体的位置、大小、旋转、颜色等方面。此外,GPU还需要计算光照、阴影等效果,以提高场景的真实感。
  • 碰撞检测计算:在树叶下落的过程中,如果它碰到了其他物体,例如建筑、地形等,GPU需要进行碰撞检测计算,以确定树叶是否会弹开、弯曲、断裂等。

Q:迪士尼二维动画法则中 Squash and Stretch

A:Squash and Stretch 指在动画中通过变形来表现物体的弹性和重量感,使得动画更加生动、有趣和富有表现力。具体来说,Squash and Stretch 的基本思想是在物体移动或者发生变形时,根据物体的弹性和重量感,对其进行适当的压缩或者拉伸变形。例如,当一个球在地面上弹跳时,球会因受到重力和弹力的作用而发生变形,压缩成扁平的形状,然后在弹力的作用下重新恢复原状。

Squash and Stretch 可以用来表现物体的质量、速度、弹性等特征,从而增强动画的真实感和表现力。此外,它还可以用来表达物体的情感和状态,例如当角色感到惊讶、害怕或者愤怒时,可以通过变形来表现其情感和状态。

Q:在 2D 游戏中,计算机如何判定两个玩家角色碰撞了,列举出不少于两种方法

A:在2D游戏中,计算机可以使用多种方法来判定两个玩家角色是否发生了碰撞。以下列举不少于两种方法:

  • 矩形碰撞检测:这是一种简单而有效的碰撞检测方法,即判断两个角色所处的矩形是否有重叠部分。具体来说,可以通过比较两个角色的位置、大小等参数,计算出它们所处的矩形,然后判断这两个矩形是否有重叠部分。如果有重叠部分,就可以判定两个角色发生了碰撞。
  • 像素碰撞检测:这是一种更精确的碰撞检测方法,即判断两个角色的像素是否有重叠部分。具体来说,可以将两个角色的像素点进行比较,判断它们是否有重叠部分。如果有重叠部分,就可以判定两个角色发生了碰撞。相比于矩形碰撞检测,像素碰撞检测可以更加准确地判断碰撞,但是计算量也更大。

除了以上两种方法,还有其他的碰撞检测方法,例如圆形碰撞检测、多边形碰撞检测等。不同的方法适用于不同的场景和需求,需要根据实际情况进行选择和优化。

Q:虚拟物体与实拍视频融合过程中的难点问题有什么

A:在虚拟物体与实拍视频融合过程中,存在许多难点问题,下面列举一些比较常见的问题:

  • 视角匹配问题:要实现虚拟物体与实拍视频的无缝融合,需要确保虚拟物体的视角和实拍视频的视角匹配。如果视角不匹配,虚拟物体在视频中的位置和角度就不会真实地表现出来。
  • 光照匹配问题:要使虚拟物体和实拍视频看起来像是在同一个场景中,需要保证虚拟物体和实拍视频的光照匹配。如果虚拟物体的光照和实拍视频的光照不一致,就会让虚拟物体在视频中显得不真实。
  • 阴影匹配问题:虚拟物体的阴影也需要与实拍视频的阴影匹配。如果虚拟物体的阴影不真实,就会破坏虚拟物体和实拍视频的融合效果。
  • 景深匹配问题:景深是指焦点前后的景物的清晰程度。要使虚拟物体看起来像是在实拍视频中,需要保证虚拟物体和实拍视频的景深匹配。如果景深不匹配,就会让虚拟物体看起来不真实。
  • 物体遮挡问题:在实拍视频中,往往会存在一些遮挡物体。要使虚拟物体看起来像是在实拍视频中,需要将虚拟物体与遮挡物体进行融合。这需要使用遮挡算法来计算虚拟物体和遮挡物体的交叉部分,并且需要考虑遮挡物体的透明度和虚拟物体的反射。

总之,在虚拟物体与实拍视频融合的过程中,需要解决多个问题,包括视角匹配、光照匹配、阴影匹配、景深匹配和物体遮挡等问题。要达到良好的融合效果,需要使用高效的算法和技术,并进行不断的优化和调整。

综合设计

Q:以四面体为例,利用 C 语言或其他类似语言,设计其边界表示方法和空间表示方法的数据结构(结构体),比较两种表示方法的优缺点。

A:以四面体为例,我们可以设计两种不同的数据结构来表示其边界和空间。以下是两种数据结构的设计和比较:

边界表示方法的数据结构设计:

我们可以使用半边数据结构(DCEL)来表示四面体的边界。该数据结构中,每个顶点、每条边和每个面都有一个相关联的半边,半边可以存储其起始顶点、结束顶点、相邻面和相邻边等信息。对于四面体,我们可以将其四个顶点和四个面都表示为半边数据结构,如下所示:

typedef struct _Halfedge {
    int start;    // 起始顶点的索引
    int end;      // 结束顶点的索引
    int face;     // 相邻面的索引
    int next;     // 相邻的下一条边的索引
    int prev;     // 相邻的前一条边的索引
} Halfedge;

typedef struct _Tetrahedron {
    Halfedge vertices[4];   // 四个顶点
    Halfedge faces[4];      // 四个面
} Tetrahedron;

优点:

  • 边界表示方法更加直观,易于理解和构建;
  • 可以轻松地添加和删除四面体的面和边;
  • 在进行拓扑操作时,半边数据结构可以提供更快的访问和查询速度。

缺点:

  • 边界表示方法存储的信息较少,难以支持一些高级操作,如计算四面体的体积或表面积等;
  • 对于一些复杂的拓扑结构,边界表示方法可能无法提供足够的信息。

空间表示方法的数据结构设计:

我们可以使用四面体网格数据结构来表示四面体的空间结构。该数据结构中,每个四面体都由其四个顶点定义,可以使用一个包含所有四面体的数组来表示四面体网格。如下所示:

typedef struct _Tetrahedron {
    Vector3 vertices[4];   // 四个顶点
} Tetrahedron;

typedef struct _TetrahedronMesh {
    Tetrahedron tetrahedra[N];   // 包含所有四面体的数组
} TetrahedronMesh;

优点:

  • 空间表示方法存储了四面体的几何信息,可以进行一些高级的几何计算;
  • 对于一些复杂的拓扑结构,空间表示方法可以提供更多的信息。

缺点:

  • 空间表示方法的存储空间较大,可能会浪费一些内存;
  • 在进行拓扑操作时,空间表示方法可能需要更长的访问时间和计算时间。

Q:利用数组存放灰度图:

  • k 代表一个 3*3 的高斯卷积核,补充完整 k 的数据(2 分)。
  • 补充完整函数 imgConv,读入宽度 w,高度 h 的图像数据 in,返回图像的平均亮度(5 分);运用卷积核 k,对图像进行平滑处理,得到目标图像数据 out,其宽度为 w-2,高度为 h-2(3 分)
float k = { };
float ImgConv(unsigned char* in, unsigned char* out, int w, int h, float* k)

A:

float k[3][3] = {
    {0.0625f, 0.125f, 0.0625f},
    {0.125f, 0.25f, 0.125f},
    {0.0625f, 0.125f, 0.0625f}
};
float ImgConv(unsigned char* in, unsigned char* out, int w, int h, float* k) {
    float sum = 0.0f;
    int kh = 3;  // 卷积核的高度
    int kw = 3;  // 卷积核的宽度
    // 对于输入图像中的每个像素
    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            float val = 0.0f;
            // 对于卷积核中的每个元素
            for (int m = -kh / 2; m <= kh / 2; ++m) {
                for (int n = -kw / 2; n <= kw / 2; ++n) {
                    // 计算卷积核中当前元素的位置
                    int kx = n + kw / 2;
                    int ky = m + kh / 2;
                    // 计算输入图像中当前像素的位置
                    int x = j + n;
                    int y = i + m;
                    // 如果当前像素不在输入图像范围内,则跳过
                    if (x < 0 || x >= w || y < 0 || y >= h) continue;
                    // 获取输入图像中当前像素的值和卷积核中当前元素的权重
                    unsigned char pixel = in[y*w + x];
                    float weight = k[ky*kw + kx];
                    // 计算当前像素的加权值
                    val += (float)pixel * weight;
                }
            }
            // 将卷积结果写入输出图像中
            out[i*w + j] = (unsigned char)val;
            // 累计当前像素的值,用于计算平均亮度
            sum += (float)pixel;
        }
    }
    // 计算并返回平均亮度
    return sum / (w * h);
}

该函数使用了一个 3×3 的卷积核进行图像卷积操作,并返回输入图像的平均亮度。函数中使用了嵌套的循环来遍历输入图像中的每个像素,对于每个像素,将卷积核应用于该像素及其周围的像素,并将卷积结果写入输出图像中。同时,该函数还累计了输入图像中的所有像素值,以便最后计算平均亮度。

void smoothImage(unsigned char* in, unsigned char* out, int w, int h, float* k) {
    // 循环遍历图像中每个像素
    for (int i = 1; i < h - 1; ++i) {
        for (int j = 1; j < w - 1; ++j) {
            // 根据卷积核 k 对每个像素进行卷积计算
            float sum = 0;
            for (int ki = -1; ki <= 1; ++ki) {
                for (int kj = -1; kj <= 1; ++kj) {
                    sum += in[(i+ki)*w+j+kj] * k[(ki+1)*3+(kj+1)];
                }
            }
            // 将计算结果存储到输出图像的对应位置
            out[(i-1)*(w-2)+(j-1)] = (unsigned char)sum;
        }
    }
}

其中,参数 in 表示输入图像数据的指针,out 表示输出图像数据的指针,w 和 h 分别表示输入图像的宽度和高度,k 表示平滑卷积核的数组指针。函数首先循环遍历图像中的每个像素,然后根据卷积核 k 对该像素及其周围的 8 个像素进行卷积计算,最后将计算结果存储到输出图像的对应位置。函数返回值为 void,表示输出图像数据直接保存在 out 指针所指向的内存中。

需要注意的是,由于卷积核 k 的大小为 3×3,因此在对图像进行卷积计算时需要从像素的左上方开始计算,因此循环的起始位置为 (1, 1),而不是 (0, 0)。此外,由于输出图像的大小比输入图像小 2 个像素,因此循环的结束位置为 (h-1, w-1),而不是 (h, w)。


Q:假设你负责一个由 5~6 位同学组成的制作团队,制作一段展示软件学院校园文化的三维动画视频。按照 3D Animation Production Pipeline,给出一个简化的计划,包括制作过程中的主要步骤及分工。

A:按照3D Animation Production Pipeline,展示软件学院校园文化的三维动画视频制作的主要步骤及分工可以分为以下几个阶段:2

  1. Pre-production(前期制作)
    1. Concepting(构思):全体团队成员一起讨论,确定作品的主题和目标观众,然后进行头脑风暴,提出各种不同的想法和概念,选择最有意义的想法进行开发。
    2. Storyboarding(故事板):根据确定的创意,绘制草图和图表,以帮助团队成员更好地理解故事情节,确保整个作品的一致性和流畅性。分工:主要由美工负责,其他成员可以提供反馈。
  2. Production(制作过程)
    1. 3D modelling(3D 建模):根据故事板中的场景和角色设计,利用专业的 3D 建模软件创建场景和角色的 3D 模型。分工:美工负责建模和贴图,程序员提供技术支持,确保模型能够被导入到后续的制作流程中。
    2. Material Texture Design(材质质感设计):对建模完成的模型进行灯光和材质的设置,使其拥有更真实的感觉。这一步可以帮助团队成员更好地理解角色和场景之间的关系,并加强整体氛围。分工:美工和程序员共同合作。
    3. Animation(动画):根据故事板中的故事情节,设计并制作角色和场景的动画。这一步需要仔细地规划,确保角色和场景的动作自然而流畅。分工:动画师负责动画的制作,程序员为其提供技术支持。
    4. Rendering(渲染):在完成了动画制作之后,将场景和角色导入渲染软件,为其添加特效和合成。分工:美工负责渲染和特效制作,程序员为其提供技术支持。
  3. Post-production(后期制作):将渲染出来的图像和视频剪辑、编辑、配音、配乐和特效等等进行后期制作,最终形成一个完整的视频作品。分工:美工、程序员和其他成员共同参与。

18年 B卷

简答

Q:简单说明图像傅里叶变换的至少两种应用

A:以下是图像傅里叶变换的两种常见应用:

  • 图像滤波:通过对图像的傅里叶变换进行滤波操作,可以对图像进行一些去噪、平滑或锐化等操作。通过在频域对图像进行操作,可以避免在空间域中出现的一些锯齿或边缘效应。
  • 图像压缩:在图像压缩中,傅里叶变换被广泛应用。由于图像在频域中往往存在很多的高频分量,这些高频分量对图像的表达并不重要,所以可以通过丢弃一部分高频分量来实现压缩的效果。

Q:迪士尼动画法则之挤压和拉伸(SQUASH & STRETCH)

A:略。见A卷简答

Q:表观材质建模中的漫反射与镜面反射分量

A:漫反射是指光线照射在一个不光滑的表面上,反射出去的光线会均匀地向各个方向散射。因此,漫反射通常被用于描述那些表面材质比较粗糙的物体,比如石头、混凝土等。在渲染时,漫反射反射分量的强度与光源入射角度、表面法线方向以及材质的反射系数等因素有关。

镜面反射是指光线照射在一个非常光滑的表面上,反射出去的光线会聚集在同一个方向,形成镜面反射。因此,镜面反射通常被用于描述那些表面材质比较光滑的物体,比如玻璃、金属等。在渲染时,镜面反射分量的强度与光源入射角度、表面法线方向、视线方向以及材质的反射系数等因素有关。

Q:粒子动画技术及其典型应用

A:粒子动画技术是一种通过在场景中添加大量小型粒子来模拟特效的技术。每个粒子具有位置、速度、大小、颜色等属性,可以通过控制这些属性来表现出不同的效果,如火、雨、烟雾、爆炸等。

粒子动画技术的典型应用包括:

  • 特效制作:通过控制粒子属性,模拟出不同的特效效果,如火焰、雾气、爆炸等。
  • 游戏场景:粒子动画技术可以用于游戏场景中,模拟出雨、雪、烟雾、火焰等自然场景,提高游戏的真实感。
  • UI设计:通过添加粒子特效,可以使UI设计更加生动,吸引用户的注意力,提高用户体验。
  • 影视制作:粒子动画技术在影视制作中应用广泛,如模拟天气、特效、光影等。

Q:虚拟物体的层次包围盒及其作用

A:虚拟物体的层次包围盒(Bounding Volume Hierarchy,BVH)是一种将虚拟物体按照层次结构组织起来的数据结构。BVH包含一系列边界体,可以是盒子、球形、圆锥形等。每个边界体可以包含其他边界体和物体,从而形成了层次结构。

在虚拟物体的渲染和碰撞检测中,BVH可以用来提高性能和准确度。具体来说,BVH的作用有以下几个方面:

  • 减少需要处理的物体数目:BVH可以通过逐级测试边界体之间的交集关系,来排除与视点或射线没有交集的物体,从而减少需要处理的物体数量。这样可以提高渲染速度和碰撞检测的效率。
  • 提高碰撞检测的精度:对于每个物体,BVH中都可以找到与之相交的边界体,从而可以对这些物体进行进一步的精确碰撞检测。这样可以提高碰撞检测的精度。
  • 优化物体的动态更新:对于需要频繁更新的物体,BVH可以通过动态重建来更新边界体的位置和大小,从而避免不必要的重复计算。
  • 优化光线追踪:在光线追踪中,BVH可以用来提高光线与物体的相交测试效率,从而减少光线追踪的计算量,提高渲染速度。

综合

Q:听歌识曲是典型的数字音频处理应用。以一段 15 秒左右的语音样本为例,简述声音如何分帧,如何提取语音特征以方便特征比对(10 分)。

A:声音分帧是数字音频处理中的一项基础操作,其目的是将声音信号分解成一系列短时段内的小片段,每个小片段的长度通常为 10-30 毫秒。常见的方法是使用短时傅里叶变换 (Short-time Fourier Transform, STFT)。具体步骤如下:

  • 选定帧长和帧移。通常情况下,帧长和帧移都是常数。帧长一般在 20-40 毫秒左右,帧移则通常为帧长的一半或三分之一。
  • 对原始信号进行分帧。分帧时将原始信号按照帧长进行分割,每相邻两帧之间的距离为帧移。
  • 对每一帧进行加窗操作。加窗的目的是为了减小分析过程中信号突变的影响,通常使用汉明窗或汉宁窗。
  • 对每一帧进行傅里叶变换。傅里叶变换将时域信号转换到频域,并计算出每个频率分量的幅度和相位。
  • 用一组梅尔滤波器对每一帧的频谱进行滤波。梅尔滤波器将频域信号映射到梅尔频率上,将其压缩,增加对人耳敏感度高频率区域的分辨率。
  • 对滤波后的结果进行离散余弦变换 (Discrete Cosine Transform, DCT),将频率分量转换为倒谱系数。这些倒谱系数可以表示音频的特征,例如声调、节奏、音高等。

提取特征后,可以使用比对算法将其与已知音频库中的曲目进行比对,从而实现歌曲识别。常见的比对算法包括基于动态时间规整 (Dynamic Time Warping, DTW) 和基于高斯混合模型 (Gaussian Mixture Model, GMM) 的方法。


Q:翻译下面 BSP 树的原理及其应用的介绍或者用自己的语言描述(10 分)。

In computer science, binary space partitioning (BSP) is a method for recursively subdividing a space into two convex sets by using hyperplanes as partitions. This process of subdividing gives rise to a representation of objects within the space in the form of a tree data structure known as a BSP tree. The structure of a BSP tree is useful in rendering because it can efficiently give spatial information about the objects in a scene, such as objects being ordered from front-to-back with respect to a viewer at a given location.

In a scene with millions of polygons, figuring this out for each and every polygon would take a massive amount of time. To save time in rendering, the renderer splits polygons into groups. These groups become the branches of the BSP tree. Then the algorithm is able to traverse the tree (move over branches and nodes) to find polygons with similar characteristics, and treat them as a group rather than individually.

Other applications of BSP include: performing geometrical operations with shapes (constructive solid geometry) in CAD, collision detection in robotics and 3D video games, ray tracing, and other applications that involve the handling of complex spatial scenes.

A:翻译(来自 Google Translate):

在计算机科学中,二元空间划分(BSP)是一种以超平面为划分,递归地将一个空间划分为两个凸集的方法。这种细分过程以称为 BSP 树的树数据结构的形式产生空间内对象的表示。BSP 树的结构在渲染中很有用,因为它可以有效地提供有关场景中对象的空间信息,例如相对于给定位置的观察者从前到后排序的对象。

在具有数百万个多边形的场景中,为每个多边形计算出这一点将花费大量时间。为了节省渲染时间,渲染器将多边形拆分成组。这些组成为 BSP 树的分支。然后该算法能够遍历树(移动分支和节点)以找到具有相似特征的多边形,并将它们视为一个组而不是单独处理。

BSP 的其他应用包括:在 CAD 中执行形状几何运算(构造实体几何)、机器人和 3D 视频游戏中的碰撞检测、光线追踪以及涉及处理复杂空间场景的其他应用。


Q:建立一个仿真太阳系运转的三维场景(15 分)。

什么是场景图?给出使用场景图描述的太阳及代表行星、卫星(不需要所有)层次关系,说明在这个层次关系图中,如何计算月球相对于太阳的运动。

如何设置摄像机的内外参数,进而调整参数支持 Zoom in/out(推进、拉远)方式观察场景。

(我认为本题chatGPT无法给出合适的答案。内容仅供参考。)

A:场景图(Scene Graph)是组织和管理三维虚拟场景的一种数据结构,是一个有向无环图(Directed Acyclic Graph,DAG)。3

在太阳系的场景中,太阳是所有行星和卫星的中心,因此太阳是场景图的根节点,而行星和卫星是根节点的子节点。

太阳系中的行星和卫星是根据万有引力定律运动的,可以通过计算每个行星和卫星的速度和加速度来模拟它们的运动。具体而言,每个行星和卫星都有自己的初始位置和速度,根据万有引力定律和牛顿第二定律计算它们在每个时刻的加速度,并使用欧拉积分法来更新它们的位置和速度。

摄像机的内外参数包括摄像机位置、朝向、视场角、宽高比、近截面和远截面等。在这个太阳系场景中,摄像机的位置可以固定在某个位置,例如以太阳为中心的远离太阳的位置。视场角和宽高比可以根据屏幕大小和分辨率进行调整。近截面和远截面可以根据太阳系中物体的距离进行设置,以确保所有物体都在可视范围内。

支持 Zoom in/out 的方式观察场景可以通过调整摄像机的位置和视场角来实现。在拉近时,摄像机需要向太阳移动,并减小视场角;在推远时,摄像机需要远离太阳,并增大视场角。


Q:图像与视频相关问题(15 分)

  1. 关于颜色空间与 YUV 信号亚采样,完成下面连个表格:
颜色空间 空间座标轴的含义 主要应用场景
RGB
CMYK
YUV
采样格式 YUV 4:2:2 YUV 4:1:1
原始信号 [Y0 U0 V0][Y1 U1 V1][Y2 U2 V2][Y3 U3 V3]
采样信号
还原信号 [Y0 U0 V1][Y1 U0 V1][Y2 U2 V3][Y3 U2 V3] [Y0 U0 V2][Y1 U0 V2][Y2 U0 V2][Y3 U0 V2]
  1. JPG 是常见的图像存储格式,但面对某些应用时也存在不足。列举四类不足,并分别有针对性的说明可以选择其他哪种存储格式。
  2. 一部 8K 立体视频,列举其主要参数,并给出依据这些参数计算其码率的方法。8K 视频推广应用面临的主要问题你认为包括哪些方面。

A:

  1. emmm
  2. JPG 是一种非常流行的图像存储格式,但在某些情况下存在不足,以下是常见的四类不足及对应的解决方案:
    • 有损压缩:JPG 使用有损压缩算法,因此压缩后的图像质量会有所降低,特别是对于那些颜色细节和纹理非常重要的图像。解决方案:无损压缩格式,如 PNG 和 BMP,虽然文件大小通常比 JPG 更大,但不会损失图像质量。
    • 无法存储透明度信息:JPG 不支持图像的透明度信息,因此在需要支持透明度的应用中不太适用。解决方案:支持透明度信息的图像格式,如 PNG。
    • 不支持动画:JPG 只能存储静态图像,无法存储动画。解决方案:GIF 和 APNG 是常见的动画图像格式。
    • 不支持分层信息:JPG 只能存储一层的信息,无法像 PSD 或 TIFF 那样存储多层信息,因此不适合用于需要分层信息的应用。解决方案:PSD、TIFF、AI 等多层支持的图像格式,它们可以在单个文件中存储多个图层和对象,适合用于设计和编辑图像。
  3. 一般来说,8K立体视频的分辨率为7680×4320,帧率可以达到60帧/秒,编码格式可以选择HEVC(H.265)或AV1等高效编码格式。

    计算8K立体视频的码率可以使用以下公式:码率 = 分辨率 x 帧率 x 每像素位数 x 压缩比。其中,每像素位数与压缩比可以根据具体的编码格式和质量设置来确定。

    8K视频推广应用面临的主要问题包括以下几个方面:

    • 硬件设备:8K视频需要高性能的硬件设备才能正常播放,包括显示屏幕、显卡、CPU等。这给消费者带来了较高的成本负担,也限制了8K视频的推广速度。
    • 带宽压力:8K视频的码率非常高,需要较大的带宽才能进行流畅的传输和播放。在网络速度和稳定性存在问题的地区,8K视频的传播和播放可能会受到影响。
    • 内容创作:8K视频需要高质量的拍摄设备和后期处理技术才能达到较高的画面质量,这增加了视频创作者的投入成本。
    • 视频平台支持:目前,支持8K视频的视频平台和设备还相对较少,这也限制了8K视频的推广和普及。

设计

Q:如果你准备组织 4-5 名同学(可以跨专业)参加一个应用数字媒体技术展现中华文化的项目或者比赛,大概可以有暑假以及额外一个月的时间比较全身心的投入。给出你的策划书,策划书应当主要包括以下内容:

题目、背景与意义、功能与亮点、整体方案(或者流程)、任务分工及进度、团队成员构成、需要的软硬件开发环境以及数据、需要学院提供的条件。

A:以下是我的策划书:

题目:中华文化数字媒体展示

背景与意义:随着数字媒体技术的不断发展,越来越多的人开始通过数字媒体来了解、传播和展现文化。中华文化是深厚而复杂的,涵盖了历史、哲学、艺术、音乐、文学等多个方面。通过数字媒体展示中华文化,可以让更多的人了解和欣赏到中华文化的魅力和精髓,同时也可以为中华文化的传承和弘扬做出贡献。

功能与亮点:本项目将通过数字媒体展示中华文化的多个方面,包括历史、哲学、艺术、音乐、文学等。我们将使用3D建模、动画制作、交互式应用等多种数字媒体技术手段,展现中华文化的不同方面,并通过互动体验让观众更加深入地了解中华文化。

整体方案:我们将分为以下几个阶段进行:

  1. 策划与设计:确定项目的整体框架和设计概念,包括展示内容、展示形式和互动方式等。
  2. 资源收集和准备:收集和准备展示所需的资料和数据,包括图像、音频、视频、文字等。我们还需要准备硬件设备和软件工具,包括计算机、3D建模软件、动画制作软件、交互式应用开发工具等。
  3. 3D建模和动画制作:根据展示内容,制作所需的3D模型和动画。我们将使用专业的3D建模软件和动画制作软件,如Blender、Maya、3ds Max等。
  4. 交互式应用开发:将虚拟现实体验与交互式应用相结合,让观众可以通过手势、声音等方式与展示内容进行互动。

任务分工及进度:

  1. 概念设计和策划:所有团队成员共同完成,完成时间为第一周。
  2. 硬件环境搭建:由技术支持团队完成,完成时间为第二周。
  3. 软件环境搭建:由技术支持团队完成,完成时间为第三周。
  4. 数字媒体素材采集和处理:由美术设计团队完成,完成时间为第四周。
  5. 三维模型建模和贴图:由美术设计团队完成,完成时间为第五周。
  6. 动画制作:由动画制作团队完成,完成时间为第六周。
  7. 音效配乐:由音效设计团队完成,完成时间为第七周。
  8. 视频后期制作:由后期制作团队完成,完成时间为第八周。

团队成员包括:

  • 策划:1人,负责项目的整体规划和进度控制。
  • 技术支持:1人,负责硬件环境和软件环境的搭建。
  • 美术设计:2人,负责数字媒体素材采集和处理、三维模型建模和贴图。
  • 动画制作:2人,负责动画的制作。

需要的软硬件开发环境以及数据:

  1. 计算机:5台
  2. 显卡:4 张高性能显卡
  3. 软件:3D建模软件、视频编辑软件、音频编辑软件等
  4. 数据:高质量的中华文化相关数字媒体素材

需要学院提供的条件:

为了能够顺利完成这个项目,我们需要学院提供以下条件:

  1. 场地:为了能够更好的协作,我们需要一个团队可以集中办公的场地
  2. 设备:我们需要学院提供高性能的计算机和显卡

Slide 1:Intro

主题 综合应用
音频 游戏
图像 创作流程
视频 增强现实
图形
动画

Media

Media:

  • 传递信息的载体,称为媒介,也称为逻辑载体,例如文字、符号、图形、编码等。
  • 存储信息的实体,称为媒质,也称为物理媒体,例如骨片、石刻、纸、胶片、磁盘等。

国际电信联盟(International Telecommunication Union,ITU)定义媒体为:

  • 感觉(Perception):声音、文字、图像、图形、触觉、嗅觉;
  • 显示(Display):输入显示媒体,键盘、鼠标等;输出显示媒体,显示器,打印机等;(交互Interaction)
  • 表示(Presentation):各种编码:电报码,条形码,mp3等;
  • 存储(Storage):硬盘,光盘等;
  • 传输(Transmission):传输介质,如通信电缆、电波等;

Slide 2:Digital Audio Technology

About Sounds

物理学上,声音又称为声波,始于空气的振动,是一种波动的能量。一般用频率、振幅和波形三个基本特性来描述。

  • 频率是指单位时间内的振动次数,单位为赫兹(HZ,周期/秒)
  • 振幅是指发声物体在振动时偏离中心位置的幅度。
  • 波形,声波的形状。由大量不同频率振幅相位的波叠加的结果。

$$
y=Asin(\omega x+\theta)
$$

频率是声波(波)的重要特性,频率越高,声音越尖锐。

  • 生理上,人耳可听频率范围是20Hz-20KHz
  • 人类按照自身可听频率范围,将声音分为正常声、超声、次声
  • 不同的生物,可以发出和听到的声音的频率范围不同。例如,海豚音,蝙蝠的超声波定位

生理学声音:声波作用于听觉器官所引起的主观感觉。一般用响度音调音色等特征描述。

声音的物理与生理特性存在直观的联系

  • 频率影响音调:频率低,音调低沉;频率高 ,音调尖锐;
  • 振幅影响响度:振幅越大,声音越响亮;
  • 波形影响音色:波形越杂乱,音色越嘈杂。

Sound Digitalization

声音数字化一般经过三个阶段“采样量化编码

  • 采样:将(麦克风转化的)模拟信号以某一频率进行离散化样本采集
  • 量化:将采集到的样本电压或电流值进行等级量化(打分)处理
  • 编码:将分值变换成对应的二进制表示的规范

Q:数字化的过程存在误差,如何减少误差到可接受范围?
A:采样频率越高越好?量化精度越高越好?满足人的生理,经济技术可行。

Nyquist(奈奎斯特)定理:在进行模拟/数字(A/D)信号的转换时,如果采样频率为信号中最高频率2倍,则采样后的数字信号完整地保留原始信号中的信息。实际应用中,采样频率为信号最高频率的2.6~4倍。

所以:人类听力范围是20Hz-20KHz,CD音质(44.1K)> 20K * 2,工业音质(48K)采样率高于CD。

声音量化的选择一般是8位(bit,b,比特),16b,24b很罕见。

Q:为什么不是3b,7b之类的量化呢?而是选择8比特?
A:数据对齐,以字节为单位对齐数据,即使人的年龄很难超过100岁,通常依然用8b甚至4字节记录年龄,而不使用7b

Q:32b量化可以更精确的区分响度,为什么不使用呢?
A:大多数情况下,数字化声音是给人类使用的,人的生理决定了不需要超过16b的量化区分

Q:为什么是8b,16b计量,不用1B,2B计量?
A:习惯,音频流、视频流、数据流衡量的单位kbps,千位/秒,带宽

采样频率 * 样本精度(量化) * 采样声道 => 数据率 / 流码率,单位kbps, kb/s

数据率 / 流码率 越大,数字化的音质越好。

质量 采样频率(kHz) 样本精度(bit/s) 单道声/立体声 数据率(未压缩)(kb/s) 频率范围
电话 8 8 单道声 64 200~3400Hz
AM 11.025 8 单道声 88.2 20~15000Hz
FM 22.050 16 立体声 705.6 50~7000Hz
CD 44.1 16 立体声 1411.2 20~20000Hz
DAT 48 16 立体声 1536.0 20~20000Hz

例:用44.1kHz、16bit来进行立体声(即两个声道)采样(标准的CD音质),流码率为多少kbps?录制(或采集)3分钟的音频,数据量为?

$$
流码率=44.1kHz\times 16b\times 2=1411.2kbps\
数据量=1411.2kbps\times 180s=31.0078125MB
$$

大多数的声音文件存储采用、压缩的波形数据:

  • 有损压缩以破坏源文件数据方式(删除人耳听力范围之外、甚至是听力范围内的信息)来换取小体积文件的。压缩比1:10~20,常见格式(压缩编码方式)包括mp3、wma,aac
  • 无损压缩,只改变源文件数据记录方式,使其体积变小,可恢复。通常压缩比1:2。常见格式ape、flac、wav(微软)

MIDI(Musical Instrument Digital Interface )是一种标准(1983年),是一种描述乐曲的演奏方式的“音乐语言”。

MIDI 三要素:

  • 波表
  • MIDI文件,乐谱
  • MIDI播放器

波表:对各种真实乐器所能发出的所有声音(包括音域、声调)进行数字化采集,存储为波表文件WaveTable。

MIDI优点:

  • 计算机能理解的乐谱,适合制作背景音乐BGM
  • MIDI文件存储的是指令,而非采样波形。容量小,一首歌的配乐约几十K。

MIDI缺点:

  • 难以用来表现丰富多变的人声和自然界中的声音;
  • 基于录制标准乐器,音色比较单调,缺乏变化、灵魂(适度的跑音,走调)。

Digital Audio Processing Technology

核心概念:

  • 声道(Sound Channel)是指声音在录制或播放时,在不同空间位置采集或回放的相互独立的音频信号,对应于声音录制时的音源数量或回放时相应的扬声器数量。
  • 音轨(Sound Track)对应于音乐创作中的一个声部或者一种乐器(人声、和声,主旋律,副歌),或者一种语言版本,在音频处理软件中可视化为一条一条的平行“轨道”。时序,多个音轨上多个音频素材时间上的先后顺序。

常见操作:

  • 调节音频质量
    • 统一响度,降低噪声
    • 调节音调变声
    • 声音延迟回声感
  • 通过均衡器增加音效:古典、流行、爵士、摇滚、重低音
    • 什么频段,对应什么种类的乐器、人声,加强或者衰减效果是什么,对应一套音乐理论
    • 调音师经验
    • 如果人声声轨过分丰满或有隆隆声,则在100Hz处加以衰减,直至所听到的声音达到自然时为止;

制作流程:作曲,编曲,录音,编辑,混音,母带

Digital Audio Development

  • 游戏、影视应用中基于物理的动态(在线)音频渲染,而非(离线)后期合成
  • 声场分析,扬声器定位等声音设备的基础算法优化
  • 数字化声音分析、处理算法:听歌识曲;声音转换
  • 语言识别,合成。语音理解与语音文本;基于文本的语音朗读
  • 情感分析与标记;自动谱曲
  • 工业、军事、医学、气象等领域广泛应用超声波、次声波
    • 超声波倒车雷达
    • 优点,范围广、不受大雾、光线等影响
    • 缺点:(声波传播)速度慢
    • 超声波碎结石,B超,生物仿生学
    • 次声波探测大气成分

  1. <p><a href=”https://www.zhihu.com/question/20677624/answer/15823081″>https://www.zhihu.com/question/20677624/answer/15823081</a>&#160;<a href=”#fnref1:1″ rev=”footnote” class=”footnote-backref”>&#8617;</a></p>
  2. <p>See also <a href=”https://pixune.com/blog/3d-animation-pipeline/”>https://pixune.com/blog/3d-animation-pipeline/</a>&#160;<a href=”#fnref1:2″ rev=”footnote” class=”footnote-backref”>&#8617;</a></p>
  3. <p><a href=”https://zh.wikipedia.org/zh-cn/%E5%9C%BA%E6%99%AF%E5%9B%BE”>https://zh.wikipedia.org/zh-cn/%E5%9C%BA%E6%99%AF%E5%9B%BE</a>&#160;<a href=”#fnref1:3″ rev=”footnote” class=”footnote-backref”>&#8617;</a></p>
Share