当前位置:首页 » 操作系统 » 编码算法

编码算法

发布时间: 2022-01-08 15:08:37

算法设计和编码之间的区别是什么哪种更难

算法设计更难,编码只是根据算法的伪代码去实现算法。需要一些写代码的功底。
算法设计更注重的是想法。基本上算法设计出来了,写程序就不难了。
算法设计的工资比编码的工资高得多,一个高中生就能编码了。
在印度,程序员基本上是高中生。而中国的计算机本科生出来基本上做了程序员。

② utf-8编码转utf-16编码的算法是

比如一个三字节的UTF8编码为:
1110ABCD 10EFGHIJ 10KLMNOP
那么它对应的UTF16编码就是:
ABCDEFGH IJKLMNOP

其实你的那个例子反着写就是UTF8变换UTF16的例子:
11100110 10110001 10001001 = E6 B1 89
变换回UTF16就是
01101100 01001001 = 6C 49

③ 有8个待编码的符号A,B,C,D,E,F,G,H,使用霍夫曼编码算法

1、将A到H按其概率的大小,从上到下依次排列写出。
2、每次都将两个最小的概率合并成一个概率,然后重新按概率从大到小排列。
例如:第一次需要将H(0.01)和G(0.03)合并,合并后概率为0.04,这时从大到小排列0.04最小,且有两个0.04,一个为F的概率,一个为H和G合并后的概率。此时,再将两个0.04合并,重复以上步骤。
3、重复步骤2,直至概率合并为1。
4、将被合并的两个消息分支分别赋予0和1。
5、从概率为1的一头向其自身概率一头读数。
具体答案:
A 1
B 011
C 010
D 001
E 0001
F 00001
G 000001
H 000000

④ 什么是视频编码的算法 它有哪几种典型的算法 试比较各种典型的视频编码算法。 谢谢了!

1、无声时代的FLC
FLC、FLI是Autodesk开发的一种视频格式,仅仅支持256色,但支持色彩抖动技术,因此在很多情况下很真彩视频区别不是很大,不支持音频信号,现在看来这种格式已经毫无用处,但在没有真彩显卡没有声卡的DOS时代确实是最好的也是唯一的选择。最重要的是,Autodesk的全系列的动画制作软件都提供了对这种格式的支持,包括着名的3D Studio X,因此这种格式代表了一个时代的视频编码水平。直到今日,仍旧有不少视频编辑软件可以读取和生成这种格式。但毕竟廉颇老矣,这种格式已经被无情的淘汰。

2、载歌载舞的AVI
AVI——Audio Video Interleave,即音频视频交叉存取格式。1992年初Microsoft公司推出了AVI技术及其应用软件VFW(Video for Windows)。在AVI文件中,运动图像和伴音数据是以交织的方式存储,并独立于硬件设备。这种按交替方式组织音频和视像数据的方式可使得读取视频数据流时能更有效地从存储媒介得到连续的信息。构成一个AVI文件的主要参数包括视像参数、伴音参数和压缩参数等。AVI文件用的是AVI RIFF形式,AVI RIFF形式由字串“AVI”标识。所有的AVI文件都包括两个必须的LIST块。这些块定义了流和数据流的格式。AVI文件可能还包括一个索引块。
只要遵循这个标准,任何视频编码方案都可以使用在AVI文件中。这意味着AVI有着非常好的扩充性。这个规范由于是由微软制定,因此微软全系列的软件包括编程工具VB、VC都提供了最直接的支持,因此更加奠定了AVI在PC上的视频霸主地位。由于AVI本身的开放性,获得了众多编码技术研发商的支持,不同的编码使得AVI不断被完善,现在几乎所有运行在PC上的通用视频编辑系统,都是以支持AVI为主的。AVI的出现宣告了PC上哑片时代的结束,不断完善的AVI格式代表了多媒体在PC上的兴起。
说到AVI就不能不提起英特尔公司的Indeo video系列编码,Indeo编码技术是一款用于PC视频的高性能的、纯软件的视频压缩/解压解决方案。Indeo音频软件能提供高质量的压缩音频,可用于互联网、企业内部网和多媒体应用方案等。它既能进行音乐压缩也能进行声音压缩,压缩比可达8:1而没有明显的质量损失。Indeo技术能帮助您构建内容更丰富的多媒体网站。目前被广泛用于动态效果演示、游戏过场动画、非线性素材保存等用途,是目前使用最广泛的一种AVI编码技术。现在Indeo编码技术及其相关软件产品已经被Ligos Technology 公司收购。随着MPEG的崛起,Indeo面临着极大的挑战。

