當前位置:首頁 » 編程語言 » 算術編碼c語言

算術編碼c語言

發布時間: 2022-08-05 23:06:39

A. 能幫我看下這個算術編碼有什麼問題嗎為什麼我輸入的數值進行編碼之後,再議碼得出的結果不一樣!

我在turbo c 中編譯,提示bool readdat() 出錯
可能c語言不支持bool類型吧
631900867 討論一下

B. 如何編碼1+2=

1+2=3,這是學前班的數學題吧

C. 字元串壓縮解壓

由於精度問題,該演算法的壓縮能力有限,字元串長度不能過長,否則會出現溢出,壓縮會出錯。還有,忘了對空格鍵處理,所以你一旦輸入空格就會結束字元串輸入

#include<iostream>
#include<math.h>
#include<string>
#include<vector>

using namespace std;

struct node
{
char elem;
double weigh;
double low;
double high;
double rang;
};

////////////////////

double value(string &code)
{
double res=0;
for(int i=0;i<code.size();i++)
{
if(code[i]=='1')
res=res+pow(2,-(i+1));
}

return res;
}

/////////////////////

int search(vector<node> &array,char &e)
{
for(int i=0;i<array.size();i++)
{
if(array[i].elem==e)
return i;
}
return -1;
}

//////////////////////

void set(string &data,vector<node> &array)
{
cin>>data;
data=data+'$';
node temp;
for(int i=0;i<data.size();i++)
{
int f=0;
for(int j=0;j<array.size();j++)
{
if(array[j].elem==data[i])
{
array[j].weigh++;
f=1;
break;
}
}
if(f==1)continue;

temp.elem=data[i];
temp.weigh=1;
array.push_back(temp);
}

array[0].low=0;
array[0].rang=array[0].weigh/data.size();
array[0].high=array[0].low+array[0].rang;
for(i=1;i<array.size();i++)
{
array[i].low=array[i-1].high;
array[i].rang=array[i].weigh/data.size();
array[i].high=array[i].low+array[i].rang;
}
}

//////////////////////

void output(vector<node> &array)
{
cout<<"elem low high rang"<<endl;
for(int i=0;i<array.size();i++)
{

cout<<array[i].elem;
cout.width(10);
cout<<array[i].low;
cout.width(10);
cout<<array[i].high;
cout.width(10);
cout<<array[i].rang<<endl;
}
}

///////////

void getarith(string &data,vector<node> &array,vector<node> &arith)
{
node temp;
int t=search(array,data[0]);
temp=array[t];
arith.push_back(temp);
for(int i=1;i<data.size();i++)
{
temp.elem=data[i];
int t=search(array,data[i]);
temp.low=arith[i-1].low+array[t].low*arith[i-1].rang;
temp.rang=arith[i-1].rang*array[t].rang;
temp.high=temp.low+temp.rang;
arith.push_back(temp);
}
}

///////////////

void code(double low,double high,string &res)
{
while(value(res)<low)
{
string temp=res+'1';
if(value(temp)>high)
res=res+'0';
else
res=temp;
}
}
////////////

void decode(double math,vector<node> &array)
{
while(1)
{
for(int i=0;;i++)
{
if(math<array[i].high)
break;
}
if(array[i].elem=='$')break;
cout<<array[i].elem;

math=math-array[i].low;
math=math/array[i].rang;
}
}

//////////////////
int main()
{
string data;
vector<node> array;
set(data,array);
string result;
vector<node> arith;

/* array[0].elem='a';
array[0].low=0;
array[0].rang=0.2;
array[0].high=0.2;

array[1].elem='b';
array[1].low=0.2;
array[1].rang=0.1;
array[1].high=0.3;

array[2].elem='c';
array[2].low=0.3;
array[2].rang=0.2;
array[2].high=0.5;

array[3].elem='d';
array[3].low=0.5;
array[3].rang=0.05;
array[3].high=0.55;

array[4].elem='e';
array[4].low=0.55;
array[4].rang=0.3;
array[4].high=0.85;

array[5].elem='f';
array[5].low=0.85;
array[5].rang=0.05;
array[5].high=0.9;

array[6].elem='$';
array[6].low=0.9;
array[6].rang=0.1;
array[6].high=1;*/

getarith(data,array,arith);

cout<<"字元數據表為:"<<endl;
output(array);

cout<<"輸入字元串的算術編碼數據表為:"<<endl;
output(arith);

string res;
code(arith[arith.size()-1].low,arith[arith.size()-1].high,res);

cout<<"字元串的算術編碼為:"<<endl;
cout<<res<<endl;

double math=value(res);
cout<<math<<endl;
cout<<endl<<"解碼結果為:"<<endl;
decode(math,array);

cout<<endl;
system("pause");
return 0;
}

D. 用C++實現 圖像壓縮編碼 應該看哪些書

JPEG2000中的小波變換和算術編碼的VLSI實現
http://tabobo.cn/soft/20/233/2008/344344614135.html

