一、實驗原理
dpcm編碼,是差分**編碼調製的縮寫,是典型的**編碼系統。這種方式是用已經過去的抽樣值來**當前的抽樣值,對它們的差值進行編碼。之所以不用原始樣本做**是因為在解碼端無法得到原始樣本資料,只能得到存在誤差的樣本。差值編碼可以提高編碼頻率,這種技術已應用於模擬訊號的數字通訊之中。
二、實驗步驟
三、關鍵**分析
1)dpcm函式
void dpcm(unsigned char *srcbuffer,int width,int height,unsigned char *rebuidbuffer,unsigned char *msebuffer)}}
2)將bmp資料做dpcm編碼
readrgb(input,file_h,info_h,rgbdataout);//從bmp檔案中提取rgb資料
//read y
unsigned
char *srcbuffer=(unsigned
char*)malloc(info_h.biwidth*info_h.biheight);
unsigned
char *rebuidbuffer=(unsigned
char*)malloc(info_h.biwidth*info_h.biheight);
unsigned
char *msebuffer=(unsigned
char*)malloc(info_h.biwidth*info_h.biheight);
if(!(srcbuffer && rebuidbuffer && msebuffer))
rgb2yuv (info_h.biwidth,info_h.biheight,rgbdataout,0,srcbuffer);
/*將rgb資料轉化為yuv*/ dpcm(srcbuffer,info_h.biwidth,info_h.biheight,rebuidbuffer,msebuffer);
fwrite(msebuffer,sizeof(unsigned
char),info_h.biwidth*info_h.biheight,output);//將誤差資料寫入輸出檔案
四、實驗結果
1)dpcm輸出的重建影象
2)原始影象
3)**誤差影象和原始影象huffman編碼比較
4)**誤差影象和原始影象的符號概率分布
五、結論
在dpcm編碼之後,信源符號的分布更加集中,huffman編碼的效率提高了。
標準DPCM編碼(Matlab實現)
以下 中,f代表原始碼,f1代表 碼,e代表 碼與原始碼差值,en代表變換後的差分值 通過含e的公式計算得到,因為有特定對應值,也可以通過查表實現 f2是通過變換後的差分值得到的 碼。最終輸出的結果是en,也就是變換後的差分值。function en my dpcm f n size f f1 ze...
實驗四 編碼裁剪演算法
一 實驗目的和要求 1.了解二維圖形裁剪的原理 點的裁剪 直線的裁剪 多邊形的裁剪 利用vc opengl實現直線的裁剪演算法。二 實驗內容及主要步驟 1 理解直線裁剪的原理 cohen surtherland演算法 梁友棟演算法 2 利用vc opengl實現直線的編碼裁剪演算法,在螢幕上用乙個封...
資料壓縮實驗四 DPCM 壓縮系統的實現和分析
dpcm 是差分 編碼調製的縮寫,是比較典型的 編碼系統。在 dpcm 系統中,需要注意的是 器的輸入是已經解碼以後的樣本。之所以不用原始樣本來做 是因為在解碼端無法得到原始樣本,只能得到存在誤差的樣本。因此,在 dpcm 編碼器中實際內嵌了乙個解碼器,如編碼器中虛線框中所示。在乙個 dpcm 系統...