【问题标题】:perform block wavelet transform on an image对图像执行块小波变换
【发布时间】:2016-02-04 17:10:56
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: matlab image-processing wavelet-transform


    【解决方案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);
    

    【讨论】:

    • 有效!谢谢你。但是如何才能只得到每个块中的高频和低频系数呢?
    猜你喜欢
    • 2012-05-23
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2020-02-12
    相关资源
    最近更新 更多