摘 要
最新靜止圖像壓縮標准JPEG2000採用離散小波變換(DWT)和嵌入式位編碼(EBCOT),在編碼效率和復原圖像質量上均遠優於JPEG等傳統演算法,今後會在靜止圖像壓縮領域占據主導地位。隨著VLSI技術的飛躍發展,FPGA以其快速的並行處理能力和靈活的硬體可編程技術,在數字信號處理領域有著廣泛的應用,因此JPEG2000的VLSI實現具有重要意義。
本文中重點研究了JPEG2000中的小波變換模塊和算術編碼模塊。小波變換模塊採用JPEG2000標准中的用於無損壓縮的5/3提升演算法。通過添加流水線,採用行列小波變換同時進行結構等演算法改進,提高系統的運行速度和減少佔用外部存儲空間。算術編碼模塊中在概率編碼判斷條件和重歸一化部分進行了改進,使結構更適合硬體實現,同時也提高了編碼速度。這兩個模塊在完成了VerilogHDL編碼後,進行了功能模擬和時序模擬,並在DE2評估板上進行硬體平台驗證。同時,在MATLAB和VisualC++中編寫了小波變換和算術編碼函數,以驗證本文中這兩個模塊VLSI實現的正確性。
本文在設計過程中,按照IP核開發流程,力圖將小波變換模塊和算術編碼模塊設計成IP核,以便在各應用中調用。

關鍵詞:JPEG2000;小波變換;算術編碼;VLSI;IP核

目 錄
獨創性聲明 I
摘 要 II
ABSTRACT III
第一章 緒 論 1
1.1 圖像壓縮編碼技術的發展概況 1
1.2 JPEG2000靜態數據壓縮標準的特點 2
1.3 JPEG2000標準的國內外研究現狀 3
1.4 VLSI技術的發展和應用 4
1.5 本文的主要工作 5
第二章 JPEG2000編碼中的核心理論 7
2.1 JPEG2000編碼演算法 7
2.1.1 預處理 7
2.1.2 小波變換 8
2.1.3 量化 8
2.1.4 熵編碼 9
2.2 小波變換理論 9
2.2.1 小波函數和小波變換的定義 9
2.2.2 離散小波變換 10
2.2.3 多解析度分析 11
2.2.4 小波變換的Mallat演算法 12
2.2.5 提升小波變換 13
2.2.6 JPEG2000中的小波變換 14
2.3 算術編碼基本原理 15
2.3.1 算術編碼 15
2.3.2 二進制算術編碼 16
2.3.3 自適應二進制算術編碼 17
2.4 本章小結 18
第三章 小波變換的硬體結構設計 19
3.1 5/3小波變換的演算法分析 19
3.1.1 邊界延拓 19
3.1.2 流水線的設計 20
3.1.3 一維小波的提升方法 20
3.1.4 二維小波變換的實現方法 20
3.1.5 小波分解級數 21
3.1.6 有限精度 21
3.2 5/3小波變換的硬體結構與實現 22
3.2.1 二維小波變換的VLSI架構 22
3.2.2 水平擴展模塊 22
3.2.3 行變換模塊 24
3.2.4 列變換模塊 25
3.2.5 行緩沖模塊 27
3.2.6 小波系數存儲控制模塊 29
3.3 MATLAB下的小波變換模擬 31
3.4 本章小結 33
第四章 算術編碼的硬體結構設計 34
4.1 算術編碼器的演算法流程分析 34
4.1.1 編碼初始化 35
4.1.2 LPS編碼和MPS編碼 35
4.1.3 重歸一化 37
4.1.4 數據位元組輸出 37
4.1.5 編碼器的終結 38
4.2 演算法的改進 39
4.3 算術編碼器的硬體結構與實現 40
4.3.1 算術編碼器的VLSI架構 40
4.3.2 概率索引和更新模塊 41
4.3.3 編碼模塊 41
4.3.4 位元組輸出模塊 42
4.3.5 輸出緩沖模塊 42
4.4 C語言下的算術編碼驗證 43
4.5 本章小結 46
第五章 基於FPGA平台的模擬 47
5.1 FPGA簡介 47
5.2 IP核的開發 47
5.3 DE2開發平台簡介 49
5.4 小波變換和算術編碼基於DE2開發平台的模擬驗證 50
5.5 本章小結 52
第六章 結 論 53
參考文獻 54
致 謝 58
附 錄 59

E. 跪求C語言進行哈夫曼編碼、算術編碼和LZW編碼,要求源程序要有注釋。

以下是哈夫曼編碼
#include<iostream>
#include<math.h>
#include<string>
#include<iomanip>
using namespace std;

int n;