3、容量与质量兼顾的MPEG系列编码
和AVI相反,MPEG不是简单的一种文件格式,而是编码方案。
MPEG-1(标准代号ISO/IEC11172)制定于1991年底,处理的是标准图像交换格式(standard interchange format,SIF)或者称为源输入格式(Source Input Format,SIF)的多媒体流。是针对1.5Mbps以下数据传输率的数字存储媒质运动图像及其伴音编码(MPEG-1 Audio,标准代号ISO/IEC 11172-3)的国际标准,伴音标准后来衍生为今天的MP3编码方案。MPEG-1规范了PAL制(352*288,25帧/S)和NTSC制(为352*240,30帧/S)模式下的流量标准, 提供了相当于家用录象系统(VHS)的影音质量,此时视频数据传输率被压缩至1.15Mbps,其视频压缩率为26∶1。使用MPEG-1的压缩算法,可以把一部120分钟长的多媒体流压缩到1.2GB左右大小。常见的VCD就是MPEG-1编码创造的杰作。MPEG-1编码也不一定要按PAL/NTSC规范的标准运行,你可以自由设定影像尺寸和音视频流量。随着光头拾取精度的提高,有人把光盘的信息密度加大,并适度降低音频流流量,于是出现了只要一张光盘就存放一部电影的DVCD。DVCD碟其实是一种没有行业标准,没有国家标准,更谈不上是国际标准的音像产品。
当VCD开始向市场普及时,电脑正好进入了486时代,当年不少朋友都梦想拥有一块硬解压卡,来实现在PC上看VCD的夙愿,今天回过头来看看,觉得真有点不可思议,但当时的现状就是486的系统不借助硬解压是无法流畅播放VCD的,上万元的486系统都无法流畅播放的MPEG-1被打上了贵族的标志。随着奔腾的发布,PC开始奔腾起来,直到后来Windows Media Player也直接提供了MPEG-1的支持,至此MPEG-1使用在PC上已经完全无障碍了。
MPEG-2(标准代号IOS/IEC13818)于1994年发布国际标准草案(DIS),在视频编码算法上基本和MPEG-1相同,只是有了一些小小的改良,例如增加隔行扫描电视的编码。它追求的是大流量下的更高质量的运动图象及其伴音效果。MPEG-2的视频质量看齐PAL或NTSC的广播级质量,事实上MPEG-1也可以做到相似效果,MPEG-2更多的改进来自音频部分的编码。目前最常见的MPEG-2相关产品就是DVD了,SVCD也是采用的MPEG-2的编码。MPEG-2还有一个更重要的用处,就是让传统的电视机和电视广播系统往数码的方向发展。
MPEG-3最初为HDTV制定,由于MPEG-2的快速发展,MPEG-3还未彻底完成便宣告淘汰。
MPEG-4于1998年公布,和MPEG-2所针对的不同,MPEG-4追求的不是高品质而是高压缩率以及适用于网络的交互能力。MPEG-4提供了非常惊人的压缩率,如果以VCD画质为标准,MPEG-4可以把120分钟的多媒体流压缩至300M。MPEG-4标准主要应用于视像电话(Video Phone),视像电子邮件(Video Email)和电子新闻(Electronic News)等,其传输速率要求较低,在4800-64000bits/sec之间,分辨率为176X144。MPEG-4利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图象质量。
MJPEG,这并不是专门为PC准备的,而是为专业级甚至广播级的视频采集与在设备端回放的准备的,所以MJPEG包含了为传统模拟电视优化的隔行扫描电视的算法,如果在PC上播放MJPEG编码的文件,效果会很难看(如果你的显卡不支持MJPEG的动态补偿),但一旦输出到电视机端,你立刻会发现这种算法的好处。

