본문 바로가기

CS/[Vision]Computer Vision(컴퓨터 비전)

[Vision]Cross-correlation vs Convolution

Cross-correlation

이전에 살펴본 linear filter에서 연산했던 box, filter 가 가중치를 갖고 각 위치 pixel 값에 곱해 구한 값으로 pixel 값을 정하였던 것을 확인했다.

이 때 사용했던 연산 기법이 바로 cross-correlation이다.

다음과 같이 표현 하며 해석을 해보면 h(k,l)이 필터의 가중치 값을 의미하고 f(i+k,j+l)이 기존 이미지의 픽셀 값을 의미한다. 

즉 가중치에 픽셀 값을 곱해 모두 더한 값을 g(i,j)로 저장한다는 의미이다.

 

이러한 연산 과정을 기호로 나타내면 다음과 같다.

그렇다면 convolution은 무엇이냐

 

Convolution

일단 수식을 먼저 살펴보자.

위의 cross-correlation 식과 매우 유사하다. 차이점을 보면 + 기호가 -기호로 바뀐 것을 확인할 수 있다.

 

결국 의미를 살펴보면 기존에 곱하던 mask, filter를 뒤집어서 반전 이동 (수직 반전, 수평 반전 모두 해당) 시킨다음에 cross-correlation 연산을 동일하게 진행하는 것이다.

 

이를 기호로 나타내면 다음과 같다.

 

convolution은 곱셈과 비슷한 operation인데 그 특징은 다음과 같다.

associative 성질을 이용한 경우

: 아래의 두 경우는 결합법칙에 의해 같다. 

즉, filter를 각각 하나씩 차례로 씌운 것과, filter 3개 짜리로 만든 filter 1개를 씌운 것과 동일하다는 의미이다.

 

Gaussian & convolution

image에서 high-frequency 요소들을 low-pass filter를 이용해서 제거하는 방법으로 gaussian, convolution 두가지 방법으로 모두 가능하다.

 

그 이유는 convolution 연산을 스스로에게 적용하면, 이는 gaussian의 결과와 동일하다는 특징이 있다.

위 그림은 해당 convolution을 했더니 gaussian filter를 씌운 결과와 동일하다는 것을 보여주는 그림이고 그렇게 되는 이유는 다음과 같다.