SWT(Stroke Width Transform)
에 대해 알아보자
SWT(Stroke Width Transform) 영상처리에서 특정 영역을 찾아 내기 위한 방법으로 많이 쓰인다.
특히, 영상에서 문자를 찾아낼 때 많이 사용된다.
SWT를 한마디로 한다면,
글자의 획(stroke)의 width가 같다고 생각하고 그 width를 그 width의 길이만큼의 픽셀값들로 채우는 것을 말한다.
SWT를 하는 전제는 아래 그림과 같이
"글자에서 한 stroke 즉, 한 획의 width가 항상 같거나 거의 유사할 것이다" 이다
SWT의 첫번째 과정은 영상의 boundary를 구하는 것이다.
(밑의 영상은 canny edge를 사용한 결과이다)
위의 영상을 보면 글자부분에 대해서 edge 즉 boundary가 잡혔다.
이 상황에서 각 edge의 픽셀에서 gradient 방향으로 ray를 쏜다.
[참고]--------------------------------------------------------------------------
그전에, gradient의 방향이라는 것은
위 식과 같이 gradient(그레디언트)는 각 변수로의 일차 편미분 값으로 구성되는 벡터다.
이 벡터가 의미하는 것은 f의 값이 가장 가파르게 증가하는 방향을 나타낸다.
즉, 쉽게 말해 값이 가장 크게 변하는 방향이라고 할 수 있겠다.
--------------------------------------------------------------------------------
우리는 edge영상에서의 gradient 방향이니까 각 edge 픽셀에서 나가는 gradient 방향들이 있을 것이다.
(a) : SWT된 image
(b) : edge pixel p 의 gradient 방향
(c) : edge pixel p 의 gradient 방향 과 edge pixel q 의 gradient 방향
이 일치 할 때 ray의 쏘고 그 안에 minimum value를 넣는다.
SWT의 핵심은
에지화소 p에서 그라디언트 방향으로 선을 그어 만나는 에지화소 q를 찾고, 두 에지화 소가 서로 마주 보는 그라디언트를 갖는 경우 그 선 (p, q)을 획을 가로지르는 선으로 보고 수집한다.
수집한 선이 지나간 자리에 선의 길이를 채워 넣음으로써 SW(stroke width) 이미지를 얻는다
위에서 p와 q가 만난다는 말은 두 gradient의 방향이 각각 서로 반대로를 가리키는 경우를 말하는데
dp : 픽셀p의 gradient 방향
dq : 픽셀q의 gradient 방향
위의 식만큼의 차이안에 들어온다면 두 방향이 만난다고 본다.
자 위의 그림을 보자
p에서 q까지 가는데 거리가 6픽셀만큼이다. 그렇다면 그 안에 해당된느 6개의 픽셀에 6을 채운다.
하지만, 위의 방식대로 라면 문제가 생길 수 있다.
왼쪽 그림에서의 빨간색 픽셀은 최소값을 채우면 5칸이니까 5가 채워지는데
오른쪽 그림의 빨간 박스에 속하는 픽셀들은 글자 전체의 stroke width의 최소값으로 채워지지 않는다.
이를 해결하기 위해,
위 과정을 first pass라 할때, first pass 후 남아 있는 ray 들을 다시 value를 채우는데 한 ray상의 모든 픽셀 value의 median SWT value를 계산하여 그 값을 넘어가는 값들은 median value로 채운다
그러니까, 빨간색 박스 안의 픽셀들의 SWT를 계산했을때 만약 그 행과 열의 픽셀들의 median value값보다 크면 median 값으로 채운다는 것이다.
SWT 결과
사실, 이 과정에서 '문자만' 뽑아내려면 이후 추가적인 작업들이 필요하지만
여기서는 SWT에 대해서만 이야기하기로 한다.
'Computer Vision' 카테고리의 다른 글
컴퓨터 비전(Computer Vision)과 컴퓨터 비전 시스템 (0) | 2015.05.05 |
---|---|
빛의 성질 (1) | 2015.02.17 |
컬러 모델 Color Model RGB CMY HSV (0) | 2015.02.09 |
카메라모듈 제작 공정 (0) | 2015.02.07 |
카메라 모듈 활용분야 (0) | 2015.02.07 |