当前位置:首页 > JPEG2000图像压缩标准研究
通信工程一班 孙大江 邵军立 潘亚辉
4.973290349094079e-002 1.193456527972926e-002 ... -1.699063986760234e-002 -1.914286129088767e-003 ... 1.908831736481291e-003];
hd = [0 0 0 1.442628250562444e-002 -1.446750489679015e-002 ... -7.872200106262882e-002 4.036797903033992e-002 ... 4.178491091502746e-001 -7.589077294536542e-001 ... 4.178491091502746e-001 4.036797903033992e-002 ... -7.872200106262882e-002 -1.446750489679015e-002 ... 1.442628250562444e-002 0 0 0 0]; t = (0:17);
lr = cos(pi * (t + 1)) .* hd; hr = cos(pi * t) .* ld;
case 'jpeg9.7'
ld = [0 0.02674875741080976 -0.01686411844287495 ... -0.07822326652898785 0.2668641184428723 ... 0.6029490182363579 0.2668641184428723 ... -0.07822326652898785 -0.01686411844287495 ... 0.02674875741080976];
hd = [0 -0.09127176311424948 0.05754352622849957 ... 0.5912717631142470 -1.115087052456994 ... 0.5912717631142470 0.05754352622849957 ... -0.09127176311424948 0 0]; t = (0:9);
lr = cos(pi * (t + 1)) .* hd; hr = cos(pi * t) .* ld; otherwise
error('Unrecognizable wavelet name (WNAME).'); end
通信工程一班 孙大江 邵军立 潘亚辉
if (nargin == 1)
varargout(1:4) = {ld, hd, lr, hr}; else
switch lower(type(1)) case 'd'
varargout = {ld, hd}; case 'r'
varargout = {lr, hr}; otherwise
error('Unrecognizable filter TYPE.'); end end ⑥量化 clc; clear; close all; n=2; p=[2 3;4 5;]
if length(p) == 2 % Implicit Quantization q = [];
qn = 2 ^ (8 - p(2) + n) * (1+ p(1) / 2 ^ 11); for k = 1:n
qk = 2 ^ - k * qn;
q = [q (2 * qk) (2 * qk) (4 * qk)]; end q = [q qk];
else % Explicit Quantization q = p; end
q = round(q * 100) / 100; % Round to 1/100th place
通信工程一班 孙大江 邵军立 潘亚辉
if any(100 * q > 65535)
error('The quantizing steps are not UNIT16 representable.'); end ⑦变换 clc; clear; close all;
x=imread('test1.bmp'); x=rgb2gray(x); whos
x = double(x) - 128; n=2;
[c, s] = wavefast(x, n,'jpeg9.7')
sgn = sign(c); sgn(find(sgn == 0)) = 1; c = abs(c) ⑧jpeg2k2im
function x = jpeg2k2im(y)
error(nargchk(1, 1, nargin)); % Check input arguments n = double(y.n); q = double(y.q) / 100; runs = double(y.runs); rlen = length(runs); zrc = -double(y.zrc); eoc = zrc - 1; s = double(y.s); s = reshape(s, n + 2, 2); cl = prod(s(1, :)); for i = 2:n + 1
cl = cl + 3 * prod(s(i, :)); end
r = huff2mat(y.huffman);
通信工程一班 孙大江 邵军立 潘亚辉
c = []; zi = find(r == zrc); i = 1; for j = 1:length(zi)
c = [c r(i:zi(j) - 1) zeros(1, runs(r(zi(j) + 1)))]; i = zi(j) + 2; end
zi = find(r == eoc); % Undo terminating zero run if length(zi) == 1 % or last non-zero run. c = [c r(i:zi - 1)];
c = [c zeros(1, cl - length(c))]; else
c = [c r(i:end)]; end
c = c + (c > 0) - (c < 0); for k = 1:n qi = 3 * k - 2;
c = wavepaste('h', c, s, k, wavecopy('h', c, s, k) * q(qi)); c = wavepaste('v', c, s, k, wavecopy('v', c, s, k) * q(qi + 1)); c = wavepaste('d', c, s, k, wavecopy('d', c, s, k) * q(qi + 2)); end
c = wavepaste('a', c, s, k, wavecopy('a', c, s, k) * q(qi + 3)); x = waveback(c, s, 'jpeg9.7', n); x = uint8(x + 128);
⑨im2jpeg2k
function y = im2jpeg2k(x, n, q) global RUNS
error(nargchk(3, 3, nargin)); % Check input arguments if ndims(x) ~= 2 | ~isreal(x) | ~isnumeric(x) | ~isa(x, 'uint8') error('The input must be a UINT8 image.');
共分享92篇相关文档