int isin(string str,char a)
{
int temp=0;
for(int i=0;i<str.length();i++)
{
if(str[i]==a) temp=1;
}
return temp;
}
void bubble(double p[],string sign[])//排序
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(p[i]<p[j])
{
double temp=p[i];
p[i]=p[j];
p[j]=temp;
string m=sign[i];
sign[i]=sign[j];
sign[j]=m;
}
}
}
}
void huff(double tempp[],string tempstr[])
{
double p[20][20];
string sign[20][20];
sign[0][i]=tempstr[i]; //符號放在sign數組中
for(int i=0;i<n;i++)
{
p[0][i]=tempp[i]; //p數組放對應的概率(第1列中)
}
for(i=0;i<n-1;i++)
{
bubble(p[i],sign[i]); //第一次排序
for(int j=0;j<n-2-i;j++)
{
p[i+1][j]=p[i][j]; //前n-2-i個概率重新放在p數組中(是數組的第2列中)
sign[i+1][j]=sign[i][j];
}
p[i+1][j]=p[i][j]+p[i][j+1];//第一次兩個最小概率求和
sign[i+1][j]=sign[i][j]+sign[i][j+1];//符號跟隨
for(j=n-1-i;j<n;j++)
{
p[i+1][j]=0;
}
}
string final[20];
for(i=n-2;i>=0;i--)
{
for(int k=0;k<n;k++)
{
if(isin(sign[i][n-2-i],sign[0][k][0])) final[k]+="0";
if(isin(sign[i][n-1-i],sign[0][k][0])) final[k]+="1";
}
}
cout<<setw(9)<<"哈弗曼編碼如下:"<<endl;
for(i=0;i<n;i++)
{
cout<<setw(7)<<sign[0][i]<<setw(7)<<p[0][i]<<setw(10)<<final[i]<<
setw(7)<<final[i].length()<<endl;
}
}
void main()
{
char a[50];
cout<<"該字元串符號為:";
cin>>a;
string s=a;
n=s.length();
char b[20][2];
for(int i=0;i<n;i++)
{
b[i][0]=a[i];
b[i][1]='\0';
}
string str[20];
for(i=0;i<n;i++)
{
str[i]=b[i];
}
double tempp[20];
cout<<"字元概率依次為:";
for(i=0;i<n;i++)
{
cin>>tempp[i];
}
huff(tempp,str);
}

F. 用c語言實現算術編碼和解碼

Turbo c 2.0編譯通過

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineLENGTH100 /*字元串(編碼前或編碼後)的最大長度*/

/*編碼*/
voidencode(char*strsource);
/*解碼*/
voiddecode(char*strcode);

voidmain()
{
charcode[LENGTH]="BILLGATES";
encode(code);
printf("\nencodedstringis:%s\n",code);
decode(code);
printf("\ndecodedstringis:%s\n",code);
getch();
}
voidencode(char*strsource){
char*p=strsource,tmp[LENGTH]={'\0'},buffer[3];
while(*p){
itoa(*p++,buffer,10);
strcat(tmp,"%");
strcat(tmp,buffer);
}
strcpy(strsource,tmp);
}

voiddecode(char*strcode){
inti=0;
char*p,*s=strcode,tmp[LENGTH]={'\0'};
char*cSplit="%";
p=strtok(s,cSplit);
while(p)
{
tmp[i++]=atoi(p);
p=strtok(NULL,cSplit);
}
strcpy(strcode,tmp);
}

G. 怎樣修改視頻角度

隨著Internet帶寬的不斷增長,在Internet上傳輸視頻的相關技術也成為Internet節研究和開發的熱點。目前,許多實驗性的高速寬頻網路都把視頻傳輸的技術和應用作為研究的重點課題。在Internet上傳輸視頻有許多困難,其根本的原因在於Internet的無連接每包轉發機制主要為突發性的數據傳輸設計,不適用於對連續媒體流的傳輸。為了在Internet上有效的、高質量的傳輸視頻流,需要多種技術的支持,其中數字視頻的壓縮編碼技術是Internet視頻傳輸中的關鍵技術之一。此外,在多媒體的傳輸、處理、應用中還有許多問題:如何在網路上傳輸視頻?如何通過手機上網並接收視頻和圖像?如何對多媒體數據進行快速有效的檢索?如何對多媒體信息進行統一的存取?等等。

目前視頻流傳輸中最為重要的編解碼標准有國際電聯的H.261、H.263,運動靜止圖像專家組的M-JPEG和國際標准化組織運動圖像專家組的MPEG系列標准,此外在互聯網上被廣泛應用的還有Real-Networks的RealVideo、微軟公司的WMT以及Apple公司的QuickTime等。具體如下:

一、國際電聯的H.261、H.263標准

1.H.261

H.261又稱為P*64,其中P為64kb/s的取值范圍,是1到30的可變參數,它最初是針對在ISDN上實現電信會議應用特別是面對面的可視電話和視頻會議而設計的。實際的編碼演算法類似於MPEG演算法,但不能與後者兼容。H.261在實時編碼時比MPEG所佔用的CPU運算量少得多,此演算法為了優化帶寬佔用量,引進了在圖像質量與運動幅度之間的平衡折中機制,也就是說,劇烈運動的圖像比相對靜止的圖像質量要差。因此這種方法是屬於恆定碼流可變質量編碼而非恆定質量可變碼流編碼。

2.H.263

