对图像执行块小波变换

时间:2015-11-04 09:20:50

标签: matlab image-processing wavelet-transform

我想通过执行将输出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

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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);