对图像执行块小波变换
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);
我想通过执行将输出 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);