4、属于网络的流媒体
RealNetworks RealVideo,采用的是 RealNetworks 公司自己开发的 Real G2 Codec,它具有很多先进的设计,例如,SVT (Scalable Video Technology);双向编码(Two—Encoding,类似于VBR)。RealMedia 音频部分采用的是 RealAudio ,可以接纳很多音频编码方案,可实现声音在单声道、立体声音乐不同速率下的压缩。最新的RealAudio竟然采用ATRAC3编码方案,以挑战日益成熟的MP3。
Windows Media,视频编码采用的是非常先进的 MPEG-4 视频压缩技术,被称作 Microsoft MPEG-4 Video Codec,音频编码采用的是微软自行开发的一种编码方案,目前没有公布技术资料,在低流量下提供了令人满意的音质和画质。最新的Windows Media Encoding Utility V8.0将流技术推向到一个新的高度,我们常见的ASF、WMV、WMA就是微软的流媒体文件。
事实上我们常见的MPG文件,也具有流媒体的最大特征——边读边放。

二、常见的编码与常见的文件格式的对应关系及其常用用途

1、Audodesk FLC
这是一种古老的编码方案,常见的文件后缀为FLC和FLI。由于FLC仅仅支持256色的调色板,因此它会在编码过程中尽量使用抖动算法(也可以设置不抖动),以模拟真彩的效果。这种算法在色彩值差距不是很大的情况下几乎可以达到乱真的地步,例如红色A(R:255,G:0,B:0)到红色B(R:255,G:128,B:0)之间的抖动。这种格式现在已经很少被采用了,但当年很多这种格式被保留下来,这种格式在保存标准256色调色板或者自定义256色调色板是是无损的,这种格式可以清晰到像素,非常适合保存线框动画,例如CAD模型演示。现在这种格式很少见了。

2、Microsoft RLE
这是微软开发为AVI格式开发的一种编码,文件扩展名为AVI,使用了RLE压缩算法,这是一种无损的压缩算法,我们常见的tga格式的图像文件就使用了RLE算法。
什么是RLE算法呢?这是一种很简单的算法,举一个很简单的例子:
假设一个图像的像素色彩值是这样排列的:红红红红红红红红红红红红蓝蓝蓝蓝蓝蓝绿绿绿绿,经过RLE压缩后就成为了:红12蓝6绿4。这样既保证了压缩的可行性,而且不会有损失。而且可以看到,但颜色数越少时,压缩效率会更高。由于Microsoft RLE仅仅支持256色,而且没有抖动算法,在色彩处理方面,FLC明显的比Microsoft RLE要好很多。当然这也不表示Microsoft RLE一无是处,和FLC一样,Microsoft RLE在处理相邻像素时也没有色染,可以清晰的表现网格。因此同样可以优秀的表现单色字体和线条。只要色彩不是很复杂,FLC能做的,Microsoft RLE也可以做到。由于AVI可以拥有一个音频流,而且Windows系统给与了直接的支持,Microsoft RLE最常用的用途是,在256色显示模式下,通过配合抓屏生成AVI的工具制作一个软件的操作演示过程,以达到图文并茂,形声兼备的效果。

3、Microsoft Video1
这也是由微软提供的一个AVI编码,任何Windows系统都自带了了它的Codec,这个编码支持真彩,画面质量很不错,Microsoft Video1的压缩效率非常低下,编码后的文件庞大得让人受不了。这个Microsoft Video1究竟有什么用呢?一般被用在保存一些没有渐变的小型视频素材方面。

4、Indeo video R3.2
这个编码由intel架构实验室开发,对应的文件格式是AVI,相对之前的流行的编码,Indeo video R3.2最大的特点就是高压缩比(当然,比起现在的压缩方案,实在是不值得一提),intel声称压缩比可达8:1而没有明显的质量损失,解码速度也非常快,对系统要求不高,由于Windows9X中自带Indeo video R3.2的Codec,所以Indeo video R3.2一度成为了最流行的AVI编码方案。有不少游戏的过场动画和启动动画都是Indeo video R3.2编码的。Indeo video R3.2同样不适合高要求的环境,在要表现细线条或大色彩值变化的渐变时,Indeo video R3.2会表现得非常糟糕。如果画面的色彩值差异不是很大,也没有明显的色彩区域界限,Indeo video R3.2还是合适的,例如海天一色的场景。Indeo video R3.2已经基本被淘汰,如果不是为了播放以前遗留的一些Indeo video R3.2编码视频,恐怕Windows ME/2000都不会有Indeo video R3.2的Codec了。

