본문 바로가기

[ 프로그래밍 ]/강좌

OpenCV 강좌 07. 마커 추출 (2) - 마커 검증

앞서 구한 '잡영이 제거된 영상'으로부터 이야기는 진행된다.


이번 장은 앞서 검출된 마커 후보영역들 중에서,
실제 마커영역이 가지는 특징을 가지는 것을 최종적으로 남기는 검증단계를 구현한다.

검증의 방법은 간단하다.
레이블의 내부에 홀이 있는지 없는지 파악한 뒤,
그 홀의 위치와 크기를 외부 레이블의 그것과 비교해 보고,
현재 레이블이 마커인지 아닌지 아래와 같이 구분해 내는 것이다.



1. 버튼추가
- 별달리 새로울 것도 없는.

- 변수 이름을 m_bVerify로 만들었다.

2. 검증 알고리즘의 구현
- 만들어둔 레이블링 알고리즘 사용의 적극 권장!

이전에 작성하였던 프로그램에서, 각 레이블에 빨간색을 칠하는 부분에 검증 알고리즘을 넣으면 되겠다.
보다시피 몇 줄 안되면서도 동족방뇨스럽기 그지없는 코드이지만, 결과는 꽤나 만족할 만 하다. (자화자찬-_-)

홀을 찾는다는 것은 반전된 이미지의 개체(레이블)를 찾는 것과 같은 의미이다. (쉽게가자)
각 레이블들의 가로세로 정보를 토대로 각 레이블을 담을 새로운 이미지(sub_gray)를 생성한 뒤,
여기에 각각의 레이블 이미지를 반전(CV_THRESH_BINARY_INV)하여 담는다.

반전된 이미지를 레이블링 한 뒤,
그것의 크기가 테두리 레이블 크기의 40% 이상, 80% 이하인 것들만을 남기고 제거한다.
적절한 수치는 마커의 크기에 따라 테스트를 계속 하면서 바꿔줄 수 있을 것 같다.

이후,
반전된 이미지의 레이블(홀)이 테두리 레이블의 가장자리에 있다는 것은,
이 테두리 레이블이 닫힌 형태가 아닌라는 것, 즉. 홀이 존재하는 것이 아니라는 말이므로 과감하게 제낀다.

홀은 녹색으로 칠해준다.

3. 테스트
- 화면이 옆으로 너무 기니까 동영상에 추출결과가 잘 안보여서 원본에 추출결과를 출력하였다.


이후 작업 예고 >
먼저, 추출된 마커의 외부/내부 사각형의 네 꼭지점을 구한다.
이때, 마커 내부 사각형의 꼭지점 정보는,
사각형 내부 영상을 정규화하고 어떤 문자를 담고 있는지 파악하는데 사용 할 것이고,
외부 사각형의 꼭지점 정보는,
뮤직비디오의 영상을 마커의 모양과 동일하게 와핑하여 출력시키는데 사용 할 것이다.

와핑 관련 예습 자료 : cvWarpPerspective() 사용 방법