多次应用MATLAB的idwt2

hyp*_*ean 3 matlab image-processing wavelet

我正在使用MATLAB在图像上应用离散小波变换.我正在应用它几次(3)以获得3级变换.我正在使用dwt2MATLAB提供的功能来压缩和idwt2进行解压缩.问题是我不知道如何多次解压缩,就像idwt2多次应用到先前接收的输出一样,因为它返回一个矩阵.举个例子:

x = idwt2(scaled3, vertical3, horizontal3, diagonal3, Lo_R, Ho_R);
Run Code Online (Sandbox Code Playgroud)

应该如何idwt2应用于x?

gno*_*ice 11

纵观对于文档dwt2idwt2,看来,你有你的重建乘法分解图像2个常规选项:

  • 存储来自每个分解步骤的所有水平,垂直和对角线细节系数矩阵,并在重建中使用它们.
  • []为您未从先前分解步骤保存的任何细节系数矩阵输入空矩阵().

由于这是一个缓慢的一天,这里有一些代码显示如何做到这一点以及每个案例的结果如何......

首先,加载样本图像并初始化一些变量:

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
Run Code Online (Sandbox Code Playgroud)

现在,应用分解(在本例中为3)并存储单元格数组中每个步骤的细节系数矩阵:

startImage = X;
for iLevel = 1:nLevel,
  [cA{iLevel}, cH{iLevel}, cV{iLevel}, cD{iLevel}] = dwt2(startImage, 'db1');
  startImage = cA{iLevel};
end
Run Code Online (Sandbox Code Playgroud)

要查看最终分解图像的外观,以及沿途的所有细节系数矩阵,请运行以下代码(使用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);
Run Code Online (Sandbox Code Playgroud)

你应该看到这样的东西:

在此输入图像描述

现在是重建的时候了!下面的代码进行"满"重建(使用所有所存储的细节系数矩阵)和一个"部分"重建(使用它们的),然后将其绘制图像:

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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,原始(左上角)和"完整"重建(右上角)看起来难以区分,但"部分"重建(左下角)非常像素化.如果您应用较少的分解步骤(例如1或2),则差异不会那么严重.