《PCANet: A Simple Deep Learning Baseline for Image Classification》

对照论文中的示例图和文章给出的代码来梳理
这里写图片描述
从图中看到,整个网络有三个关键步骤,Patch-mean removal 、 PCA filter convolution与Binary quantization &mapping ,分别是局部均值化、PCA卷积、二值化与直方图映射

im2col_mean_removal.m
输入
图片矩阵 InImg(m*n)
采样矩阵大小 patchsize12= [k1,k2]
图片通道数 chl(默认为1)
在输入的矩阵InImg上,按行滑动采样矩阵,得到patch,每个patch按列展开,减去均值成为输出矩阵im的列,所以输出矩阵im为 k1k2 行, (mk1)(nk2)

function im = im2col_mean_removal(varargin)
% 

NumInput = length(varargin);
InImg = varargin{
   1};
patchsize12 = varargin{
   2}; 

z = size(InImg,3);
im = cell(z,1);
if NumInput == 2
    for i = 1:z
        iim = im2colstep(InImg(:,:,i),patchsize12); %窗口采样,然后按列展开为列向量
        im{i} = bsxfun(@minus, iim, mean(iim))';    %去均值
%         iim = bsxfun(@minus, iim, mean(iim)); 
%         im{i} = bsxfun(@minus, iim, mean(iim,2))';
    end
else
    for i = 1:z
        iim = im2colstep(InImg(:,:,i),patchsize12,varargin{
   3});
        im{i} = bsxfun(@minus, iim, mean(iim))'; 
%         iim = bsxfun(@minus, iim, mean(iim)); 
%         im{i} = bsxfun(@minus, iim, mean(iim,2))';
    end 
end
im = [im{:}]';

PCA_FilterBank.m
输入为InImg (cell structure)
PatchSize 采样窗口大小
NumFilter 提取主成分个数
对于每一张图片,调用前面的im2col_mean_removal.m函数,得到
X=[X1,

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值