5、Indeo video 5.10
这个编码方案同样也是intel架构实验室开发的,它继承了Indeo video R3.2的优点,对应的文件格式仍然是AVI,解码速度同样非常快。Windows ME/2000自带了Indeo video 5.1的Codec,很多游戏也适用Indeo video 5.10来编码自己的演示动画。在没有DivX普及前,这几乎是最流行的AVI编码了,由于微软和intel的同时支持,这种编码方案被广泛采用。

6、None
顾名思义,这是一个没有损失的视频编码方案,对应的文件扩展名为AVI。这种编码几乎是不压缩的,文件大得惊人!那么这种编码有什么用途呢?用途就是保存视频素材,因为是无损的,保存素材非常合适,代价就是大量的存储空间。

7、MPEG1
我们熟知的VCD就是MPEG1编码的,对应的文件扩展名为MPG、MPEG或者DAT。事实上MPEG1可以工作于非PAL制和非NTSC制标准下。它可以自由设置数据流量和画面尺寸,只是这样非标准的文件无法直接刻录成VCD。

8、MPEG2
DVD的视频部分就是采用的MPEG2,SVCD同样也采用了MPEG2编码。对应的文件扩展名一般为VOB、MPG。MPEG2的设计目标就是提供接近广播级的高品质输出。

9、DivX
DivX是近2年开始被大家认识的,DivX 视频编码技术可以说是一种对 DVD 造成威胁的新生视频压缩格式(有人说它是 DVD 杀手)对应的文件扩展名为AVI或者DivX,它由 Microsoft mpeg-4v3 修改而来,使用 MPEG-4 压缩算法。据说是美国禁止出口的编码技术。DivX最大的特点就是高压缩比和不错的画质,更可贵的是,DivX的对系统要求也不高,只要主频300的CPU就基本可以很流畅的播放了,因此从DivX诞生起,立刻吸引了大家的注意力。DivX拥有比Indeo video 5.10高太多的压缩效率,编码质量也远远比Indeo video 5.10好,我实在想不出Indeo video 5.10还会有什么前途。

10、PICVideo MJPEG
MJPEG是很多视频卡支持的一种视频编码,随卡提供了Codec,安装完成后可以象使用其它编码一样生成AVI文件。MJPEG编码常用于非线性系统,批上了一层很专业的外衣。MJPEG的编码质量是相当高的,是一种以质量为最高要求的编码,这种编码的设置比较复杂,可以得到很高的压缩比,但牺牲了解码速度,如果要保证解码速度,编码后的压缩比确不是很理想,如果您希望从专业的非线性系统上捕捉视频,然后自行进行处理,这种格式是很有必要去了解一些的。

11、RealNetworks RealVideo
REAL VIDEO(RA、RAM)格式由Real Networks公司开发的,一开始就定位在视频流应用方面的,也可以说是视频流技术的始创者。它可以在用 56K MODEM 拨号上网的条件实现不间断的视频播放。从RealVideo的定位来看,就是牺牲画面质量来换取可连续观看性。其实RealVideo也可以实现不错的画面质量,由于RealVideo可以拥有非常高的压缩效率,很多人把VCD编码成RealVideo格式的,这样一来,一张光盘上可以存放好几部电影。REAL VIDEO存在颜色还原不准确的问题,RealVideo就不太适合专业的场合,但RealVideo出色的压缩效率和支持流式播放的特征,使得RealVideo在网络和娱乐场合占有不错的市场份额。

12、Windows Media video
Windows Media video就是微软为了和现在的Real Networks的RealVideo竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式!由于它使用了MPEG4的压缩算法,所以压缩率和图像的质量都很不错。我们经常看到的ASF和WMV就是Windows Media video。Windows Media video的编码质量明显好于RealVideo,因为Windows Media video是微软的杰作,所以Windows系统给Windows Media video给与了很好的支持,Windows Media Player可以直接播放这些文件。

各种主流音频编码(或格式)的介绍

1、PCM编码
PCM 脉冲编码调制是Pulse Code Molation的缩写。前面的文字我们提到了PCM大致的工作流程,我们不需要关心PCM最终编码采用的是什么计算方式,我们只需要知道PCM编码的音频流的优点和缺点就可以了。PCM编码的最大的优点就是音质好,最大的缺点就是体积大。我们常见的Audio CD就采用了PCM编码,一张光盘的容量只能容纳72分钟的音乐信息。

