Skip to content

Convolution

합성곱(合成-, 영어: convolution 컨벌루션)은 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자이다.

입력신호 및 시스템의 임펄스응답(impulse response)이 주어졌을 경우에 선형시스템의 출력신호를 구하고자 할 때에는 입력함수 및 임펄스응답 함수에 대해 특별한 형태로 주어지는 적분을 구해야 하는데, 이때의 적분형태를 convolution integral 이라고 한다. 선형시스템의 출력신호를 시간영역에서 구하고자 할 때에는 항상 입력신호와 임펄스응답 신호의 convolution integral을 계산하여야 한다. 만약, 시스템의 입력신호 및 임펄스응답 신호의 convolution 형태가 아닌 다른 형태로 출력신호가 주어질 경우, 그 시스템은 선형시스템이 아니라고 볼 수 있다.

선형시스템의 입력신호 및 임펄스응답, 출력신호를 Fourier transform 하여 주파수영역에 서 구해보면 시간영역의 convolution 형태가 주파수영역에서는 곱의 형태로 나타나는데, 이 를 convolution theorem 이라고 한다.

정의

두 개의 함수 \(f\,\)\(g\,\)가 있을 때, 두 함수의 합성곱을 수학 기호로는 \(f * g \,\)와 같이 표시한다.

  • \(f\,\): 입력 함수.
  • \(g\,\): 특성 함수.
  • \((f * g ) = y\,\): 출력 함수.

합성곱 연산은 두 함수 f, g 가운데 하나의 함수를 반전(reverse), 천이(shift)시킨 다음, 다른 하나의 함수와 곱한 결과를 적분하는 것을 의미한다. 이를 수학 기호로 표시하면 다음과 같다.

$$ (f * g )(t) = \int_{-\infty}^\infty f(\tau) g(t - \tau)\, d\tau $$

또한 g 함수 대신에 f 함수를 반전, 천이 시키는 경우 다음과 같이 표시할 수도 있다. 이 두 연산은 형태는 다르지만 같은 결과값을 갖는다.

$$ (f * g )(t) = \int_{-\infty}^\infty f(t - \tau) g(\tau)\, d\tau $$

위의 적분에서 적분 구간은 함수 f와 g가 정의된 범위에 따라서 달라진다.

또한 두 확률 변수 XY가 있을 때 각각의 확률 밀도 함수를 fg라고 하면, X+Y의 확률 밀도 함수는 \(f * g \,\)로 표시할 수 있다.

의미

어떤 함수 \(f\)와 반전(reverse)한 함수 \(f'\)의 합성(곱)은 1이다. 즉, 모든 속성이 동일한 값을 가지게 된다.

$$ f(x)f'(x) = (5) \cdot (\frac{1}{5}) = 1 $$

이 속성을 전이(shift)하면서 적분(면적)을 구하게 되면 특수 성분만 부각되게 된다.

영상처리에서의 정의

공=간 필터링 (Spatial Filtering)이라고도 하며, 간단하게 요약하면 일정한 행렬을 이미지에 문지르다, 훑는다, 마스킹(Masking)하다 등으로 표현.

영상이나 데이터의 특성을 알고자 할 때 사용한다.

Image_processing_-_convolution.jpg

OpenCV에서는 cv2.filter2D 함수를 사용한다.

Convolution Integral

(연속시스템) 컨볼루션 적분 (Convolution Integral, 중첩 적분).

Discrete-Time Convolution

Convolution_of_box_signal_with_itself2.gif

For complex-valued functions f, g defined on the set Z of integers, the discrete convolution of f and g is given by:

$$ (f * g)[n]\ \stackrel{\mathrm{def}}{=}\ \sum_{m=-\infty}^\infty f[m]\, g[n - m] $$

Discrete-Time_Convolution_Array.png

Example

See also

Favorite site

References


  1. Discrete_time_convolution.pdf 

  2. Example_of_2D_Convolution.pdf 

  3. Playing_with_convolutions_in_Python.pdf