2

私とチームメイトは、あるプロジェクトで JPEG2000 と同様の圧縮スキームに取り組んでいます。matlab とウェーブレット ツールボックスを利用します。

2つの問題があります。JPEG2000 に関する知識が不足しているため、この圧縮プロセスの手順が不足していると思い込んでいます。[dict,avglen] = huffmandict(cQ,p); % Create dictionary.
2 番目の問題は、エラー: ???を含む実際のエラーです。==> huffmandict を 174 ソース シンボルで使用するとエラーが発生する

ランレングス コーディングが行われていないため、これがマトリックス内の値の繰り返しと関係があるかどうかはわかりません。

==> 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.
4

1 に答える 1

-1

部分的な回答に過ぎないことは承知していますが、入力に重複が含まれているためにエラーが発生しているようです。

これは、uniqueコマンドを使用することで回避できます。

このウェブサイトでは、次のようなものを推奨しています。

[symbols,p]=hist(A,double(unique(A)))

しかし、あなたの入力がどのように機能するかわからないので、使用する必要があるかもしれません

unique([cQ; p],'rows')
于 2013-02-13T10:45:36.417 に答える