본문 바로가기
Domain Knowledge/Computer Vision

[3] Convolution Filter

by hleej 2026. 4. 2.

[영상분석과패턴인식] 수업 요약
created: 2026-04-02
last modified: 2026-04-02

 

 

Convolution에 대해 설명하기 위해 Computer Vision 외적인 이야기를 잠깐 하겠다.

1. Convolution

본래 Convolution(합성곱)은 연속적인 두 신호(주파수)를 시간으로 합성하여 새로운 신호를 만드는 데 쓰이는 연산이다. 

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

특히 Convolution은 두 신호의 유사한 부분을 증폭시키는 특징이 있다.

 

위의 식을 자세히 보면 - 기호가 들어 있는데, 이건 두 신호 $f, g$를 교차하며 마주 보는 방향으로 합성한다는 뜻이다. 따라서 교환법칙이 성립한다. 

$(f*g)(t) = (g*f)(t)$

 

참고로 위의 식은 매개변수가 $t$로, 시간에 대해 나타난 두 신호를 합성한 것이다.

하지만 신호 $f, g$를 주파수로 나타내면  아래와 같이 곱셈만으로도 동일한 의미를 가진 식을 나타낼 수 있다.

$F(w)G(w)$

 

Convolution과 비슷하게 생긴 식으로는 Cross-Correlation이 있는데, 이건 두 신호를 교차하지 않고, 같은 방향으로 두고 합성한다는 뜻이다. 그래서 식을 보면 - 대신에 +가 들어가 있다. 그 때문에 여기는 교환법칙이 성립하지 않는다.

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

 

 

2. Filtering: Image Convolution

주파수가 continuous한 것에 반해, 이미지 신호는 discrete하다. 다시 말해, pixel 단위로 신호가 뚝뚝 끊겨 있다.

그렇기 때문에, 이미지에서 convolution을 할 때는 그냥 두 이미지를 겹쳐 놓고 곱한 다음, 더하는 방식으로 계산할 수 있다.

 

이미지 Convolution에서는 대부분의 경우에 둘 중 하나의 이미지가 3x3, 5x5, ... 정도의 고정된 작은 크기를 가지는데, 이를 Mask, 또는 Kernel이라고 부른다.

Kernel은 다른 이미지에 Convolution을 함으로써, kernel과 유사한 부분을 탐지해 내는 효과를 이용하는데 주로 쓰인다.

게다가 Kernel은 대부분 대칭적으로 생겼으므로, 기존의 Convolution 식이나 Cross-Correlation 식이나 상관없으므로, kernel을 굳이 반전시켜 계산하는 것에 대한 고민은 할 필요가 없다.

 

계산 방법은 간단하다.

원래 이미지의 왼쪽 위에 kernel을 가져다 댄 뒤, pixel별로 모두 곱한 뒤, 가운데 칸에 저장한다. kernel을 한 pixel씩 옮겨가며 반복한다.

따라서 padding을 하지 않으면, 계산 이후에는 크기가 줄어든다.

 

신호는 고주파(변화가 크다)와 저주파(변화가 없거나 작다)로 나뉘기에, filter도 2가지로 구분할 수 있다.

low-pass filter : 고주파를 줄이고 저주파 신호 위주로 통과시키는 filter

high-pass filter : 저주파를 줄이고 고주파 위주로 통과시키는 filter

 

 

귀찮으니 가능하면 예시 이미지는 3x3, 또는 5x5로 한다.

2.1. Blurring Filter (low-pass filter)

원래 이미지를 흐릿하게 만든다. 

신호적으로 해석하면, 신호의 변화가 적어야 하므로 kernel 값이 비슷해야 하고,

직관적으로 해석하면, 주변과의 색을 섞어야 하므로 kernel 값이 비슷하다.

 

kernel이 커질수록 blur효과는 심해진다.

 

2.1.1. Box Filter 

모든 값이 똑같다. 다 더했을 때 값이 증폭되면 안되므로 다 더하면 1이 되도록 되어 있다.

왼쪽부터 Original, blur.

 

2.1.2. Gaussian Filter

가운데(내 위치)와 가까울수록 크게 반영하고, 멀수록 작게 반영하기 위해 Gaussian처럼 생겼다.

 

