資料壓縮實驗 DPCM壓縮系統的實現和分析

2021-10-05 22:43:42 字數 3422 閱讀 6593

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方式。今天對這兩種方式分別進行了測試,對比了二者在磁碟占用以及查詢效能方面各自的優劣。至於為什麼做這個,你們應該懂...