1.dpcm編譯碼原理**實現dpcm是差分**編碼調製的縮寫,是比較典型的**編碼系統。在dpcm系統中,需要注意的是**器的輸入是已經解碼以後的樣本。之所以不用原始樣本來做**,是因為在解碼端無法得到原始樣本,只能得到存在誤差的樣本。因此,在dpcm編碼器中實際內嵌了乙個解碼器,如編碼器中虛線框中所示。
在乙個dpcm系統中,有兩個因素需要設計:**器和量化器。理想情況下,**器和量化器應進行聯合優化。實際中,採用一種次優的設計方法:分別進行線性**器和量化器的優化設計。
2.dpcm編碼系統的設計
在本次實驗中,我們採用固定**器和均勻量化器。**器採用左側、上方**均可。量化器採用8位元均勻量化。本實驗的目標是驗證dpcm編碼的編碼效率。首先讀取乙個256級的灰度影象,採用自己設定的**方法計算**誤差,並對**誤差進行8位元均勻量化(基本要求)
。還可對**誤差進行1位元、2位元和4位元的量化設計。
在dpcm編碼器實現的過程中可同時輸出**誤差影象和重建影象。將**誤差影象寫入檔案並將該檔案輸入huffman編碼器,得到輸出碼流、給出概率分布圖並計算壓縮比。將原始影象檔案輸入huffman編碼器,得到輸出碼流、給出概率分布圖並計算壓縮比。最後比較兩種系統(1.dpcm+熵編碼和2.僅進行熵編碼)之間的編碼效率(壓縮比和影象質量)。壓縮質量以psnr進行計算。
#include
#include
using
namespace std;
intmain()
elseif(
!rebuildfile)
elseif(
!differencefile)
else
int width =
256;
int height =
256;
int size = width * height;
unsigned
char
* ybuffer =
newunsigned
char
[size]
;unsigned
char
* uvbuffer =
newunsigned
char
[size *2]
; originalfile.
read((
char
*)ybuffer, size)
; originalfile.
read((
char
*)uvbuffer, size *2)
;unsigned
char
* previous =
newunsigned
char
[size]
;unsigned
char
* rebuilddifference =
newunsigned
char
[size]
;unsigned
char
* quantify =
newunsigned
char
[size]
;int bit =8;
for(
int i =
0; i < height; i++
)int x =0;
for(
int i =
0; i < height; i++)}
rebuildfile.
write((
char
*)previous, size)
; rebuildfile.
write((
char
*)uvbuffer, size *2)
;for
(int i =
0; i < size; i++
)for
(int i =
0; i < size *
2; i++
) differencefile.
write((
char
*)rebuilddifference, size)
; differencefile.
write((
char
*)uvbuffer, size *2)
;//訊號雜訊比計算
double pnsr =0;
double mse =0;
for(
int i =
0; i < height; i++
) mse = mse /
(width * height)
; pnsr =10*
log10
(pow((
pow(2,
8)-1
),2)
/ mse)
; cout << bit <<
"bit quantify psnr = "
<< pnsr <<
"\n"
;delete
ybuffer;
delete
uvbuffer;
delete
previous;
delete
rebuilddifference;
delete
quantify;
originalfile.
close()
; rebuildfile.
close()
; differencefile.
close()
;return0;
}
輸出結果:重建影象以及**誤差影象
訊號雜訊比計算:
訊雜比越高,影象質量越好;量化比越高的影象質量越好。
**誤差概率分布:
兩種系統之間的比較(8bit)
資料壓縮實驗四 DPCM 壓縮系統的實現和分析
dpcm 是差分 編碼調製的縮寫,是比較典型的 編碼系統。在 dpcm 系統中,需要注意的是 器的輸入是已經解碼以後的樣本。之所以不用原始樣本來做 是因為在解碼端無法得到原始樣本,只能得到存在誤差的樣本。因此,在 dpcm 編碼器中實際內嵌了乙個解碼器,如編碼器中虛線框中所示。在乙個 dpcm 系統...
資料壓縮實驗二bmp to yuv
bmp 全稱bitmap 是windows作業系統中標準影象檔案格式 裝置相關位圖 ddb 和裝置無關位圖 dib 使用非常廣。它採用位對映儲存格式,除了影象深度可選以外,在絕大多數應用中不採用其他任何壓縮。bmp當中資料的色彩空間是rgb。典型的bmp影象由以下四部分組成 1.位圖標頭檔案資料結構...
mysql 資料壓縮 mysql的資料壓縮效能對比
資料魔方需要的資料,一旦寫入就很少或者根本不會更新。這種資料非常適合壓縮以降低磁碟占用。mysql本身提供了兩種壓縮方式 archive引擎以及針對myisam引擎的myisampack方式。今天對這兩種方式分別進行了測試,對比了二者在磁碟占用以及查詢效能方面各自的優劣。至於為什麼做這個,你們應該懂...