H.263是國際電聯ITU-T的一個標准草案,是為低碼流通信而設計的。但實際上這個標准可用在很寬的碼流范圍,而非只用於低碼流應用,它在許多應用中可以認為被用於取代H.261。H.263的編碼演算法與H.261一樣,但做了一些改善和改變,以提高性能和糾錯能力。.263標准在低碼率下能夠提供比H.261更好的圖像效果,兩者的區別有:(1)H.263的運動補償使用半象素精度,而H.261則用全象素精度和循環濾波;(2)數據流層次結構的某些部分在H.263中是可選的,使得編解碼可以配置成更低的數據率或更好的糾錯能力;(3)H.263包含四個可協商的選項以改善性能;(4)H.263採用無限制的運動向量以及基於語法的算術編碼;(5)採用事先預測和與MPEG中的P-B幀一樣的幀預測方法;(6)H.263支持5種解析度,即除了支持H.261中所支持的QCIF和CIF外,還支持SQCIF、4CIF和16CIF,SQCIF相當於QCIF一半的解析度,而4CIF和16CIF分別為CIF的4倍和16倍。

1998年IUT-T推出的H.263+是H.263建議的第2版,它提供了12個新的可協商模式和其他特徵,進一步提高了壓縮編碼性能。如H.263隻有5種視頻源格式,H.263+允許使用更多的源格式,圖像時鍾頻率也有多種選擇,拓寬應用范圍;另一重要的改進是可擴展性,它允許多顯示率、多速率及多解析度,增強了視頻信息在易誤碼、易丟包異構網路環境下的傳輸。另外,H.263+對H.263中的不受限運動矢量模式進行了改進,加上12個新增的可選模式,不僅提高了編碼性能,而且增強了應用的靈活性。H.263已經基本上取代了H.261。

二、M-JPEG

M-JPEG(Motion- Join Photographic Experts Group)技術即運動靜止圖像(或逐幀)壓縮技術,廣泛應用於非線性編輯領域可精確到幀編輯和多層圖像處理,把運動的視頻序列作為連續的靜止圖像來處理,這種壓縮方式單獨完整地壓縮每一幀,在編輯過程中可隨機存儲每一幀,可進行精確到幀的編輯,此外M-JPEG的壓縮和解壓縮是對稱的,可由相同的硬體和軟體實現。但M-JPEG只對幀內的空間冗餘進行壓縮。不對幀間的時間冗餘進行壓縮,故壓縮效率不高。採用M-JPEG數字壓縮格式,當壓縮比7:1時,可提供相當於Betecam SP質量圖像的節目。

JPEG標准所根據的演算法是基於DCT(離散餘弦變換)和可變長編碼。JPEG的關鍵技術有變換編碼、量化、差分編碼、運動補償、霍夫曼編碼和遊程編碼等

M-JPEG的優點是:可以很容易做到精確到幀的編輯、設備比較成熟。缺點是壓縮效率不高。

此外,M-JPEG這種壓縮方式並不是一個完全統一的壓縮標准,不同廠家的編解碼器和存儲方式並沒有統一的規定格式。這也就是說,每個型號的視頻伺服器或編碼板有自己的M-JPEG版本,所以在伺服器之間的數據傳輸、非線性製作網路向伺服器的數據傳輸都根本是不可能的。

三、MPEG系列標准

MPEG是活動圖像專家組(Moving Picture Exports Group)的縮寫,於1988年成立,是為數字視/音頻制定壓縮標準的專家組,目前已擁有300多名成員,包括IBM、SUN、BBC、NEC、INTEL、AT&T等世界知名公司。MPEG組織最初得到的授權是制定用於「活動圖像」編碼的各種標准,隨後擴充為「及其伴隨的音頻」及其組合編碼。後來針對不同的應用需求,解除了「用於數字存儲媒體」的限制,成為現在制定「活動圖像和音頻編碼」標準的組織。MPEG組織制定的各個標准都有不同的目標和應用,目前已提出MPEG-1、MPEG-2、MPEG-4、MPEG-7和MPEG-21標准。

1.MPEG-1標准

MPEG-1標准於1993年8月公布,用於傳輸1.5Mbps數據傳輸率的數字存儲媒體運動圖像及其伴音的編碼。該標准包括五個部分:

第一部分說明了如何根據第二部分(視頻)以及第三部分(音頻)的規定,對音頻和視頻進行復合編碼。第四部分說明了檢驗解碼器或編碼器的輸出比特流符合前三部分規定的過程。第五部分是一個用完整的C語言實現的編碼和解碼器。

該標准從頒布的那一刻起,MPEG-1取得一連串的成功,如VCD和MP3的大量使用,Windows95以後的版本都帶有一個MPEG-1軟體解碼器,可攜式MPEG-1攝像機等等。

2.MPEG-2標准

MPEG組織於1994年推出MPEG-2壓縮標准,以實現視/音頻服務與應用互操作的可能性。 MPEG-2標準是針對標准數字電視和高清晰度電視在各種應用下的壓縮方案和系統層的詳細規定,編碼碼率從每秒3兆比特~100兆比特,標準的正式規范在ISO/IEC13818中。MPEG-2不是MPEG-1的簡單升級,MPEG-2在系統和傳送方面作了更加詳細的規定和進一步的完善。MPEG-2特別適用於廣播級的數字電視的編碼和傳送,被認定為SDTV和HDTV的編碼標准。