2、WAVE
这是一种古老的音频文件格式,由微软开发。WAV是一种文件格式,符合 PIFF Resource Interchange File Format规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。很多朋友没有这个概念,我们拿AVI做个示范,因为AVI和WAV在文件结构上是非常相似的,不过AVI多了一个视频流而已。我们接触到的AVI有很多种,因此我们经常需要安装一些Decode才能观看一些AVI,我们接触到比较多的DivX就是一种视频编码,AVI可以采用DivX编码来压缩视频流,当然也可以使用其他的编码压缩。同样,WAV也可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。
在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转换之中,例如MP3转换成WMA。

3、 MP3编码
请参阅 MP3全攻略 一文

4、OGG编码
网络上出现了一种叫Ogg Vorbis的音频编码,号称MP3杀手!Ogg Vorbis究竟什么来头呢?OGG是一个庞大的多媒体开发计划的项目名称,将涉及视频音频等方面的编码开发。整个OGG项目计划的目的就是向任何人提供完全免费多媒体编码方案!OGG的信念就是:OPEN!FREE!Vorbis这个词汇是特里·普拉特柴特的幻想小说《Small Gods》中的一个"花花公子"人物名。这个词汇成为了OGG项目中音频编码的正式命名。目前Vorbis已经开发成功,并且开发出了编码器。
Ogg Vorbis是高质量的音频编码方案,官方数据显示:Ogg Vorbis可以在相对较低的数据速率下实现比MP3更好的音质!Ogg Vorbis这种编码也远比90年代开发成功的MP3先进,她可以支持多声道,这意味着什么?这意味着Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓轨软件(目前这种软件还没有)的支持下,可以对所有的声道进行编码,而不是MP3只能编码2个声道。多声道音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏交响时,会带来更多临场感。这场革命性的变化是MP3无法适应的。
和MP3一样,Ogg Vorbis是一种灵活开放的音频编码,能够在编码方案已经固定下来后还能对音质进行明显的调节和新算法的改良。因此,它的声音质量将会越来越好,和MP3相似,Ogg Vorbis更像一个音频编码框架,可以不断导入新技术逐步完善。和MP3一样,OGG也支持VBR。

5、MPC 编码
MPC是又是另外一个令人刮目相看的实力派选手,它的普及过程非常低调,也没有什么复杂的背景故事,她的出现目的就只有一个,更小的体积更好的音质!MPC以前被称作MP+,很显然,可以看出她针对的竞争对手是谁。但是,只要用过这种编码的人都会有个深刻的印象,就是她出众的音质。

6、mp3PRO 编码
2001年6月14日,美国汤姆森多媒体公司(Thomson Multimedia SA)与佛朗赫弗协会(Fraunhofer Institute)于6月14日发布了一种新的音乐格式版本,名称为mp3PRO,这是一种基于mp3编码技术的改良方案,从官方公布的特征看来确实相当吸引人。从各方面的资料显示,mp3PRO并不是一种全新的格式,完全是基于传统mp3编码技术的一种改良,本身最大的技术亮点就在于SBR(Spectral Band Replication 频段复制),这是一种新的音频编码增强算法。它提供了改善低位率情况下音频和语音编码的性能的可能。这种方法可在指定的位率下增加音频的带宽或改善编码效率。SBR最大的优势就是在低数据速率下实现非常高效的编码,与传统的编码技术不同的是,SBR更像是一种后处理技术,因此解码器的算法的优劣直接影响到音质的好坏。高频实际上是由解码器(播放器)产生的,SBR编码的数据更像是一种产生高频的命令集,或者称为指导性的信号源,这有点駇idi的工作方式。我们可以看到,mp3PRO其实是一种mp3信号流和SBR信号流的混合数据流编码。有关资料显示,SBR技术可以改善低数据流量下的高频音质,改善程度约为30%,我们不管这个30%是如何得来的,但可以事先预知这种改善可以让64kbps的mp3达到128kbps的mp3的音质水平(注:在相同的编码条件下,数据速率的提升和音质的提升不是成正比的,至少人耳听觉上是这样的),这和官方声称的64kbps的mp3PRO可以媲美128kbps的mp3的宣传基本是吻合的。

