影像壓縮編碼碼matlab實現——算術編碼
clear all
clc
format long;
symbol = ['abcd'];
pr = [0.1 0.4 0.2 0.3];
seqin = ['cadacdb'];
codeword = arencode(symbol, pr, seqin)
seqout = ardecode(symbol, pr, codeword, 7)
function symseq = ardecode(symbol, pr, codeword, symlen)
%給定字元概率的算術編碼
%輸出:symse:字串
%輸入:symbol:由字元組成的行向量
% pr:字元出現的概率
% codeword:碼字
% symlen:待解碼字串長度
format long
high_range = [];
for k = 1 : length(pr),
high_range = [high_range sum(pr(1 : k))];
end
low_range = [0 high_range(1 : length(pr) - 1)];
prmin = min(pr);
symseq = [];
symseq = [];
for i = 1 : symlen,
index = max(find(low_range <= codeword));
codeword = codeword - low_range(index);
%duo to numerical error, sometimes the encoded number
%will be slightly smaller than the current lower bound.
%If this happens, a correction is required.
if abs(codeword - pr(index)) < 0.01 * prmin,
index = index + 1;
codeword = 0;
end
symseq = [symseq symbol(index)];
codeword = codeword/pr(index);
if abs(codeword) < 0.01 * prmin,
i = symlen + 1; %break the for loop immediately
end
end
function arcode = arencode(symbol, pr, seqin)
%算術編碼
%輸出:碼串
%輸入:symbol:字元行向量
% pr:字元出現概率
% seqin:待編碼字串
high_range = [];
for k = 1: length(pr),
high_range = [high_range sum(pr(1: k))];
end
low_range = [0 high_range(1: length(pr) - 1)];
sbidx = zeros(size(seqin));
for i = 1: length(seqin),
sbidx(i) = find(symbol == seqin(i));
end
low = 0; high = 1;
for i = 1: length(seqin),
range = high - low;
high = low + range * high_range(sbidx(i));
low = low + range * low_range(sbidx(i));
end
arcode = low;
相關文章
- 影像壓縮編碼碼matlab實現——行程編碼Matlab行程
- 影像壓縮編碼碼matlab實現——DM編碼Matlab
- 影像壓縮編碼碼matlab實現——變換編碼Matlab
- 影像壓縮編碼碼matlab實現——常用引數計算Matlab
- 貪心演算法——Huffman 壓縮編碼的實現演算法
- 數字媒體技術揭祕(續)——壓縮編碼
- CSP之壓縮編碼(動態規劃)動態規劃
- 高效的資料壓縮編碼方式 Protobuf
- 計算機演算法:資料壓縮之字首編碼(5)計算機演算法
- 計算機演算法:資料壓縮之遊程編碼計算機演算法
- LZ77壓縮演算法編碼Python實現原理圖解演算法Python圖解
- 計算機演算法:資料壓縮之相對編碼(4)計算機演算法
- 檢視網頁是否壓縮gzip+編碼方式網頁
- 【字元編碼系列】Base64編碼原理以及實現字元
- 用ASP實現線上壓縮與解壓縮功能程式碼
- 【學習圖片】13.自動壓縮和編碼
- JS 簡單實現UTF-8編碼,Base64編碼JS
- 標籤編碼、獨熱編碼大不同 - Python 實現Python
- 計算機編碼規則之:Base64編碼計算機
- 計算機演算法:資料壓縮之圖編碼和模式替換(3)計算機演算法模式
- hive學習之四:hive檔案格式以及壓縮編碼Hive
- Mysql編碼, Mysql編碼流程, Mysql編碼順序, Mysql編碼原理, Mysql編碼修改依據MySql
- Base24編碼以及解碼的實現
- PHP影像處理繪圖、水印、驗證碼、影像壓縮技術例項總結PHP繪圖
- Android短影片系統硬編碼—實現音影片編碼(三)Android
- Android短影片系統硬編碼—實現音影片編碼(二)Android
- [計組] 計算機編碼方式:原碼、反碼、補碼計算機
- C#實現Base64編碼與解碼
- CVE-2010-2553 Microsoft Windows Cinepak 編碼解碼器解壓縮漏洞 分析ROSWindows
- 新媒體編碼時代的技術:編碼與傳輸
- js實現的字串簡單編碼和解碼程式碼例項JS字串
- 【字元編碼】字元編碼 && Base64編碼演算法字元演算法
- 漫談計算機編碼計算機
- 過濾器應用【編碼、敏感詞、壓縮、轉義過濾器】過濾器
- [java]java實現哈夫曼編碼Java
- js自定義實現的簡單編碼和解碼程式碼例項JS
- 【字元編碼】Java編碼格式探祕字元Java
- html實體編碼遇上js程式碼HTMLJS