对图像执行块小波变换

perform block wavelet transform on an image

我想通过执行将输出 256 个小波系数的块 (16x16) 小波变换来定位将深度与图像相关联的空间频率测量。

我不确定如何对块而不是整个图像执行小波变换。我试过了:

f = @(x) wavedec2(x.data,2,'db1');
J = blockproc(gI,[N, N],f); 

但它不能正常工作。

所以我尝试对整个图像进行小波变换:

I = imread('input.jpg');
I = im2double(I);
gI = rgb2gray(I);
[C, S]= wavedec2(gI,2,'db1'); % Perform wavelet decomposition 
D = detcoef2('h',C,S,1); %Extract details coefficients

但是,我不确定如何只计算每个块中的高频和低频系数。

如有任何帮助,我们将不胜感激。

对图像执行块小波变换的一种方法:

N = 32; % block size 16x16
A = mat2cell(gI, repmat(N,[1 size(gI,1)/N]),...
repmat(N,[1 size(gI,2)/N]));
[LL, LH, HL, HH] = cellfun(@(X) dwt2(X,'haar'),A, ...
'UniformOutput',false);
 LL_final = cell2mat(LL);
 LH_final = cell2mat(LH);
 HL_final = cell2mat(HL);
 HH_final = cell2mat(HH);