본문 바로가기
IT/OpenCV

커널 Kernel in Image processing

by Jang HyunWoong 2014. 12. 19.

Kernel (image processing)

From Wikipedia, the free encyclopedia

In image processing, a kernelconvolution matrix, or mask is a small matrix useful for blurring, sharpening, embossing, edge-detection, and more. This is accomplished by means of convolution between a kernel and an image.

-위키백과 

 

컨볼루션 매트릭스 또는 마스크라고 한다. 

blurring, sharpening, embossing, edge-detection, and more ... 등 여러 분야에 사용이 된다. 

Original
\begin{bmatrix}
0 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 0
\end{bmatrix}
Edge-Detect
\begin{bmatrix}
1 &  0 & -1 \\
0 & 0 & 0 \\
-1 &  0 & 1
\end{bmatrix}

\begin{bmatrix}
0 &  1 & 0 \\
1 & -4 & 1 \\
0 &  1 & 0
\end{bmatrix}

\begin{bmatrix}
-1 &  -1 & -1 \\
-1 & 8 & -1 \\
-1 &  -1 & -1
\end{bmatrix}
Sharpen
\begin{bmatrix}
0 & -1 & 0 \\
-1 & 5 & -1 \\
0 & -1 & 0
\end{bmatrix}
Blur*
\begin{bmatrix}
1 &  2 & 1 \\
2 & 4 & 2 \\
1 &  2 & 1
\end{bmatrix}

\begin{bmatrix}
1 &  1 & 1 \\
1 & 1 & 1 \\
1 &  1 & 1
\end{bmatrix}

   (기법)                           (마스크)                  (결과 이미지)

 

첫 번째 보이는 것이 Original 이미지 이다. 마스크를 3x3에서 (2, 2) 만 1로 놓고 이미지에 컨볼루션 하면 그냥 오리지날 이미지가 나온다는 뜻이다.

실제 매트릭스를 보면서 계산을 하면 쉽게 이해가 될 것이다. (작은 연산은 손으로도 가능하다.)

 

이러한 개념을 이해 하려면 공간 필터링(Spatial Filtering)에 대해서 알아야 하는데 어렵지 않다. 

공간 필터링 중 선형 공간 필터링이 있다. (푸리에 변환 참조)

 

이웃의 각 화소를 대응하는 계수로 곱하고 그 결과들을 더해서 각 점(x, y)에서의 응답을 얻는 것을 기본으로 한다. 

여기서 화소는 예를 들어 기본 이미지의 벡터값이라 하고 계수라는 것은 마스크라고 할 수 있다. 

컨볼루션 필터 라고도 한다. 

이러한 것은 필터 마스크를 영상위에서 한점씩 이동시키면서 계산을 하는 것으로 여러가지 이미지를 표현 할 수 있다. 



 

그렇기 때문에 마스크의 특성에 따라 이미지를 선명하게, 흐리게, 엣지검출을 할 수 있다. 

왜냐하면 이미지의 벡터 값을 마스크로 계산을 해서 적용시키기 때문에

만약 경계가 

... 0 0 0 1 1 1 ... 이러한 벡터 이미지가 있다면 마스크가 지나가면

... 0 0.2 0.5 0.5 0.7 1 ... 이렇게 변할 수 있다. 

 

그렇게 되면 흰색, 검은색이 흰색, 회색, 검은색 이렇게 변하면서 blur 효과를 볼 수 있다. 


반응형

'IT > OpenCV' 카테고리의 다른 글

cvLUT를 사용한 반전영상  (0) 2014.12.19
영상을 행렬로, 행렬을 영상으로...  (0) 2014.12.19
PDB 파일을 찾거나 열 수 없습니다  (0) 2014.12.19
영상 카메라 띄우기  (0) 2014.12.19
lifecam hd-3000 test on vs2010  (1) 2014.12.19