영상처리/미분류

영상처리에서의 커널 (Kernel)

내꿈은자동화 2016. 12. 2. 17:53

프로그래밍을 하다보면 커널 (Kernel) 이란 말을 자주보게 될 것이다.


그리고 이 글을 읽는 사람들은 커널이 뭔지 찾기 위해 녹색창 혹은 구글에 커널이란 말을 검색할 것이고 한글로 쳤다면 '대령' 이 나와 오잉 할 것이고 영어로 치면 '핵'이 나와 이게 뭐지 하는 생각이 들 것이다.


각 분야에서 사용되는 커널이란 말의 의미는 다를 것이지만 영상처리에서 커널은 픽셀의 주위에 연산을 해주는 행렬이다.


언제나 그렇듯이 설명에 그림이 포함되지 않으면 이해를 하기 힘들다.


커널을 그림으로 설명하면 아래와 같다.

<그림 1> 픽셀


'픽셀'을 설명할 때 사용되었던 행렬이다. 이 행렬의 각 성분에 아래와 같은 행렬을 곱해준다고 생각해보자. (가장자리에서 경계를 초과하는 경우 지금 설명할 부분은 아니기 때문에 언급하지 않겠다.)

<그림 2> 커널


커널마다 종류가 다른데 이 커널은 "자기자신의 값은 해당 픽셀의 주변 8개와 자기자신의 1배를 모두 더한 것이다." 라고 정의해 보자. 

그렇다면 3행3열의 경우 0+1+1+1+1+0+1+0+0 = 5 이기 때문에 5가 될 것이다. 
('픽셀' 설명 글에서는 위 8x8 행렬을 이진수라고 했지만 그냥 글쓴이가 귀찮아서 얼렁뚱땅 넘어가는거니 봐주길 바란다.)


이런 방법으로 연산하는 것을 흔히 '커널을 씌운다.' 고 한다.


앞으로 영상처리를 할 때 영상에서 커널이 많이 사용될 것인데, 대표적인 것은 소벨연산 (Sobel Operation) 이고 영상에서 경계를 찾아주는 함수이다.



<참고 문헌>


<그림>

'영상처리 > 미분류' 카테고리의 다른 글

영상처리에서의 픽셀  (0) 2016.11.30