разложение вейвлет-коэффициентов по дереву квадрантов

После получения коэффициентов изображения (как приблизительных, так и подробных) в вейвлет-разложении мне нужна структура дерева квадрантов для приблизительных и подробных коэффициентов. но каждый раз я получаю ту же ошибку. Пожалуйста помоги. Я пытался сделать мощность 3 вместо 2, но это не помогло. может быть я где-то ошибаюсь.

code for image decomposition


X=imread('abc.tif');
close all
clf
image(X)
colormap('default')
axis ('image'); set(gca,'XTick',[],'YTick',[]); title('Original')
pause

dwtmode('sym')
wname = 'bior4.4'

t = wtree(X,2,'bior4.4');
plot(t)
pause
close(2)

[wc,s] = wavedec2(X,5,wname);

a1 = appcoef2(wc,s,wname,1);         
h1 = detcoef2('h',wc,s,1);           
v1 = detcoef2('v',wc,s,1);           
d1 = detcoef2('d',wc,s,1);           

a2 = appcoef2(wc,s,wname,2);
h2 = detcoef2('h',wc,s,2);
v2 = detcoef2('v',wc,s,2);
d2 = detcoef2('d',wc,s,2);

a3 = appcoef2(wc,s,wname,3);         
h3 = detcoef2('h',wc,s,3);           
v3 = detcoef2('v',wc,s,3);           
d3 = detcoef2('d',wc,s,3);           

a4 = appcoef2(wc,s,wname,4);         
h4 = detcoef2('h',wc,s,4);           
v4 = detcoef2('v',wc,s,4);           
d4 = detcoef2('d',wc,s,4);           

a5 = appcoef2(wc,s,wname,5);         
h5 = detcoef2('h',wc,s,5);           
v5 = detcoef2('v',wc,s,5);           
d5 = detcoef2('d',wc,s,5); 

Для quadtree я использую:

S = qtdecomp(I,.27); %I is image in greyscale.
blocks = repmat(uint8(0),size(S));

for dim = [512 256 128 64 32 16 8 4 2 1];    
  numblocks = length(find(S==dim));    
  if (numblocks > 0)        
    values = repmat(uint8(1),[dim dim numblocks]);
    values(2:dim,2:dim,:) = 0;
    blocks = qtsetblk(blocks,S,dim,values);
  end
end

blocks(end,1:end) = 1;
blocks(1:end,end) = 1;

imshow(I), figure, imshow(blocks,[])

ошибка, которую он показывает:

??? Error using ==> qtdecomp>ParseInputs at 229
MAXDIM / MINDIM is not a power of 2

Error in ==> qtdecomp at 88
[A, func, params, minDim, maxDim] = ParseInputs(varargin{:});

or

??? Error using ==> qtdecomp>ParseInputs at 145
A must be two-dimensional

Error in ==> qtdecomp at 88
[A, func, params, minDim, maxDim] = ParseInputs(varargin{:});

person TG29    schedule 05.05.2014    source источник


Ответы (1)


Ошибка довольно ясна. Ваше изображение должно иметь размеры, принадлежащие степени двойки. Таким образом, вам нужно изменить размер изображения, чтобы оно соответствовало этому. qtdecomp вычисляет алгоритм декомпозиции дерева квадрантов, и предварительным условием для этой функции является то, что она НЕОБХОДИМА иметь на входе изображение, каждое измерение которого представляет собой степень двойки.

Вы задали нечто подобное в другом вопросе, на который я дал ответ. Что любопытно, так это то, что этот другой вопрос, который вы задали, был 6 дней назад до этого, и вы приняли мой ответ на этот другой. Проблема, с которой вы столкнулись, более или менее аналогична.

Декомпозиция дерева квадрантов

person rayryeng    schedule 11.05.2014
comment
Спасибо за Ответ. - person TG29; 21.05.2014