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를 씌운 결과와 동일하다는 것을 보여주는 그림이고 그렇게 되는 이유는 다음과 같다.
'CS > [Vision]Computer Vision(컴퓨터 비전)' 카테고리의 다른 글
[Vision]Antialiasing-Linear filtering(Average Filter, Gaussian Filter) (0) | 2022.10.23 |
---|---|
[Vision]What is image? /Sampling, Reconstruction, Aliasing (1) | 2022.10.23 |