1.音频信号压缩编码的标准主要有______系列、______系列和______系列。
2.音频编解码中常用的技术包括:______技术、______技术、______技术和______技术。
3.经采样、编码但未压缩的语音信号(对应G.711编码)为:______。
5.音频编码方法包括三大类:______、______和______。
6.传输语音的格式一般有:______和______。
1.标准VGA显示器接口是______针______型接口,由______、______、______三色模拟信号线和______同步、______同步两个数字信号构成。
2.CIF图像为______大小格式(像素),QCIF图像为______大小格式(像素)。
3.YCbCr和YUV是基于______的颜色空间,RGB则是基于______的颜色空间。
4.CD音频格式文件采样频率为44.1kHz,编码位数为16位,立体声双声道输出,采样时间为60s,则其数据量为 。
视频分量YUV的意义及数字化格式()
A、4:2:0 B、4:1:1、 C、4:2:2 D、4:4:4 E、多种
在MPEG标准中图像类型有( )
A、I帧图像 B、M帧图像 C、C帧图像 D、P帧图像 E、B帧图像
1、熵
2、P帧图像
3、帧间预测编码
1、列举一些音频编解码常用的实现方案。
2、请叙述MPEG视频基本码流结构
3、请叙述AMR基本码流结构
4、预测编码的基本原理是什么
5、常见的数字音频编码文件格式有哪些,并简述其特点。
===================================================================
答案-填空题
1.G.7xx、MPEG-x、AC-x
2.AD/DA转换、压缩编码、数字信号处理、信道编码/调制
3.PCM
5.波形编码、参数编码、混合编码
答案-填空题
1.5、D、R、G、B、行、场
2.352×288、176×144
3.亮度与色差、红绿蓝三基色
在MPEG标准中图像类型有( A DE )
A、I帧图像 B、M帧图像 C、C帧图像 D、P帧图像 E、B帧图像
视频分量YUV的意义及数字化格式(比例)
用Y:U:V来表示YUV三分量的采样比例,则数字视频的采样格式分别有4:2:0 ,4:1:1、 4:2:2和4:4:4多种
答案-问答题
1.(1)采用专用的音频芯片如MP3编解码芯片,芯片集成音频编解码算法。
(2)利用A/D语音采集加计算机组成硬件平台,音频编解码算法由计算机上的软件来实现。
(3)使用A/D采集芯片加带ARM核的数据处理芯片。
2.主要应用领域包括:
(1)消费电子类数字音响设备。
(2)数字多媒体应用。
(3)广播数字电视系统。
2、熵;不丢失信息的前提下,描述该信息的内容所需要的最小比特数
3、P帧图像;预测贞图像它参照前一幅I帧或P帧图像进行运动补偿。
4、帧间预测编码;主要是利用活动图像序列相邻帧之间的相关性,既图像数据冗余来达到压缩目的,它可以获得比帧内预测编码的多压缩比
常见的数字音频编码文件格式有哪些,并简述其特点。
1、wav格式:(波形格式文件,无损)2、APE:(无损压缩) 3、FLAC :(无损压缩)4、mp3 :(有损压缩)5、WMA :(有损压缩) 6、OGG格式:7、MIDI :(无损压缩)8、AAC :
2.关于图像处理:
1)直方图在图像处理里面最重要的作用是什么?
(考官给的答案:增强图像的对比度)
灰度直方图的定义:灰度级的函数,描述图像中该灰度级的像素个数或该灰度级像素出现的频率。反映了图像灰度分布的情况。
灰度直方图只能反映图像的灰度分布情况,不能反映图像像素的位置,即所有的空间信息全部丢失。
直方图的应用:
a.数字化参数:判断一幅图像是否合理的利用了全部被允许的灰度级范围。一般一幅图应该利用全部或几乎全部可能的灰度级,否则等于增加了量化间隔,丢失的信息将不能恢复。
b.边界阈值选取(确定图像二值化的阈值):假定某图像的灰度直方图具有二峰性,则表明这个图像的较亮区域和较暗区域可以很好地分离,以这一点为阈值点,可以得到很好地2值处理效果(区分物体与背景)。
c.当物体部分的灰度值比其他部分的灰度值大时,可利用直方图统计图像中物体的面积。
d.计算图像的信息量H。
2)数字图像滤波有哪些方法?
均值滤波(邻域平均法)、中值滤波(消除独立的噪声点)、高斯滤波(线性平滑滤波,消除高斯噪声,对整幅图像进行加权平均,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到)、KNN滤波、高通滤波、低通滤波等。
3)图像可以提取的特征有哪些?
颜色、纹理(粗糙度、方向度、对比度)、形状(曲率、离心率、主轴方向)、色彩等。
4)Open CV?
5)深度学习与机器学习。
6)衡量图像重建好坏的标准有哪些?怎样计算?
SNR(信噪比)
PSNR=10*log10((2^n-1)^2/MSE)
(MSE是原图像与处理图像之间均方误差,所以计算PSNR需要2幅图像的数据!)
SSIM
(结构相似性分别从亮度对比度、对比度、结构3方面度量图像的相似性)
3.关于数据结构:
1)堆和栈的区别?(程序的内存分配)
一个由C/C++编译的程序占用的内存分为以下几部分:
(1)栈区(stack)–由编译器自动分配释放,存放函数的参数值、局部变量的值等。
(2)堆(heap)–一般由程序员分配释放,若程序员不释放,程序结束时间可能由OS回收。分配方式类似于链表。
(3)全局区(静态变量static)–全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和胃初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。
(4)文字常量区–常量字符串就是放在这里的,程序结束后由系统释放。
(5)程序代码区–存放函数体的二进制代码。
堆和栈的区别:
(1)申请方式:stack由系统自动分配;heap需要程序员自己申请并指明大小。
(2)申请后系统的相应:stack只要栈的剩余空间大于所申请上的空间,系统将为程序提供内存,否则将报异常提示栈溢出。heap首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。另外,对于大多数系统 ,会在这块内存空间中的首地址处记录本次分配的大小,这样代码中的delete语句才能正确的释放本内存空间。由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动地将多余的那部分重新放入空闲链表中。
(3)申请大小的限制:stack在windows下是向低地址扩展的数据结构,是一块连续的内存区域。windows下栈的大小是2M(在编译时就能确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。heap是向高地址扩展的数据结构,不连续的内存区域,这是由于系统是用链表来存储的空闲内存地址,自然是不连续的,而链表的遍历方向是由低地址向高地址。heap的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
(4)申请效率的比较:stack由系统自动分配,快,但程序员是无法控制的。heap由new分配,慢,但是方便。但是windows中最好用VirtualAlloc分配内存,他不是在堆,也不是在栈,是直接在进程的地址中保留一块内存,虽然用起来不方便,但是速度快,灵活。
(5)存储效率的比较:在栈上的数组比指针所指向的字符串(例如堆)快。
总结来说就是:
栈:去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
堆:就像是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
2)知道哪些排序方法?
排序分为内部排序和外部排序。
外部排序分为:插入排序(直接插入排序O(n^2)、希尔排序)、选择排序(简单选择排序、堆排序O(nlogn ))、交换排序(冒泡排序、快速排序)、归并排序、基数排序。
3)冒泡排序怎样排序?时间复杂度是多少?
冒泡排序的平均时间复杂度是O(n^2),最好情况是O(n),稳定。
4.关于C/C++:
1)写一个函数:memcpy将一块内存里存储的数据转移到另一块内存中。
void *memcpy(void *dest, const void *src, size_t count)
{
assert(dest != NULL && src != NULL);
char *tmp = dest;
const char *s = src;
while (count–)
*tmp++ = *s++ ;
return dest;
}
2)写一个函数:输入一个int型数字求它转化成二进制数中1的个数。
3)malloc/free与new/delete的区别和联系?
本质区别:
malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。对于用户自定义而言,malloc/free无法满足动态管理对象的要求,对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。(由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。)
联系:
new/delete的功能完全覆盖了malloc/free,为什么C++保留malloc/free呢?因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。如果用free释放new创建的动态对象,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放malloc申请的动态内存,理论上讲程序不会出错,但是可读性很差。所以new/delete和malloc/free必须配对使用。
4)*与&的用法和区别(指针的用法)
5)怎样实现C和matlab混编?
5.其他:
1)DFT和FFT的区别?
2)Linus内核。