文档

im2col

将图像块重新排列成列

语法

B = im2col(A,[mn])
B = im2col(A,[m n],'滑动')
B = im2col(A,[m n],'distinct')
B = im2col(A,'indexed',___

描述

例子

B= im2col (一个(mn)

B= im2col (一个(mn)“滑动”)重新排列大小的滑动图像邻域——- - - - - -n转换为无零填充的列,并返回矩阵中连接的列B

B= im2col (一个(mn)“不同的”)重新排列大小的离散图像块——- - - - - -n转换为列,并在矩阵中返回连接的列Bim2col一个,如有需要。有关填充值的详细信息,请参见提示

例如,如果一个由块组成Aij安排,A = [a11 a12;A21 A22],然后B = [a11 (:) a12 (:) a21 (:) a22 (:)]

B= im2col (一个“索引”,___解释一个作为一个索引图像。

例子

全部折叠

创建一个矩阵。

A =重塑(linspace(0,1,16),[4 4])'
一个=4×40 0.0667 0.1333 0.2000 0.2667 0.3333 0.4000 0.4667 0.5333 0.6000 0.6667 0.7333 0.8000 0.8667 0.9333 1.0000

将值按列重新排列。

B = im2col(A,[2])
B =4×90 0.2667 0.5333 0.0667 0.3333 0.6000 0.1333 0.4000 0.6667⋯⋯0.2667 0.5333 0.8000 0.3333 0.6000 0.8667 0.333 0.6667 0.3333 0.6000 0.1333 0.4000 0.6667 0.2000 0.4667 0.7333 0.6000 0.8667 0.4000 0.6667 0.333 0.4667 0.7333 1.0000

计算平均值。

M = mean(B)
M =1×90.1667 0.4333 0.7000 0.2333 0.5000 0.7667 0.3000 0.5667 0.8333⋯⋯

将值重新排列回原来的按行方向。

newA = col2im(M,[1 1],[3 3])
newA =3×30.1667 0.2333 0.3000 0.4333 0.5000 0.5667 0.7000 0.7667 0.8333

输入参数

全部折叠

映像,指定为数值数组或逻辑数组。

块大小,指定为2元素向量。行数是和吗n是块中的列数。

输出参数

全部折叠

图像块,以数字矩阵返回m * n行。列的数量取决于图像块是离散块还是滑动邻域。的每一列B包含的块或邻域一个被重塑为列向量。

  • 对于不同的块处理,B有那么多专栏吗——- - - - - -n一个.例如,如果的大小一个(毫米nn),然后B(毫米/米)* (nn / n)列。

  • 对于滑动邻域处理,B有那么多专栏吗——- - - - - -n社区的一个.例如,如果的大小一个(毫米nn),然后B((mm-m + 1) * (nn-n + 1))列。

提示

  • 对于不同的块处理,im2col一个,因此它的大小是的整数倍——- - - - - -n.填充值为0一个是数据类型uint8uint16,或逻辑.对于其他数据类型,填充的值取决于是否一个解释为索引图像。

    • 填充值为1一个解释为索引图像。

    • 填充值为0一个不解释为索引图像。

  • im2col对列进行排序B这样它们就可以被重塑成一个矩阵重塑

    例如,假设您使用一个函数,例如和(B)的每一列返回一个标量B.您可以直接将结果存储在一个大小为(mm-m + 1)——- (nn-n + 1),使用这些调用。

    B = im2col(A,[m n],“滑动”);C =重塑(sum(B),mm-m+1,nn-n+1);

R2006a之前介绍

这个话题有用吗?