[OpenCV] 자동차 번호판 인식 분석 6 OpenCV

세선화 할 차례다.
세선화가 무엇이냐.
두꺼운놈을 얍실한놈으로 바꿔주는거다.


저 튼실한 프로스트 아트로나치가 보이는가.
튼실한 녀석이다. 저런 두꺼운놈을


이 스켈레톤처럼 얍실하게 만들어주는 것이다.
(아 물론 스켈레톤같은 늑대만도 못한 호구는 한방에 가루로 만들어 주었으니
저 스샷속 가냘픈 마법사를 걱정할 필요는 없다.)


좀 더 알기쉽게 보여준다면 요로코롬.. 되는것이다.

자 그럼 세선화는 어떻게 하는 것일까?
잘 깎으면 된다. 이쁘게 잘 깎으면 얍실하게..(쿨럭)

이미지를 좌상단에서 우하단 으로 긁는다고 생각하자.
그럼 흰색과 검은색 픽셀이 있는데 우리는 검은색을 깎는거다.
깎아나가려면 주변에 색이 무슨색인가 판단해야한다.

좌상단에서 우하단으로 움직인다면, 움직이는 방향을 고려했을때
현재 위치의 픽셀이 검은색일때 좌측, 상측, 좌상측, (우상측까지도 가능) 픽셀값을 비교해보고 그들의 색을
흰색으로 바꾸어주면 된다. 좌측, 상측, 좌상측, 우상측까지 비교하였을때 전부 다 흰색으로 할
필요는 없다. 자신의 필요에 맞게, 원하는 부분 까지 흰색으로 바꿔주면 된다
.
쭉 전체적으로 반복하다보면 어찌 되었던 얍실해진다.
좀 더 깔끔하고 골격에 맞는 세선화를 구현하려면 위에서 한번하고 버퍼에 넣어놓고 아래에서 한번하고
(아래에서 한다면 좌하,하측,우하측,우측 뭐 이런식)버퍼에 넣어놓고 중간값으로 픽셀을 선택하면 된다.

"이거 너무 대충 설명하는게 아닌가요." 한다면 뭐 그럴수도 있다.
솔직히 Zhang-Suen 세선화 방법 이렇게 적고

1. 화소 p의 연결 영역의 수는 1이어야 한다.
2. 화소 p가 적어도 2개 이상의 이웃 화소와 6개 이하의 화소를 이웃하여야 한다.
3. 화소 p가 적어도 i(i, j+1).. 어쩌고 저쩌고

머리아프다.(사실 기억이 가물.. 독학한거라..) 이런건 전지적 천재시점에서 해도 충분하다.
자세한것을 알고싶다면(뭐 얼마나 있겠냐마는) 나중에 자세하게 포스팅하도록 하자.

이렇게 세선화를 다 했다면, 숫자부분의 인식은 거의 끝난 것이다.

다음엔 문자부분 차례인가?

덧글

댓글 입력 영역