합성곱
- 업데이트 날짜:2025-07-30
- 5분 (읽기 시간)
입력 시퀀스 X 및 Y의 합성곱을 계산합니다. 데이터를 X 및 Y 입력에 연결하여 사용할 다형성 인스턴스를 결정하거나 인스턴스를 수동으로 선택합니다.

1D 합성곱
x(t)와 y(t) 신호의 선형 합성곱을 다음과 같이 정의합니다:

이 때 기호 *는 선형 합성곱을 나타냅니다.
알고리즘이 다이렉트일 때, 이 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.
알고리즘이 주파수 도메인일 때, 이 VI는 다음 단계를 순서대로 완료하여 선형 합성곱을 계산합니다:
- 우선 이 VI는 X와 Y의 끝을 0으로 채워 다음 식과 같이 M + N의 길이가 -1이 되도록 만듭니다.

- 두번째로 이 VI는 다음 방정식에 따라 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 합성곱
알고리즘이 다이렉트일 때, 이 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.
알고리즘이 주파수 도메인일 때, 이 VI는 다음 단계를 순서대로 완료하여 2차원 합성곱을 계산합니다:
- 우선 이 VI는 다음 식과 같이 X와 Y의 끝을 0으로 채워 크기를 (M1 + M2 – 1)-x-(N1 + N2 – 2)로 만듭니다.

- 두번째로 이 VI는 다음 방정식에 따라 X'와 Y'의 푸리에 변환을 계산합니다.
- 세번째로 이 함수는 X'(f)에 Y'(f)를 곱하고 해당 곱의 역 푸리에 변환을 계산합니다. 결과는 다음 식과 같이 X와 Y의 2차원 합성곱입니다.
출력 크기는 다음 그림에서 보는것처럼 출력 행렬 X * Y의 크기를 결정합니다.

-
full
The output matrix X * Y is (M1+M2–1)-by-(N1+N2–1).
-
size X
이것은 이미지 처리에 유용합니다. X가 필터링하려는 이미지일 경우, Y는 합성곱 커널이라고 불리는 작은 행렬입니다. X * Y는 X 이미지와 같은 크기를 가지는 필터링된 이미지 입니다. 출력 M1과 N1의 합성곱 행렬은 출력 크기가 full일 때 출력 행렬의 중앙 부분입니다.
-
compact
출력 크기가 full 또는 size X인 경우 X * Y의 가장자리 요소를 계산하려면 제로 패딩이 필요합니다. 출력 크기가 compact인 경우 LabVIEW는 이러한 에지 원소를 제거합니다. 출력 (M1–M2+1)-by-(N1–N2+1) 행렬은 출력 크기가 size X일 때 출력 행렬의 중심 부분입니다.
예제
LabVIEW 포함되는 다음 예제 파일을 참조하십시오.
- labview\examples\Signal Processing\Signal Operation\Edge Detection with 2D Convolution.vi