Natknąłem się na tę niesamowitą odpowiedź Applying MATLAB's idwt2
several times, którą wykonałem, aby ją zrozumieć. Jednak nie jestem w stanie uzyskać, jak używać tego samego z pracą z obrazem RGB. Mam 3 pytania.Transformacja falkowa dla wymiarów N
Jak kod być stosowane do obrazu RGB tylko przekształconego obrazu wyświetlanego na wyjściu, który jest wraz z komponentów wysokiej i niskiej częstotliwości wzdłuż wiersza i kolumny, to jest możliwe, aby zobaczyć fuzję wszystko składniki jako pojedynczy obraz? Zdaję sobie sprawę, że muszę postawić operatora kotów, ale nie mogę zrozumieć, jak sobie z tym poradzić.
Po drugie, otrzymuję również obraz w postaci mazi! Jestem zakłopotany, ponieważ nie mogę podążać za przyczyną. Dołączyłem również ten sam kod z instrukcją pokazującą, w jaki sposób wygenerowano ten obraz.
3.Co oznacza pojęcie
db1
w sygnaturze funkcjidwt
?
KOD:
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);
Czy nie masz już zadać to w dniu dzisiejszym? Nie widzę już oryginalnego pytania - czy usunąłeś je i odesłałeś, czy coś? –
Tak, zrobiłem to i pozostało niezauważone i bez odpowiedzi przez cały dzień. Tak więc, domyślam się, może to być powtórzenie go ponownie, aby to podkreślić. Byłoby mi niezmiernie pomocnie, gdybyś mógł przeszukać kilka odpowiedzi zamiast ponownie je edytować, mimo że zachowałem nienaruszoną poprzednią wersję. Dzięki za dodatkowy wysiłek! –
Wszystko, co zrobiłem, to naprawienie tagów - nie edytowałem samego pytania. W celu późniejszego odniesienia, powinieneś spróbować poprawić oryginalne pytanie, jeśli nie otrzymujesz żadnych odpowiedzi, a nie repostować. –