Matlab之 im2col 函数学习

概述

函数原型:B = im2col(A,[m n],block_type)
函数作用:重排图像块为矩阵列
参数说明:
A:要被重排的矩阵;
[m n]:指定分割的小子块矩阵的尺寸;
block_type:子块矩阵分割的方式,可以取值为’distinct’或者’sliding’。
B:将A重排后的矩阵。

1.block_type=distinct

将A沿列的方向分解为互不重叠的子矩阵,并将分解以后的子矩阵沿列的方向转换成B的列,若不足m×n,以0补足。

>> A=[1 2 3;4 5 6;7 8 9]

A =

     1     2     3
     4     5     6
     7     8     9

>> B = im2col(A, [2 2], 'distinct')

B =

     1     7     3     9
     4     0     6     0
     2     8     0     0
     5     0     0     0

可以看出,由于A是3×3的,并不是子块2×2的整数倍,根据概述,我们需要在A中填充0,使之恰好能被2×2的子块整除,所以填充后的A矩阵为:

 1     2     3     0
 4     5     6     0
 7     8     9     0
 0     0     0     0

将矩阵A分割成的四个子矩阵是:
在这里插入图片描述
按照子矩阵的列进行排列得到矩阵B。

2.block_type=sliding

当block_type为sliding时,以子块滑动的方式将A分解成m×n的子矩阵,并将分解以后的子矩阵沿列的方向转换成B的列。子块滑动的方式每次移动一行或者一列。

A =

     1     2     3
     4     5     6
     7     8     9

>> B = im2col(A, [2 2], 'sliding')

B =

     1     4     2     5
     4     7     5     8
     2     5     3     6
     5     8     6     9

此时的子块之间是有重叠的,子块是先在列上进行滑动,然后才在行方向进行滑动。
将矩阵A分割成的四个子矩阵是:
在这里插入图片描述
按照子矩阵的列进行排列得到矩阵B。

对于sliding类型,如果设A为m×n的,block 块为[p q],则最后得到的B矩阵的行数为p×q,列数为(m−p+1)×(n−q+1)。

参考博客:
https://blog.csdn.net/Chaolei3/article/details/79420059
https://blog.csdn.net/theonegis/article/details/50958604

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值