7、WMA
WMA就是Windows Media Audio编码后的文件格式,由微软开发,WMA针对的不是单机市场,是网络!竞争对手就是网络媒体市场中着名的Real Networks。微软声称,在只有64kbps的码率情况下,WMA可以达到接近CD的音质。和以往的编码不同,WMA支持防复制功能,她支持通过Windows Media Rights Manager 加入保护,可以限制播放时间和播放次数甚至于播放的机器等等。WMA支持流技术,即一边读一边播放,因此WMA可以很轻松的实现在线广播,由于是微软的杰作,因此,微软在Windows中加入了对WMA的支持,WMA有着优秀的技术特征,在微软的大力推广下,这种格式被越来越多的人所接受。

8、RA
RA就是RealAudio格式,这是各位网虫接触得非常多的一种格式,大部分音乐网站的在线试听都是采用了RealAudio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的闪烁点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。RA可以支持多种音频编码,包括ATRAC3。和WMA一样,RA不但都支持边读边放,也同样支持使用特殊协议来隐匿文件的真实网络地址,从而实现只在线播放而不提供下载的欣赏方式。这对唱片公司和唱片销售公司很重要,在各方的大力推广下,RA和WMA是目前互联网上,用于在线试听最多的音频媒体格.

⑤ 有谁知道,JPEG压缩编码算法的主要步骤

JPEG压缩编码算法的主要计算步骤如下:

1.正向离散余弦变换(FDCT)。

2.量化(quantization)。

3.Z字形编码(zigzag scan)。

4.使用差分脉冲编码调制(differential pulse code molation,DPCM)对直流系数(DC)进行编码。

5.使用行程长度编码(run-length encoding,RLE)对交流系数(AC)进行编码。

6.熵编码(entropy coding)。

2. 量化

量化是对经过FDCT变换后的频率系数进行量化。量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。量化是图像质量下降的最主要原因。

对于有损压缩算法,JPEG算法使用均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此图中的左上角的量化步距要比右下角的量化步距小。

3. Z字形编排

量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排,如图5-17所示。这样就把一个8 ? 8的矩阵变成一个1 ? 64的矢量,频率较低的系数放在矢量的顶部。

4. 直流系数的编码

8 ? 8图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8 ? 8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值(Delta)进行编码,

Delta=DC(0, 0)k-DC(0, 0)k-1 ........ (5-5)

5. 交流系数的编码

量化AC系数的特点是1 ? 64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。

JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是量化AC系数的数值。

6. 熵编码

使用熵编码还可以对DPCM编码后的直流DC系数和RLE编码后的交流AC系数作进一步的压缩。

在JPEG有损压缩算法中,使用霍夫曼编码器来减少熵。使用霍夫曼编码器的理由是可以使用很简单的查表(lookup table)方法进行编码。压缩数据符号时,霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的霍夫曼码表可以事先进行定义。

⑥ 词典编码的算法举例

C语言
//编码
# include<stdio.h>
# include<string.h>
//拷贝字符串
void 1(char *prefix,char *s,int i,int j)
{
int k;
for(k=0;k<20;k++)
prefix[k]='';
for(k=i;k<i+j;k++)
prefix[k-i]=s[k];
}
void main ()
{
char s[30],prefix[30],dic[20][30]={,A,B,C};
int i,j,k,m,n;
i=0;j=1;k=4;m=0;
printf(please input string : );
gets(s);
while(i<strlen(s))
{
1(prefix,s,i,j);
for(n=1;n<k;n++)
{
if(strcmp(prefix,dic[n])==0)
{
j=j+1;
m=n;
if((i+j)<=strlen(s))
1(prefix,s,i,j);
else
{
strcpy(prefix, );
}
}
}
printf(%d ,m);
if(strlen(prefix)!=0)
{
strcpy(dic[k],prefix);
printf(%s ,dic[k]);
}
k=k+1;
i=i+j-1;
j=1;
}
}
//译码
# include<stdio.h>
# include<string.h>
# define N 20 // The max string length
# define M 20 //The max codestream number in the dictionary
# define L 20
struct wordstream
{
char w[N];
}word[L];
void main()
{
int code[M];//存贮码字流
//int code[]={1,2,3,4,7,3};
int i,k,t;
int j;//词典中缀符串
int cW;//当前码字
int pW;//先前码字
unsigned char C;//当前字符
char p[20];//缀-符串
word[1].w[0]='A';//输入词典的初始化
word[2].w[0]='B';
word[3].w[0]='C';
j=4;
//输出需要译码的码字流
printf( Please input the codestream number:);
scanf(%d,&k);
printf( Please input the codestream number:);
for(i=0;i<k;i++)
scanf(%d,(code+i));
cW=code[0];
printf( output the wordstream:%s,word[cW].w);
pW=cW;
for(i=1;i<k;i++)
{
cW=code[i];
if(cW<j)
{
printf( output the wordstream:%s,word[cW].w);//输出到字符流
C=word[cW].w[0];
strcpy(p,(const char *)word[pW].w);
t=strlen((const char *)p);
p[t]=C;
p[t+1]='';
strcpy(word[j].w,(const char*)p);
j=j+1;
pW=cW;
}
else
{
strcpy(p,(const char *)word[pW].w);
C=word[pW].w[0];
t=strlen((const char *)p);
p[t]=C;
p[t+1]='';
strcpy(word[j].w,(const char *)p);
printf( output the wordstream: %s,p);
j=j+1;
pW=cW;
}
}
for(i=1;i<j;i++)
printf( The dictionary is %s,word[i].w);
printf( this is over );
}

