ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

im2col

イメージ ブロックを列行列に再配置

構文

B = im2col(A,[m n],'distinct')
B = im2col(A,[m n],'sliding')
B = im2col(A,[m n])
B = im2col(A,'indexed',___)

説明

B = im2col(A,[m n],'distinct')mn 列の離散イメージ ブロックを列に再配置し、連結した列を行列 B に返します。関数 im2col は必要に応じて、イメージ A をパディングします。パディング値の詳細は、ヒントを参照してください。

行列 B の列の順序は、イメージ A を列方向に走査することによって決定されます。たとえば、A が個別ブロック Aij (A = [A11 A12; A21 A22] の配置) で構成される場合、B = [A11(:) A21(:) A12(:) A22(:)] となります。

B = im2col(A,[m n],'sliding') または

B = im2col(A,[m n])mn 列のスライディング イメージ近傍をゼロ パディングしない列に再配置します。行列 B の連結した列を返します。

B = im2col(A,'indexed',___)A をインデックス付きイメージとして解釈します。

すべて折りたたむ

行列を作成します。

A = reshape(linspace(0,1,16),[4 4])'
A = 4×4

         0    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 2])
B = 4×9

         0    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.4000    0.6667    0.9333
    0.0667    0.3333    0.6000    0.1333    0.4000    0.6667    0.2000    0.4667    0.7333
    0.3333    0.6000    0.8667    0.4000    0.6667    0.9333    0.4667    0.7333    1.0000

平均を計算します。

M = mean(B)
M = 1×9

    0.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×3

    0.1667    0.2333    0.3000
    0.4333    0.5000    0.5667
    0.7000    0.7667    0.8333

入力引数

すべて折りたたむ

イメージ。2 次元グレースケール イメージ、2 次元バイナリ イメージまたは 2 次元インデックス付きイメージとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

ブロックのサイズ。2 要素ベクトルとして指定します。ここで、m はブロックの行数で、n は列数です。

出力引数

すべて折りたたむ

イメージ ブロック。m*n 行の数値行列または logical 行列として返されます。列数はイメージ ブロックが離散ブロックかスライディング近傍かどうかで決まります。B の各列には、列ベクトルとして再構築された A のブロックまたは近傍が含まれます。

  • 個別ブロック処理では、B には、Amn 列のブロックと同数の列があります。たとえば、A のサイズが [mm nn] である場合、B には (mm/m)*(nn/n) の列があります。

  • スライディング近傍処理では、B には、Amn 列の近傍にあるのと同数の列があります。たとえば、A のサイズが [mm nn] である場合、B には ((mm-m+1)*(nn-n+1)) の列があります。

ヒント

  • 個別ブロック処理の場合、必要に応じて、im2colA をゼロ パディングし、サイズを mn 列の整数倍にします。パディング値は 0 です (A がデータ型 uint8uint16 または logical の場合)。他のデータ型では、パディング値は A がインデックス付きイメージとして解釈されるかどうかで決まります。

    • パディング値は 1 です (A がインデックス付きイメージとして解釈される場合)。

    • パディング値は 0 です (A がインデックス付きイメージとして解釈されない場合)。

  • im2colB の列を、reshape に従って行列の形に再構成できるように順序を付けます。

    たとえば、sum(B) など、B の各列にスカラーを返す関数を使用するとします。次の呼び出しを使用して、結果をサイズ (mm-m+1) 行 (nn-n+1) 列の行列に直接保存できます。

    B = im2col(A,[m n],'sliding');
    C = reshape(sum(B),mm-m+1,nn-n+1);

R2006a より前に導入