图像压缩编码码matlab实现——DM编码
function y = DMencode(x, a, delt)
%函數DMencode為德爾塔編碼程序,x為要編碼的矩陣,a為預測系數,delt為一個正常數。
%當a默認時,a=1;delt默認時,delt=6.5。
error(nargchk(1, 3, nargin))
if nargin < 3
? ? delt = 6.5
? ? if nargin < 2
? ? ? ? a = 1;
? ? end
end
x = double(x);
[m, n] = size(x);
p = zeros(m, n); ? ? %存放預測值
e = zeros(m, n); ? ? %量化前誤差
qe = zeros(m, n); ? ?%量化后誤差
ff = zeros(m, n);
ff(:, 1) = x(:, 1);
qe(:, 1) = x(:, 1);
for i = 1: m
? ? for j = 2: n
? ? ? ? p(i, j) = a.* ff(i, j-1);
? ? ? ? e(i, j) = x(i, j) - p(i, j);
? ? ? ? if e(i, j) > 0
? ? ? ? ? ? qe(i, j) = delt;
? ? ? ? else
? ? ? ? ? ? qe(i, j) = -delt;
? ? ? ? end
? ? ? ? ff(i, j) = p(i, j) + qe(i, j);
? ? end
end
y = qe;
?
function x = DMdecode(y, a)
%函數DMdecode為解碼程序,y為要解碼的預測誤差矩陣,a為預測系數,當a默認時,a = 1。
error(nargchk(1, 2, nargin));
if nargin < 2
? ? a = 1;
end
[m, n] = size(y);
x = zeros(m, n + 1);
for j = 1: n
? ? jj = j + 1;
? ? x(:, jj) = y(:, j) + a.* x(:, (jj-1));
end
x = x(:, 1+1:end);
總結
以上是生活随笔為你收集整理的图像压缩编码码matlab实现——DM编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BCH code
- 下一篇: 多图片上传,多文件上传。插件diyUpl