ドキュメンテーション

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

im2col

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

構文

B = im2col(A,[m n],block_type)
B = im2col(A,'indexed',...)

説明

B = im2col(A,[m n],block_type) はイメージ ブロックを列に再配列します。block_type は文字ベクトルで、次のいずれかの値をもつことができます。既定値は、中かっこ ({}) で囲まれています。

説明

'distinct'

イメージ A 内の "明確な" mn 列のブロックを B の列に再配列します。必要に応じて、im2colA をゼロ パディングし、サイズを mn 列の整数倍にします。A = [A11 A12; A21 A22] の場合、各 Aijmn 列で、B = [A11(:) A12(:) A21(:) A22(:)]

{'sliding'}

A の各 "スライディング" mn 列のブロックをゼロ パディングせずに、B の列に変換します。Bm*n 行で、A の近傍 mn 列と同数の列があります。A のサイズが [mm nn] の場合、B のサイズは (m*n) 行 ((mm-m+1)*(nn-n+1)) 列。

スライディング ブロックの場合、B の各列には NHOOD(:) として再形成された A の近傍が含まれ、NHOODA の近傍 mn 列を含んだ行列です。im2col は、B の列を、通常の方法で行列の型に再形成できるように配置して並べたものです。たとえば、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);

B = im2col(A,'indexed',...)A をインデックス付きイメージとして処理し、A のクラスが uint8 または uint16 の場合には 0 をパディングし、A のクラスが double の場合には 1 をパディングします。

クラス サポート

入力イメージ A は数値または論理値です。出力行列 B は入力イメージと同じクラスです。

すべて折りたたむ

行列を作成します。

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

         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 = 

         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 = 

    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 = 

    0.1667    0.2333    0.3000
    0.4333    0.5000    0.5667
    0.7000    0.7667    0.8333

R2006a より前に導入

この情報は役に立ちましたか?