관리 메뉴

마틴블로그닷넷

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

[ 프로그래밍 ]/강좌

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

K. Martin 2009.07.07 00:05
앞서 구한 '잡영이 제거된 영상'으로부터 이야기는 진행된다.


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

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



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

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

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

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

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

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

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

홀은 녹색으로 칠해준다.

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


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

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


5 Comments
  • guest 2009.08.17 01:53 신고 보실지 모르겠지만요; 이거 따라하는데 6.0 버전으로 하고 있거든요
    m_binary_btn = !m_binary_btn;
    머 이런식으로 하는데 이게 에러가 나네요
    error C2582: 'CButton' : 'operator =' function is unavailable
    버튼 만들어주고 변수 선언 해준건데 뭐가 문제일까요;; 가르쳐주심 감사하겠습니다 ㅠ-ㅠ
  • Favicon of http://martinblog.net K. Martin 2009.08.18 23:10 신고 버튼이 눌림버튼이 아니라 체크버튼입니다.
    멤버변수도 CButton 형이 아니라, bool 형으로 선언을 하셔야 됩니다.
    도움이 되었으면 좋겠습니다.
  • 공부자! 2010.05.27 00:12 신고 질문이있는데요..

    if(inner.m_recBlobs[j].x<nThick || inner.m_recBlobs[j].y<nThick || (sub_gray->width -(inner.m_recBlobs[j].x + inner.m_recBlobs[j].width))<nThick
    ||(sub_gray->height - (inner.m_recBlobs[j].y + inner.m_recBlobs[j].height))<nThick)


    여기 라벨링하는부분이 이해가 안가서요, 혹시 괜찮으시다면 설명좀 부탁드릴게요
    라벨링쪽이 굉장히 어렵네요..봐도봐도 이해가 안가는부분이 투성이라..ㅜㅜ
  • Favicon of http://martinblog.net K. Martin 2010.05.27 18:20 신고 외부 사각형과 내부 사각형의 두께가 위에 설정해 둔 20px보다 적은 경우
    추출하고자 하는 레이블의 후보에서 제외시키는 루틴입니다.
  • WebWeb 2013.02.17 18:06 신고 마틴님 내공이 정말 깊은 듯. ㅜㅜ
    잘 보고 가요~
댓글쓰기 폼