【问题标题】:How to access each block of the image to perform wavelet transform如何访问图像的每个块进行小波变换
【发布时间】:2014-12-07 09:57:07
【问题描述】:

我有一张 MRI 图像 .

我想将此图像的 256x256 大小划分为 5×5 的重叠块。然后将进一步处理这些块中的每一个以进行小波变换,然后进行 GLCM 纹理特征提取。像这样的东西 .

我已经编写了用于转换和特征提取的函数,但无法访问图像的每个块以通过该函数。 我知道 MATLAB 具有 blockproc 功能,可以将图像划分为块并为某些功能处理每个块。我是这样写的

     B=blockproc(LX,[16 16],WaveletT);

WaveleT 是这样的函数:

    function FV= WaveletT 
    level = 1;      
    [c,s] = wavedec2(' ',level,'haar');
    [chd1,cvd1,cdd1] = detcoef2('all',c,s,level);
    sizechd1=size(chd1);
    sizecvd1=size(cvd1);
    sizecdd1=size(cdd1);
    A=appcoef2(c,s,'haar');
    sizeA=size(A);
    mA=mean2(A);
    sdA=std2(A);
    sdD=std2(cdd1);
    sdH=std2(chd1);
    sdV=std2(cvd1);
    FV=[mA,sdA,sdD,sdH,sdV];

    end

我应该将什么作为图像传递给“wavedec”函数,“B”将存储什么?我知道我在“blockproc”中做错了,所以请提供解决方案来帮助。

【问题讨论】:

  • 考虑将您的编辑作为实际答案并将其标记为已接受。我花了几分钟浏览您的问题,才意识到您实际上解决了它。为防止其他人浪费时间,请添加答案并将其标记为已接受。
  • 对此我深表歉意。

标签: matlab image-processing image-segmentation


【解决方案1】:

我想我是自己找到的。因此,如果其他人想知道,请在此处添加。

    B=im2col(X,[5 5],'sliding'); %this would create 25*63504 matrix
    [m, n]=size(B);
    C=reshape(B(:,i),[5 5]); %5-by-5 block of above image where i=1:63504

这个 C 将在 'wavedec' 函数中传递。(参见上面的 WaveletT 函数)。 因此,不需要使用“blockproc”,而是使用“im2col”。

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 2012-05-23
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多