コンボリューション
- 更新日2026-07-27
- 7分で読める
インストールパッケージ: Full or Professional Edition
入力シーケンスXおよびYのコンボリューションを計算します。XおよびY入力にデータを配線して、使用する多態性インスタンスを決定するか、インスタンスを手動で選択します。

1Dコンボリューション
信号x(t)およびy(t)の線形コンボリューションは以下のように定義されます。
ここで、記号*は線形コンボリューションを意味します。
アルゴリズムがdirectの場合、VIは次の公式を使用して線形コンボリューションを個々に行い、X * Yの要素を取得します。
ここで、i = 0, 1, 2, … , M+N-2
また、h は X * Y です。
NはXの要素数、MはYの要素数、XとYの範囲外の指標付けされた要素は、以下の関係が示すように0です。xj = 0, j < 0 または j ≥ N
および
yj = 0, j < 0、または j ≥ M。
アルゴリズムがfrequency domainの場合、このVIは次の手順を順に実行して線形コンボリューションを計算します。
- まず、以下の式で示すように、XとYの長さがM + N – 1となるように末尾を0でパッドします。
- 次に、以下の式に従って、X'とY'のフーリエ変換を実行します。
- さらに、X'(f)にY'(f)を乗算して、積の逆フーリエ変換を計算します。その結果が以下の式で示すようにXとYの線形コンボリューションです。
したがって、このVIは線形コンボリューションでなく巡回コンボリューションを計算します。ただし、x(t) * y(t)N ⇔ X(f)Y(f)はフーリエ変換対であるため (x(t) * y(t)Nはx(t)とy(t)の巡回コンボリューション)、巡回型のコンボリューションを作成できます。巡回コンボリューションの計算には、以下の図のようなブロックダイアグラムを使用できます。

2Dコンボリューション
アルゴリズムがdirectの場合、VIは次の公式を使用して入力行列XとYの2次元コンボリューションを計算します。
ここで、i = 0, 1, 2, … , M1+M2–2 および j = 0, 1, 2, … , N1+N2–2
また、h は X * Y です。
M1は行列Xの行数、N1は行列Xの列数、M2は行列Yの行数、N2は行列Yの列数、以下の関係に示すように、XとYの範囲外の指標付けされた要素は0です。x(m,n)、m < 0 または m ≥ M1 または n < 0 または n ≥ N1
および
y(m,n) 、m < 0 または m ≥ M2 または n < 0 または n ≥ N2。
アルゴリズムがfrequency domainの場合、VIは次の手順を順に実行して2次元コンボリューションを計算します。
- 最初に、以下の式に示すように、このVIはサイズが (M1 + M2 – 1) x (N1 + N2 – 2)となるように、XとYの末尾をゼロでパッドします。
- 次に、以下の式に従って、X'とY'のフーリエ変換を実行します。
- さらに、X'(f)にY'(f)を乗算して、積の逆フーリエ変換を計算します。その結果は、以下の式で示すようにXとYの2次元コンボリューションとなります。
出力サイズは、以下の図に示すように出力行列X * Yのサイズを指定します。

-
full
出力行列X * Yは、 (M1+M2–1)-x-(N1+N2–1) です。
-
size X
画像処理を行う上で役立ちます。X がフィルタ処理する画像の場合、Y はコンボリューションカーネルと呼ばれる小さい行列です。X * Y は画像Xと同じサイズのフィルタ処理された画像です。出力M1 x N1行列は、出力サイズがfullの場合の出力行列の中心部分です。
-
compact
出力サイズがfullまたはsize Xの場合、エッジ要素X * Yを計算するには、ゼロパディングが必要です。LabVIEWは、出力サイズがcompactの場合、これらのエッジ要素を削除します。出力(M1–M2+1) x (N1–N2+1)行列は、出力サイズがsize Xの場合に出力行列の中心部分になります。
サンプルプログラム
LabVIEWに含まれている以下のサンプルファイルを参照してください。
- labview\examples\Signal Processing\Signal Operation\Edge Detection with 2D Convolution.vi