MPEG-2圖像壓縮的原理是利用了圖像中的兩種特性:空間相關性和時間相關性。這兩種相關性使得圖像中存在大量的冗餘信息。如果我們能將這些冗餘信息去除,只保留少量非相關信息進行傳輸,就可以大大節省傳輸頻帶。而接收機利用這些非相關信息,按照一定的解碼演算法,可以在保證一定的圖像質量的前提下恢復原始圖像。一個好的壓縮編碼方案就是能夠最大限度地去除圖像中的冗餘信息。

MPEG-2的編碼圖像被分為三類,分別稱為I幀,P幀和B幀。

I幀圖像採用幀內編碼方式,即只利用了單幀圖像內的空間相關性,而沒有利用時間相關性。P幀和B幀圖像採用幀間編碼方式,即同時利用了空間和時間上的相關性。P幀圖像只採用前向時間預測,可以提高壓縮效率和圖像質量。P幀圖像中可以包含幀內編碼的部分,即P幀中的每一個宏塊可以是前向預測,也可以是幀內編碼。B幀圖像採用雙向時間預測,可以大大提高壓縮倍數。

MPEG-2的編碼碼流分為六個層次。為更好地表示編碼數據,MPEG-2用句法規定了一個層次性結構。它分為六層,自上到下分別是:圖像序列層、圖像組(GOP)、圖像、宏塊條、宏塊、塊。

MPEG-2標准在廣播電視領域中的主要應用如下:

(1)視音頻資料的保存

一直以來,電視節目、音像資料等都是用磁帶保存的。這種方式有很多弊端:易損,佔地大,成本高,難於重新使用。更重要的是難以長期保存,難以查找、難以共享。隨著計算機技術和視頻壓縮技術的發展,高速寬頻計算機網路以及大容量數據存儲系統給電視台節目的網路化存儲、查詢、共享、交流提供了可能。

採用MPEG-2壓縮編碼的DVD視盤,給資料保存帶來了新的希望。電視節目、音像資料等可通過MPEG-2編碼系統編碼,保存到低成本的CD-R光碟或高容量的可擦寫DVD-RAM上,也可利用DVD編著軟體(如Daikin Scenarist NT、Spruce DVDMaestro等)製作成標準的DVD視盤,既可節約開支,也可節省存放空間。

(2)電視節目的非線性編輯系統及其網路

在非線性編輯系統中,節目素材是以數字壓縮方式存儲、製作和播出的, 視頻壓縮技術是非線性編輯系統的技術基礎。目前主要有M-JPEG和MPEG-2兩種數字壓縮格式。

M-JPEG技術即運動靜止圖像(或逐幀)壓縮技術,可進行精確到幀的編輯,但壓縮效率不高。

MPEG-2採用幀間壓縮的方式,只需進行I幀的幀內壓縮處理,B幀和P幀通過偵測獲得,因此 ,傳輸和運算的數據大多由幀之間的時間相關性得到,相對來說,數據量小,可以實現較高的壓縮比。隨著逐幀編輯問題的解決,MPEG-2將廣泛應用於非線性編輯系統,並大大地降低編輯成本,同時MPEG-2的解壓縮是標準的,不同廠家設計的壓縮器件壓縮的數據可由其他廠家設計解壓縮器來解壓縮,這一點保證了各廠家的設備之間能完全兼容。

由於採用MPEG-2 IBP視頻壓縮技術,數據量成倍減少,降低了存儲成本,提高了數據傳輸速度,減少了對計算機匯流排和網路帶寬的壓力,可採用純乙太網組建非線性編輯網路系統已成為可能,而在目前乙太網是最為成熟的網路,系統管理比較完善,價格也比較低廉。

基於MPEG-2的非線性編輯系統及非線性編輯網路將成為未來的發展方向。

(3)衛星傳輸

MPEG-2已經通過ISO認可,並在廣播領域獲得廣泛的應用,如數字衛星視頻廣播(DVB-S)、DVD視盤和視頻會議等。目前,全球有數以千萬計的DVB-S用戶,DVB-S信號採用MPEG-2壓縮格式編碼,通過衛星或微波進行傳輸,在用戶端經MPEG-2衛星接收解碼器解碼,以供用戶觀看。此外,採用MPEG-2壓縮編碼技術,還可以進行遠程電視新聞或節目的傳輸和交流。

(4)電視節目的播出

在整個電視技術中播出是一個承上啟下的環節,對播出系統進行數字化改造是非常必要的,其中最關鍵一步就是構建硬碟播出系統。MPEG-2硬碟自動播出系統因編播簡便、儲存容量大、視頻指標高等優點,而為人們所青睞。但以往MPEG-2播出設備因非常昂貴,而只有少量使用。隨著MPEG-2技術的發展和相關產品成本的下降,MPEG-2硬碟自動系統播出可望得到普及。

3.MPEG-4標准

