Я наткнулся на этот удивительный ответ . Применяя MATLAB idwt2
несколько раз , я выполнил его, чтобы понять его сам. Однако я не могу понять, как использовать то же самое для работы с изображением RGB. Итак, у меня есть 3 вопроса.
Как можно применить код к изображению RGB с отображением только преобразованного изображения на выходе вместе с высокочастотными и низкочастотными компонентами в строке и столбце, можно ли просмотреть объединение всех компонентов в единое изображение? Я знаю, что мне нужно поставить оператор cat, но я не понимаю, как это сделать.
Во-вторых, я также получаю лабиринтное изображение! Я в недоумении, так как не могу понять причину. Я также приложил тот же код к заявлению, показывающему, как было создано это изображение.
3. Что означает термин db1
в сигнатуре функции dwt
?
] КОД:
load woman; % Load image data
%startImage=imread('pic_rgb.jpg'); % IF I WANT TO WORK WITH RGB IMAGE
nLevel = 3; % Number of decompositions
nColors = size(map,1); % Number of colors in colormap
cA = cell(1,nLevel); % Approximation coefficients
cH = cell(1,nLevel); % Horizontal detail coefficients
cV = cell(1,nLevel); % Vertical detail coefficients
cD = cell(1,nLevel); % Diagonal detail coefficients
startImage = X;
for iLevel = 1:nLevel,
[cA{iLevel},cH{iLevel},cV{iLevel},cD{iLevel}] = dwt2(startImage,'db1');
startImage = cA{iLevel};
end
figure;colormap(map);
imagesc(dwt2(startImage,'db1')); %THIS GIVES THE MAZED IMAGE INSTEAD OF THE TRANSFORMED IMAGE
figure;
tiledImage = wcodemat(cA{nLevel},nColors);
for iLevel = nLevel:-1:1,
tiledImage = [tiledImage wcodemat(cH{iLevel},nColors); ...
wcodemat(cV{iLevel},nColors) wcodemat(cD{iLevel},nColors)];
end
figure;
imshow(tiledImage,map);
%reconstruct
fullRecon = cA{nLevel};
for iLevel = nLevel:-1:1,
fullRecon = idwt2(fullRecon,cH{iLevel},cV{iLevel},cD{iLevel},'db1');
end
partialRecon = cA{nLevel};
for iLevel = nLevel:-1:1,
partialRecon = idwt2(partialRecon,[],[],[],'db1');
end
figure;
imshow([X fullRecon; partialRecon zeros(size(X))],map,...
'InitialMagnification',50);