Matlab의 IDWT2를 여러 번 적용합니다
-
12-09-2019 - |
문제
Matlab을 사용하여 이미지에 이산 웨이블릿 변환을 적용하고 있습니다. 3 레벨 변환을 얻기 위해 여러 번 (3) 적용하고 있습니다. 나는 그것을 사용하고있다 dwt2
압축을 위해 MATLAB에서 제공하는 기능 idwt2
감압을 만들기 위해. 문제는 적용되는 것처럼 여러 번 압축을 피우는 방법을 모른다는 것입니다. idwt2
행렬을 반환하면 이전 수신 출력에 여러 번. 예를 들어 :
x = idwt2(scaled3, vertical3, horizontal3, diagonal3, Lo_R, Ho_R);
어떻게해야합니다 idwt2
x에 적용합니까?
해결책
문서를보고 있습니다 dwt2
그리고 idwt2
, 곱하기 이미지를 재구성하기위한 두 가지 일반적인 옵션이있는 것으로 보입니다.
- 각 분해 단계에서 수평, 수직 및 대각선 세부 계수 매트릭스를 모두 저장하고 재구성에 사용하십시오.
- 빈 행렬을 입력하십시오 (
[]
) 이전 분해 단계에서 저장하지 않은 세부 계수 행렬의 경우.
느린 날 이었으므로 여기 에이 작업을 수행하는 방법과 각 사례에 대한 결과가 어떻게 보이는지 보여주는 코드가 있습니다 ...
먼저 샘플 이미지를로드하고 일부 변수를 초기화합니다.
load woman; % Load image data
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
이제 분해 (이 경우 3)를 적용하고 셀 어레이의 각 단계에서 세부 계수 행렬을 저장하십시오.
startImage = X;
for iLevel = 1:nLevel,
[cA{iLevel}, cH{iLevel}, cV{iLevel}, cD{iLevel}] = dwt2(startImage, 'db1');
startImage = cA{iLevel};
end
최종 분해 이미지가 어떻게 보이는지 보려면 모든 세부 사항 계수 행렬과 함께 다음 코드를 실행하십시오 (사용합니다. wcodemat
):
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);
당신은 다음과 같은 것을보아야합니다.
이제 재구성 할 시간입니다! 다음 코드는 "전체"재구성을 수행합니다 (사용 모두 저장된 디테일 계수 행렬) 및 "부분"재구성 (사용 없음 그들 중), 그 다음 이미지를 표시합니다.
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);
원본 (왼쪽 상단)과 "전체"재구성 (오른쪽 상단)은 구별 할 수없는 것처럼 보이지만 "부분"재구성 (왼쪽 아래)은 매우 픽셀 화되었습니다. 단 1 또는 2와 같이 분해 단계를 적게 적용하면 차이가 심각하지 않습니다.