運動圖像專家組MPEG 於1999年2月正式公布了MPEG-4(ISO/IEC14496)標准第一版本。同年年底MPEG-4第二版亦告底定,且於2000年年初正式成為國際標准。

MPEG-4與MPEG-1和MPEG-2有很大的不同。MPEG-4不只是具體壓縮演算法,它是針對數字電視、互動式繪圖應用(影音合成內容)、互動式多媒體(WWW、資料擷取與分散)等整合及壓縮技術的需求而制定的國際標准。MPEG-4標准將眾多的多媒體應用集成於一個完整的框架內,旨在為多媒體通信及應用環境提供標準的演算法及工具,從而建立起一種能被多媒體傳輸、存儲、檢索等應用領域普遍採用的統一數據格式。

MPEG-4的編碼理念是:MPEG-4標准同以前標準的最顯著的差別在於它是採用基於對象的編碼理念,即在編碼時將一幅景物分成若干在時間和空間上相互聯系的視頻音頻對象,分別編碼後,再經過復用傳輸到接收端,然後再對不同的對象分別解碼,從而組合成所需要的視頻和音頻。這樣既方便我們對不同的對象採用不同的編碼方法和表示方法,又有利於不同數據類型間的融合,並且這樣也可以方便的實現對於各種對象的操作及編輯。例如,我們可以將一個卡通人物放在真實的場景中,或者將真人置於一個虛擬的演播室里,還可以在互聯網上方便的實現交互,根據自己的需要有選擇的組合各種視頻音頻以及圖形文本對象。

MPEG-4系統的一般框架是:對自然或合成的視聽內容的表示;對視聽內容數據流的管理,如多點、同步、緩沖管理等;對靈活性的支持和對系統不同部分的配置。

與MPEG-1、MPEG-2相比,MPEG-4具有如下獨特的優點:

(1) 基於內容的交互性

MPEG-4提供了基於內容的多媒體數據訪問工具,如索引、超級鏈接、上下載、刪除等。利用這些工具,用戶可以方便地從多媒體資料庫中有選擇地獲取自己所需的與對象有關的內容,並提供了內容的操作和位流編輯功能,可應用於互動式家庭購物,淡入淡出的數字化效果等。MPEG-4提供了高效的自然或合成的多媒體數據編碼方法。它可以把自然場景或對象組合起來成為合成的多媒體數據。

(2)高效的壓縮性

MPEG-4基於更高的編碼效率。同已有的或即將形成的其它標准相比,在相同的比特率下,它基於更高的視覺聽覺質量,這就使得在低帶寬的信道上傳送視頻、音頻成為可能。同時MPEG-4還能對同時發生的數據流進行編碼。一個場景的多視角或多聲道數據流可以高效、同步地合成為最終數據流。這可用於虛擬三維游戲、三維電影、飛行模擬練習等

(3)通用的訪問性

MPEG-4提供了易出錯環境的魯棒性,來保證其在許多無線和有線網路以及存儲介質中的應用,此外,MPEG-4還支持基於內容的的可分級性,即把內容、質量、復雜性分成許多小塊來滿足不同用戶的不同需求,支持具有不同帶寬,不同存儲容量的傳輸信道和接收端。

這些特點無疑會加速多媒體應用的發展,從中受益的應用領域有:網際網路多媒體應用;廣播電視;互動式視頻游戲;實時可視通信;互動式存儲媒體應用;演播室技術及電視後期製作;採用面部動畫技術的虛擬會議;多媒體郵件;移動通信條件下的多媒體應用;遠程視頻監控;通過ATM網路等進行的遠程資料庫業務等。MPEG-4主要應用如下:

(1)應用於網際網路視音頻廣播

由於上網人數與日俱增,傳統電視廣播的觀眾逐漸減少,隨之而來的便是廣告收入的減少,所以現在的固定式電視廣播最終將轉向基於TCP/IP的網際網路廣播,觀眾的收看方式也由簡單的遙控器選擇頻道轉為網上視頻點播。視頻點播的概念不是先把節目下載到硬碟,然後再播放,而是流媒體視頻(streaming video),點擊即觀看,邊傳輸邊播放。

現在網際網路中播放視音頻的有:Real Networks公司的 Real Media,微軟公司的 Windows Media,蘋果公司的 QuickTime,它們定義的視音頻格式互不兼容,有可能導致媒體流中難以控制的混亂,而MPEG-4為網際網路視頻應用提供了一系列的標准工具,使視音頻碼流具有規范一致性。因此在網際網路播放視音頻採用MPEG-4,應該說是一個安全的選擇。

(2)應用於無線通信

MPEG-4高效的碼率壓縮,交互和分級特性尤其適合於在窄帶移動網上實現多媒體通信,未來的手機將變成多媒體移動接收機,不僅可以打移動電視電話、移動上網,還可以移動接收多媒體廣播和收看電視。

(3)應用於靜止圖像壓縮