2.1.3. Bilateral Filter 

양방향 필터라고도 한다. Bilateral Filter를 쓰면 Edge는 살리면서 Noise 부분에 집중하여 blurring이 적용된다.

인접한 픽셀 간에 거리의 차이와 밝기 차이를 동시에 고려하도록 설계되었다.
아래 그림과 같이 기본 Gaussian 모양에, 밝기 차이까지 고려하여 아래와 같이 dynamic하게 나온다.

Kernel 범위 $\Omega$에 대해,

$\displaystyle W_p = \sum_{x_i \in \Omega}e^{-\frac{\|x_i - x\|^2}{2\sigma_s^2}}\,e^{-\frac{|I(x_i) - I(x)|^2}{2\sigma_r^2}}$

 

2.1.4. Rank Filter : Median Filter

이미지 안에서 kernel 크기 범위 중 중앙값(median)으로 원래 값을 채운다.

왼쪽부터 Original, 3x3, 5x5, 15x15 median filter.

 

 

2.2. Edge Detection (high-pass filter)

원래 이미지에서 변화가 큰 부분, 특히 edge를 검출한다.

신호적으로 해석하면, 고주파 신호를 검출하기 위해 kernel의 값의 변화가 크다. (음수와 양수로 대비된다.)

직관적으로 해석하면, 차이가 큰 부분의 신호를 증폭해야 하므로 kernel값의 변화가 크다.

 

kernel의 크기가 커질수록 더 큰 변화를 탐지하고, 작은 변화는 무시한다.

 

2.2.1. Sobel Filter

가로, 세로 edge를 검출하는 기초적인 filter이다.

x축 방향의 filter와 y축 방향의 filter가 따로 있다.

값을 대각선으로 배치하면 대각선 필터도 만들 수 있다.

미분의 정의 $\frac{d}{dx}f(x) = \lim_{h\rightarrow 0} \frac{f(x+h)-f(x)}{h}$를 discrete하게 생각하면, 

Convolution의 결과는 edge의 gradient로 해석할 수도 있다.

$g_x = \frac{d}{dx}f(x, y) = f(x+1, y)-f(x-1, y),\quad g_y = \frac{d}{dy}f(x, y) = f(x, y+1)-f(x, y-1)$

 

gradient를 이용하면 gradient의 크기방향(Phase)까지 구할 수 있다.

$||G||= \sqrt{g_x^2 + g_y^2}$

$\displaystyle \angle G = \tan^{-1}{\frac{g_y}{g_x}}$

 

2.2.2. Laplacian

Sobel Filter로 구한 edge가 1차 미분이었다면, Laplacian은 2차 미분의 개념과 같다.

$\frac{d^2}{dx^2}f(x) = \frac{d}{dx}\left(\lim_{h\rightarrow 0}\frac{f(x+h)-f(x)}{h}\right)= \lim_{h\rightarrow 0}\frac{\frac{f(x+h)-f(x)}{x}-\frac{f(x)-f(x-h)}{h}}{h} = \lim_{h\rightarrow 0}\frac {f(x+h)-2f(x)+f(x-h)}{h^2}$

마찬가지로 위의 2차 미분을 discrete하게 2차원으로 해석하면 아래와 같아진다.

$Laplacian = \frac{\delta^2}{\delta x^2}f(x, y) = f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1) - 4f(x, y)$

 

해당 개념을 kernel로 나타내면 아래와 같다.

대각선을 포함하면 오른쪽, 포함 안하면 왼쪽과 같다.

 

Laplacian은 edge의 경계값을 특히 강조하는데,

이렇게 구한 Laplacian을 원본에 더하면, 이미지가 선명해지는 효과를 얻는다.

$g(x, y) = f(x, y) + \frac{\delta^2}{\delta x^2}f(x, y) $

 

 

 

'Domain Knowledge > Computer Vision' 카테고리의 다른 글

[paper] RandLa-Net (2019/11)  (0) 2026.04.26
[paper] KPConv (Kernel Point Convolution) (2019)  (0) 2026.04.25
[paper] DGCNN (Dynamic Graph CNN) (2018/01)  (0) 2026.04.25
[4] Color Image  (0) 2026.04.02
[2] Image Transformation  (0) 2026.03.17