컨볼루션과 상관

5050·2021년 7월 28일
0

컴퓨터비전

목록 보기
9/15

지금까지 봐왔던 영상처리 기술들은 모두 한 점을 보고 다른 점을 계산해는 형태로 진행되었습니다.
이번에 살펴볼 것은 영역 연산이다.
해당 점만 보는 것이 아닌 이웃 픽셀들을 참고하여 계산하는 연산이다.
이렇게 하면 이미지의 공간적인 정보를 유지할 수 있다.


상관은 위의 이미지를 보면 최대값을 가지는 부분에서 윈도우와 모양이 유사한 것을 볼 수 있다.
즉, 윈도우의 모양과 영상이 얼마나 유사한 지 측정할 수 있다.

컨볼루션은 상관과 매우 유사한데 윈도우를 적용 전에 뒤집는 것이 특징이다.

윈도우를 적용할 때 가장자리에서 벗어나는 부분이 생기는데 이 부분은 잘 처리를 해줘야 한다.
그냥 건너뛰고 진행할 것인지 아니면 0이나 가장자리의 화소 그대로 복사를 해 채울 것인지 선택을 해야한다. 그냥 건너뛰고 진행한다면 이미지의 크기가 감소한다는 것을 알아두자
그리고 윈도우의 크기는 편의상 홀수를 자주 사용한다.


2차원에서는 이렇게 적용된다.

또 특징으로는 만약 이미지가 모두 0 이고 한 점만 1인 이미지를 생각해보자


상관의 결과는 윈도우가 뒤집어진 결과로 나오고 컨볼루션은 윈도우가 그대로 나온다.
컨볼루션이 임펄스 함수에 그대로 반응해서 임펄스 반응 함수라고 부르기도 한다고 한다.

위는 컨볼루션과 상관을 수식으로 나타낸 것이고 물체를 검출할 때 뒤집어서 검출하는 것은 필요없기 때문에 상관이 필요하다.

실제로 연산은 상관연산을 쓰지만 영상분야에서는 컨볼루션이라는 명칭을 더 많이 쓴다고 한다.
그래서 딥러닝에서도 컨볼루션 뉴럴넷이란 신경망의 종류가 있다.

여러 윈도우를 활용한 컨볼루션 연산들이 있는데 여기서는 박스 마스크, 가우시안, 마스크, 샤프닝 마스크만 살펴보도록 하자

박스 마스크는 단순하게 아홉 개 화소의 평균을 구해준다. 정규 마스크라고도 하는데 원래 영상과 비슷한 범위를 가진다.

가우시안 마스크는 박스와 달리 화소로부터 거리에 따라 가중치를 부여한다.

박스나 가우시안과 같은 연산을 스무딩이라고 하고 영상 향상 작업에 많이 사용한다.
영상의 잡음(주로 어떤 화소가 주변에 비해 크거나 작은 경우)을 줄여주어 평탄한 영상으로 만들어주기 때문이다.
약간 뿌옇게 되는 효과를 가진다.
카메라 어플들의 피부보정 효과들이 이런 것들을 활용한 게 아닐까 싶다.

박스 마스크 적용


img2col을 활용하여 행렬곱으로 처리했다.

박스 마스크 적용 (Opencv)

가우시안 적용


가우시안 적용 (Opencv)
sigmaX만 설정하면 sigmaY도 같은 값을 가진다고 한다.

샤프닝 적용(Opencv)

위의 연산들과 동일하며 마스크만 아래처럼 만들어준다.

가운데가 꼭 9로 고정은 아니다.

profile
하이

0개의 댓글