靜止圖像(圖片)在網際網路中大量使用,現在網上的圖片壓縮多採用JPEG技術。MPEG-4中的靜止圖像(紋理)壓縮是基於小波變換的,在同樣質量條件下,壓縮後的文件大小約是JPEG壓縮文件的十分之一。把網際網路上使用的JPEG圖片轉換成MPEG-4格式,可以大幅度提高圖片在網路中的傳輸速度。

(4)應用於電視電話

傳統用於窄帶電視電話業務的壓縮編碼標准,如H261,採用幀內壓縮、幀間壓縮、減少象素和抽幀等辦法來降低碼率,但編碼效率和圖像質量都難以令人滿意。MPEG-4的壓縮編碼可以做到以極低碼率傳送質量可以接受的聲像信號,使電視電話業務可以在窄帶的公用電話網上實現。

(5)應用於計算機圖形、動畫與模擬

MPEG-4特殊的編碼方式和強大的交互能力,使得基於MPEG-4的計算機圖形和動畫可以從各種來源的多媒體資料庫中獲取素材,並實時組合出所需要的結果。因而未來的計算機圖形可以在MPEG-4語法所允許的范圍內向所希望的方向無限發展,產生出今天無法想像的動畫及模擬效果。

(6)應用於電子游戲

MPEG-4可以進行自然圖像與聲音同人工合成的圖像與聲音的混合編碼,在編碼方式上具有前所未有的靈活性,並且能及時從各種來源的多媒體資料庫中調用素材。這可以在將來產生象電影一樣的電子游戲,實現極高自由度的互動式操作。

4.MPEG-7標准

MPEG-7標准被稱為「多媒體內容描述介面」,為各類多媒體信息提供一種標准化的描述,這種描述將與內容本身有關,允許快速和有效的查詢用戶感興趣的資料。它將擴展現有內容識別專用解決方案的有限的能力,特別是它還包括了更多的數據類型。換而言之,MPEG-7規定一個用於描述各種不同類型多媒體信息的描述符的標准集合。該標准於1998年10月提出。

MPEG-7的目標是支持多種音頻和視覺的描述,包括自由文本、N維時空結構、統計信息、客觀屬性、主觀屬性、生產屬性和組合信息。對於視覺信息,描述將包括顏色、視覺對象、紋理、草圖、形狀、體積、空間關系、運動及變形等。

MPEG-7的目標是根據信息的抽象層次,提供一種描述多媒體材料的方法以便表示不同層次上的用戶對信息的需求。以視覺內容為例,較低抽象層將包括形狀、尺寸、紋理、顏色、運動(軌道)和位置的描述。對於音頻的較低抽象層包括音調、調式、音速、音速變化、音響空間位置。最高層將給出語義信息:如「這是一個場景:一個鴨子正躲藏在樹後並有一個汽車正在幕後通過。」抽象層與提取特徵的方式有關:許多低層特徵能以完全自動的方式提取,而高層特徵需要更多人的交互作用。MPEG-7還允許依據視覺描述的查詢去檢索聲音數據,反之也一樣。

MPEG-7的目標是支持數據管理的靈活性、數據資源的全球化和互操作性。

MPEG-7標准化的范圍包括:一系列的描述子(描述子是特徵的表示法,一個描述子就是定義特徵的語法和語義學);一系列的描述結構(詳細說明成員之間的結構和語義);一種詳細說明描述結構的語言、描述定義語言(DDL);一種或多種編碼描述方法。

在我們的日常生活中,日益龐大的可利用音視頻數據需要有效的多媒體系統來存取、交互。這類需求與一些重要的社會和經濟問題相關,並且在許多專業和消費應用方面都是急需的,尤其是在網路高度發展的今天,而MPEG-7的最終目的是把網上的多媒體內容變成象現在的文本內容一樣,具有可搜索性。這使得大眾可以接觸到大量的多媒體內容,MPEG-7標准可以支持非常廣泛的應用,具體如下:

(1)音視資料庫的存儲和檢索;

(2)廣播媒體的選擇(廣播、電視節目);

(3)網際網路上的個性化新聞服務;

(4)智能多媒體、多媒體編輯;

(5)教育領域的應用(如數字多媒體圖書館等);

(6)遠程購物;

(7)社會和文化服務(歷史博物館、藝術走廊等);

(8)調查服務(人的特徵的識別、辯論等);

(9)遙感;

(10)監視(交通控制、地面交通等);

(11)生物醫學應用;

(12)建築、不動產及內部設計;

(13)多媒體目錄服務(如,黃頁、旅遊信息、地理信息系統等);

(14)家庭娛樂(個人的多媒體收集管理系統等)。

原則上,任何類型的AV(Audio-Video)材料都可以通過任何類型的查詢材料來檢索,例如,AV材料可以通過視頻、音樂、語言等來查詢,通過搜索引擎來匹配查詢數據和MPEG-7的音視頻描述。下面給出幾個查詢例子:

音樂:在鍵盤上彈幾個音符就能得到包含(或近似)要求曲調的音樂作品列表,或以某種方式匹配音符的圖象,例如,從情感方面。

圖形:在屏幕上畫幾條線就能得到類似圖形、標識、表意文字(符號)等的一組圖象。