⑦ slnr预编码算法中slnr什么意思

为了消除或降低多用户MIMO系统下行链路存在的共信道干扰( CCI),提出一种结合功率分配的基于最大化信漏噪比( SLNR)的预编码算法。首先,根据SLNR算法求出最优预编码矩阵,再结合最优功率分配算法,借助拉格朗日乘数法,优化分配每个用户的发送功率,从而提 高系统和容量以及降低误码率( BER)性能。为了简化计算复杂度,还提出了SLNR算法结合次优化功率分配算法。仿真表明,所提出的算法比块对角化( BD)算法和最小均方误差准则( MMSE)算法在系统和容量以及误码率性能上都有所改善。

⑧ 词典编码的算法步骤

步骤一:开始的时候词典包含所有可能的单字符,而当前前缀P是空的。
步骤二:当前字符C:=字符流中的下一个字符。
步骤三:判断P+C是否在词典中。
如果是,则用C扩展P,即P=P+C
如果否,则
①输出代表当前前缀P的码字
②将前缀-字符串P+C添加到字典中
③令P:=C
步骤四:判断字符流中是否还有字符需要编码。
如果是,则返回到步骤二
如果不是,输出代表当前前缀P的码字,并结束 步骤一:在开始译码时词典包含所有可能的前缀根。
步骤二:cW:=码字流中的第一个码字。
步骤三:输出当前缀符串string.cW到字符流。
步骤四:先前码字pW:=当前码字cW.
步骤五:当前码字cW:=码字流中的下一个码字。
步骤六:判断先前缀符串是否在词典中。
如果“是”,则:1把当前缀符串string.cW输出到字符流;2当前前缀p:=先前缀符串pW;3当前前缀符串string.cW的第一个字符;4把缀符串P+C添加到词典中。
如果“否”,则:1当前前缀p:=先前缀符串pW;2当前字符C:=当前缀符串pW的第一个字符;3输出缀符串P+C到字符流,然后把它添加到词典中。
步骤七:判断码字流中是否还有码字要译。
如果“是”,就返回到步骤4,如果“否”,结束。

⑨ 请教算术编码的算法

h = StartC + g* K;
l = Endc + g* K1;
其具体程序如下:

const Ca = 0.2; Ce = 0.3;
Ci = 0.2; Co = 0.2;
Cu = 0.1;
var
Form1: TForm1;
s: string;
StartC, EndC: Extended;
implementation
{$R *.dfm}
procere ConvertTo(s: string; var StartC, EndC: Extended);{将字符串变为数值}
var n, i: integer;
c: char;
g: Extended;
begin
StartC := 0;
EndC := 1;
n := Strlen(Pchar(s));
for i := 1 to n do
begin
c := s[i];
g := EndC - StartC;
case C of
'a':
begin
EndC :=StartC + g * Ca;
StartC := StartC + g * 0;
end;
'e':
begin
EndC := StartC + g * (Ca + Ce);
StartC := StartC + g * Ca;
end;
'i':
begin
EndC := StartC + g * (Ca + Ce + Ci);
StartC := StartC + g * (Ca + Ce);
end;
'o':
begin
EndC := StartC + g * (Ca + Ce + Ci + Co);
StartC := StartC + g * (Ca + Ce + Ci);
end;
'u':
begin
EndC := StartC + g * (Ca + Ce + Ci + Co + Cu);
StartC := StartC + g * (Ca + Ce + Ci + Co);
end;
else
begin
Showmessage(' 输入的字符串有误 ');
exit;
end;
end;
end;
end;
procere NemuricalToStr(var s: String; var StartC, EndC: Extended);
{将数值转换为字符串}
const eps = -1e-5;
begin
if StartC-0.2 < -eps then
if (EndC- 0.2<= -eps) and (EndC > StartC) then
begin
StartC := StartC / 0.2;
EndC := EndC / 0.2;
s := s + 'a';
if (StartC <>0) or (EndC <> 1) then
NemuricaltoStr(s,StartC,EndC);
end;
if (StartC- 0.2 >= eps) and (StartC-0.5 < -eps) then
if (EndC-0.5<= -eps) and (EndC>StartC) then
begin
StartC := StartC - 0.2;
EndC := EndC - 0.2;
StartC := StartC / 0.3;
EndC := EndC / 0.3;
s := s + 'e';
if (StartC <>0) or (EndC <> 1) then
NemuricaltoStr(s,StartC,EndC);
end ;
if (StartC- 0.5>= eps) and (StartC- 0.7< -eps) then
if (EndC-0.7<= -eps) and (EndC>StartC) then
begin
StartC := StartC - 0.5;
EndC := EndC - 0.5;
StartC := StartC / 0.2;
EndC := EndC / 0.2;
s := s + 'i';
if (StartC <>0) or (EndC <> 1) then
NemuricaltoStr(s,StartC,EndC);
end ;
if (StartC-0.7 >= eps) and (StartC-0.9 < -eps) then
if (EndC-0.9<=-eps) and (EndC>StartC) then
begin
StartC := StartC - 0.7;
EndC := EndC - 0.7;
StartC := StartC / 0.2;
EndC := EndC / 0.2;
s := s + 'o';
if (StartC <>0) or (EndC <> 1) then
NemuricaltoStr(s,StartC,EndC);
end ;
if (StartC -0.9>=eps) and (StartC-1 < -eps) then
if (EndC-1<= -eps) and (EndC>StartC) then
begin
StartC := StartC - 0.9;
EndC := EndC - 0.9;
StartC := StartC / 0.1;
EndC := EndC / 0.1;
s := s + 'u';
if (StartC <>0) or (EndC <> 1) then
NemuricaltoStr(s,StartC,EndC);
end;
end;
procere TForm1.Button1Click(Sender: TObject);
begin
s := Edit1.Text;
ConvertTo(s,StartC,EndC);
Edit2.Text := FloattoStr(StartC);
Edit3.Text := FloattoStr(EndC);
end;
procere TForm1.Button2Click(Sender: TObject);
begin
s := '';
StartC := StrToFloat(Edit2.Text);
EndC := StrtoFloat(Edit3.Text);
NemuricalToStr(s,StartC,Endc);
Edit1.Text := s;
end;
end.

⑩ 简述无损预测编码算法的基本思想(编码和解码)

压缩后的图像数据与原来的图像数据进行比较,没有一定的差别。这个系统有一个解码器和一个编码器组成,每部分都包含一个相同的预测器。由于输入图像的连续像素都要送入编码器,所以预测器能够根据以往的一些输入生成输入像素的预期值。因为通过预测和差分处理消除了大量像素间冗余,所以预测误差的概率密度函数通常在零处有一个很高的峰,并表现出变化相对较小的特征。

热点内容
dnd服务器ip地址 发布:2024-12-25 23:48:08 浏览:196
cad解压没有 发布:2024-12-25 23:48:03 浏览:14
超星做题脚本 发布:2024-12-25 23:35:14 浏览:908
打开加密pdf 发布:2024-12-25 23:24:57 浏览:742
动态sql查询条件 发布:2024-12-25 23:24:56 浏览:303
qq群上传速度 发布:2024-12-25 23:13:09 浏览:480
编程工程学 发布:2024-12-25 23:07:28 浏览:717
李小璐贾乃亮超级访问 发布:2024-12-25 22:47:50 浏览:719
电信精品宽带多ip路由如何配置 发布:2024-12-25 22:45:44 浏览:384
在linux下安装python 发布:2024-12-25 22:40:42 浏览:339