影像壓縮編碼碼matlab實現——DM編碼

fpga&matlab發表於2020-12-24

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);

相關文章