運動:對一組給定的物體,描述在物體之間的運動和關系,就會得到實現所描述的時空關系的動畫列表。

電影拍攝劇本(劇情說明):對給定的內容,描述出動作就會得到發生類似動作的電影拍攝劇本(劇情說明)列表。

四、MPEG-21標准

互聯網改變了物質商品交換的商業模式,這就是「電子商務」。新的市場必然帶來新的問題:如何獲取數字視頻、音頻以及合成圖形等「數字商品」,如何保護多媒體內容的知識產權,如何為用戶提供透明的媒體信息服務,如何檢索內容,如何保證服務質量等。此外,有許多數字媒體(圖片、音樂等)是由用戶個人生成、使用的。這些「內容供應者」同商業內容供應商一樣關心相同的事情:內容的管理和重定位、各種權利的保護、非授權存取和修改的保護、商業機密與個人隱私的保護等。目前雖然建立了傳輸和數字媒體消費的基礎結構並確定了與此相關的諸多要素,但這些要素、規范之間還沒有一個明確的關系描述方法,迫切需要一種結構或框架保證數字媒體消費的簡單性,很好地處理「數字類消費」中諸要素之間的關系。MPEG-21就是在這種情況下提出的。

制定MPEG-21標準的目的是:(1)將不同的協議、標准、技術等有機地融合在一起;(2)制定新的標准;(3)將這些不同的標准集成在一起。MPEG-21標准其實就是一些關鍵技術的集成,通過這種集成環境就對全球數字媒體資源進行透明和增強管理,實現內容描述、創建、發布、使用、識別、收費管理、產權保護、用戶隱私權保護、終端和網路資源抽取、事件報告等功能。

任何與MPEG-21多媒體框架標准環境交互或使用MPEG-21數字項實體的個人或團體都可以看作是用戶。從純技術角度來看,MPEG-21對於「內容供應商」和「消費者」沒有任何區別。MPEG-21多媒體框架標准包括如下用戶需求:(1)內容傳送和價值交換的安全性;(2)數字項的理解;(3)內容的個性化;(4)價值鏈中的商業規則;(5)兼容實體的操作;(6)其它多媒體框架的引入;(7)對MPEG之外標準的兼容和支持;(8)一般規則的遵從;(9)MPEG-21標准功能及各個部分通信性能的測試;(10)價值鏈中媒體數據的增強使用;(11)用戶隱私的保護;(12)數據項完整性的保證;(13)內容與交易的跟蹤;(14)商業處理過程視圖的提供;(15)通用商業內容處理庫標準的提供;(16)長線投資時商業與技術獨立發展的考慮;(17)用戶權利的保護,包括:服務的可靠性、債務與保險、損失與破壞、付費處理與風險防範等;(18)新商業模型的建立和使用。

五、其它壓縮編碼標准

1.Real Video

Real Video是Real Networks公司開發的在窄帶(主要的互聯網)上進行多媒體傳輸的壓縮技術。

2.WMT

WMT是微軟公司開發的在互聯網上進行媒體傳輸的視頻和音頻編碼壓縮技術,該技術已與WMT伺服器與客戶機體系結構結合為一個整體,使用MPEG-4標準的一些原理。

3.QuickTime

QuickTime是一種存儲、傳輸和播放多媒體文件的文件格式和傳輸體系結構,所存儲和傳輸的多媒體通過多重壓縮模式壓縮而成,傳輸是通過RTP協議實現的。

標准化是產業化成功的前提,H.261、H.263推動了電視電話、視頻會議的發展。早期的視頻伺服器產品基本都採用M——JPEG標准,開創視頻非線性編輯時代。MPEG-1成功地在中國推動了VCD產業,MPEG-2標准帶動了DVD及數字電視等多種消費電子產業,其它MPEG標準的應用也在實施或開發中,Real-Networks的Real Video、微軟公司的WMT以及Apple公司的QuickTime帶動了網路流媒體的發展,視頻壓縮編解碼標准緊扣應用發展的脈搏,與工業和應用同步。未來是信息化的社會,各種多媒體數據的傳輸和存儲是信息處理的基本問題,因此,可以肯定視頻壓縮編碼標准將發揮越來越大的作用。

熱點內容
無需伺服器搭建網站 發布:2025-01-22 21:53:34 瀏覽:114
旅遊青蛙安卓版如何下載 發布:2025-01-22 21:52:51 瀏覽:317
歐文5的配置是什麼 發布:2025-01-22 21:30:23 瀏覽:108
日誌存儲資料庫 發布:2025-01-22 21:30:07 瀏覽:474
gulp上傳cdn 發布:2025-01-22 21:27:34 瀏覽:203
emule文件夾 發布:2025-01-22 21:23:23 瀏覽:981
s7e什麼時候推送安卓7 發布:2025-01-22 21:20:59 瀏覽:203
狐狸的清白腳本分析 發布:2025-01-22 21:19:59 瀏覽:182
如何破解仿射密碼 發布:2025-01-22 21:13:53 瀏覽:81
百度視頻存儲 發布:2025-01-22 21:13:11 瀏覽:168