dpcm 是差分**編碼調製的縮寫,是比較典型的**編碼系統。
在 dpcm 系統中,需要注意的是**器的輸入是已經解碼以後的樣本。之所以不用原始樣本來做**,是因為在解碼端無法得到原始樣本,只能得到存在誤差的樣本。因此,在 dpcm 編碼器中實際內嵌了乙個解碼器,如編碼器中虛線框中所示。
在乙個 dpcm 系統中,有兩個因素需要設計:**器和量化器。理想情況下,**器
和量化器應進行聯合優化。實際中,採用一種次優的設計方法:分別進行線性**器和量化器的優化設計 。
在本次實驗中,我們採用固定**器和均勻量化器。 **器採用左側**。量化器採用8位元均勻量化。
1.讀取bmp檔案,轉化為yuv格式,提取y分量
2. 對該灰度影象進行**,**器的輸入為上乙個樣點的重建值,計算**誤差
3. 對**誤差進行8bit均勻量化
4. 對量化後的**誤差進行反量化,求重建值
5. 將**誤差影象和原始灰度影象輸入huffman編碼器,得到碼字必要資訊並比較兩種系統(dpcm+熵編碼和僅進行熵編碼)之間的編碼效率。
在bmp2yuv的**中新增如下部分
double psnr =0;
int16_t
* qbuf =
null
//量化
int16_t
* iqbuf =
null
;//反量化
unsigned
char
* pbuf =
null
;unsigned
char
* rebuf =
null
;//重建
qbuf =
(int16_t*)
malloc
(framewidth * frameheight*
sizeof
(int16_t))
; iqbuf =
(int16_t*)
malloc
(framewidth * frameheight*
sizeof
(int16_t))
; pbuf =
(unsigned
char*)
malloc
(framewidth * frameheight*
sizeof
(unsigned
char))
; rebuf =
(unsigned
char*)
malloc
(framewidth * frameheight*
sizeof
(unsigned
char))
;for
(j=0
;j)else}}
//寫**誤差檔案
for(i=
0;i<
(framewidth * frameheight)/4
;i++
)for
(i=0
;i)fwrite
(pbuf,
1,framewidth * frameheight,qfile)
;fwrite
(uubuf,1,
(framewidth * frameheight)/4
,qfile)
;fwrite
(vvbuf,1,
(framewidth * frameheight)/4
,qfile)
;//寫重建影象檔案
fwrite
(rebuf,
1,framewidth * frameheight,refile)
;fwrite
(ubuf,1,
(framewidth * frameheight)/4
,refile)
;fwrite
(vbuf,1,
(framewidth * frameheight)/4
,refile)
;//計算psnr
double er =0;
double mse =
0.0;
psnr =
0.0;
for(j=
0;jmse =
(1.0
/(framewidth*frameheight)
)*mse;
psnr =10*
log10((
255*
255)
/mse)
;printf
("psnr = %f"
, psnr)
;
但是每次開啟都顯示get to end of file,連bmp檔案都是,還沒找到原因。 資料壓縮實驗 DPCM壓縮系統的實現和分析
1.dpcm編譯碼原理 dpcm是差分 編碼調製的縮寫,是比較典型的 編碼系統。在dpcm系統中,需要注意的是 器的輸入是已經解碼以後的樣本。之所以不用原始樣本來做 是因為在解碼端無法得到原始樣本,只能得到存在誤差的樣本。因此,在dpcm編碼器中實際內嵌了乙個解碼器,如編碼器中虛線框中所示。在乙個d...
資料壓縮實驗二bmp to yuv
bmp 全稱bitmap 是windows作業系統中標準影象檔案格式 裝置相關位圖 ddb 和裝置無關位圖 dib 使用非常廣。它採用位對映儲存格式,除了影象深度可選以外,在絕大多數應用中不採用其他任何壓縮。bmp當中資料的色彩空間是rgb。典型的bmp影象由以下四部分組成 1.位圖標頭檔案資料結構...
ASIHTTPRequest 資料壓縮
從0.9版本開始,asihttprequest會提示伺服器它可以接收gzip壓縮過的資料。apache 2.x以上版本已經配備了mod deflate擴充套件,這使得apache可以透明地壓縮特定種類的資料。要開啟這個特性,你需要在apache的配置檔案中啟用mod deflate。並將mod de...