影像壓縮編碼碼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實現——DM編碼Matlab
- 影像壓縮編碼碼matlab實現——行程編碼Matlab行程
- 影像壓縮編碼碼matlab實現——變換編碼Matlab
- 影像壓縮編碼碼matlab實現——常用引數計算Matlab
- 基於方塊編碼的影像壓縮matlab模擬,帶GUI介面MatlabGUI
- 熵編碼(四)-算術編碼(二)熵
- 貪心演算法——Huffman 壓縮編碼的實現演算法
- CSP之壓縮編碼(動態規劃)動態規劃
- 高效的資料壓縮編碼方式 Protobuf
- 標籤編碼、獨熱編碼大不同 - Python 實現Python
- 記錄一個很簡單的壓縮編碼--ADPCM
- 【學習圖片】13.自動壓縮和編碼
- 用ASP實現線上壓縮與解壓縮功能程式碼
- JS 簡單實現UTF-8編碼,Base64編碼JS
- Android短影片系統硬編碼—實現音影片編碼(三)Android
- Android短影片系統硬編碼—實現音影片編碼(二)Android
- 計算機編碼規則之:Base64編碼計算機
- hive學習之四:hive檔案格式以及壓縮編碼Hive
- [計組] 計算機編碼方式:原碼、反碼、補碼計算機
- PHP影像處理繪圖、水印、驗證碼、影像壓縮技術例項總結PHP繪圖
- 用Javascript實現UTF8編碼轉換成gb2312編碼JavaScript
- IDEA如何設定編碼格式,字元編碼,全域性編碼和專案編碼格式Idea字元
- 漫談計算機編碼計算機
- 新媒體編碼時代的技術:編碼與傳輸
- Netty編碼流程及WriteAndFlush()的實現Netty
- TensorFlow上實現AutoEncoder自編碼器
- Keras上實現AutoEncoder自編碼器Keras
- html實體編碼遇上js程式碼HTMLJS
- Unicode編碼解碼Unicode
- Glide 4.9 原始碼分析(二) —— 取樣壓縮的實現IDE原始碼
- 基於Netty實現Redis協議的編碼解碼器NettyRedis協議
- 自動編碼器是什麼?教你如何使用自動編碼器增強模糊影像
- Laravel 編碼實踐分享Laravel
- java安全編碼指南之:字串和編碼Java字串
- 字符集編碼(二):字元編碼模型字元模型
- YUV影像質量的客觀評估SSIM matlab程式碼實現Matlab
- LeetCode第三題之二:編碼實現LeetCode
- 哈夫曼編碼 —— Lisp 與 Python 實現LispPython