我和一个队友正在为一个项目研究 JPEG2000 类似的压缩方案。它利用matlab和小波工具箱。
有2个问题。我对 JPEG2000 缺乏了解,这使我相信我缺少此压缩过程的步骤。第二个问题是一个实际错误,涉及:[dict,avglen] = huffmandict(cQ,p); % Create dictionary.
错误:???在 174 处使用 ==> huffmandict 时出错 源符号重复
我不确定这是否与矩阵中的重复值有关,因为没有进行游程编码。
==> 项目中的错误 41 [dict,avglen] = huffmandict(cQ,p); % 创建字典。
任何提示或信息都是有益的。
另外,我不确定是否需要预处理步骤
代码如下:
%wavelet based compression sub-band coding
clear all;
close all;
x=imread('1.png');%input image
n=input('enter the desired decompositon level '); %decompositon level
Q=input('enter the desired quantization step size '); %quantization level
%begin wavelet decomposition
c = [];
sx = size(x);
s = zeros(n+2,length(sx));
if isempty(x) , return; end
s(end,:) = size(x);
for i=1:n
[x,h,v,d] = dwt2(x,'haar'); % decomposition
c = [h(:)' v(:)' d(:)' c]; % store details
s(n+2-i,:) = size(x); % store size
end
% Last approximation.
c = [x(:)' c];
s(1,:) = size(x);
%Begin Quantization
cQ=round(c/Q);
%Begin Entropy Encoding
scQ=length(cQ);
l=1;
for i=1:(scQ-1);
l=l/2;
p(i)=l;
end
p(scQ)=p(scQ-1);
[dict,avglen] = huffmandict(cQ,p); % Create dictionary.
actualsig = randsrc(100,1,[cQ; p]); % Create data using p.
comp = huffmanenco(actualsig,dict); % Encode the data.