AR을 시작하면서 처음 떠오른 것이 바로, 해리포터에 나오는 신문(예언자 일보?)이다.


얼핏보면 일반 신문과 다를바 없는 신문이지만, 신문의 사진들은 사진이 아닌 동영상이다.
AR 첫 주제로 해리포터 신문, 일명 멀티미디어 신문을 만들어보고자 한다.

원리 자체는 간단하다.
종이에 기사를 프린트하되, 영상이 들어갈 부분은 2D 마커로 대치한다.
캠이 기사를 비출 때 마커를 인식하여 그 마커 위에 영상을 뿌려주는 것이 과제의 전부이다.


본 장에서는 OpenCV를 이용하여 영상을 이진화하는 방법에 대해 살펴본다.




1. 버튼 만들기
- 체크박스를 하나 추가한다. (Push Like를 True로 두는 것은 단지 내 스타일일 뿐 다른 의미는 없다.)

2. 변수 추가
- 이진화 버튼이 체크 여부를 확인할 수 있도록 변수 설정

3. 클릭 이벤트의 처리
- 이진화 영상은 다이얼로그에 출력하지 않고 새로 윈도우를 생성하여 보여주도록 한다.

4. 타이머 내부 수정
- 이진화를 선택해둔 경우에만 영상을 이진화 하여 화면에 출력한다.

IplImage 타입의 영상을 이진화 하기 위해 사용하는 함수는 cvThreshold라는 함수이며,
이는 입력으로 들어가는 영상의 각 채널을 이진화 한다.
이런 이유로 컬러영상(3개 채널)을 이진화 하는 경우, R, G, B 각각을 이진화 하기 때문에
아래와 같이 의도하지 않은 영상을 얻게 될 수도 있다.



그런 이유 때문에 이진화 전에는 cvCvtColor()를 이용하여 Gray로 변환 후 이진화 한다.
cvCvtColor()의 세 번 째 인수는 어떤 컬러맵으로 변환할 것인지 선택할 수 있으며,
OpenCV에서 제공하는 방법들은 CV_BGR2GRAY 뿐만 아니라 
CV_BGR2YCrCb, CV_BGR2HSV, CV_BGR2Lab 등 여러가지이며 이는 cv.h 파일에서 확인할 수 있다.


cvThreshold() 함수는 실제로 이진화를 수행하는 함수로,
세 번 째 인수는 문턱치를 설정하고,
네 번 째 인수는 문턱치를 넘어선 픽셀들을 어떤 값으로 설정할 것인지를,
다섯 번 째 인수는 이진화 알고리즘을 선택할 수 있다.



5. 결과





Posted by K. Martin

댓글을 달아 주세요

  1. 김종선 2010/05/26 02:28  댓글주소  수정/삭제  댓글쓰기

    자세한 설명 감사합니다.

  2. 송주섭 2010/11/19 20:17  댓글주소  수정/삭제  댓글쓰기

    저는 이진화된 영상이 반전되서 나오네요!?흠...
    그래서 cvFilp써봤는데 안되네요 ㅡㅜ.

  3. 황인학 2011/02/17 22:40  댓글주소  수정/삭제  댓글쓰기

    공짜로 이렇게 도움을 주시는 분들이.. 흑흑
    뭐라 감사하다고 해야 할지... 꼭 찾아보면 이렇게 저한테 필요한게 있내요
    감사합니다.

  4. 이동규 2011/02/24 00:39  댓글주소  수정/삭제  댓글쓰기

    윈도우를 새로 만들지 않고 원래 있던 다이얼로그에 영상을 이진화 시킬수는 없나요??

    • Favicon of http://martinblog.tistory.com K. Martin 2011/02/24 08:24  댓글주소  수정/삭제

      물론 가능합니다.
      화면에 m_pCapture를 뿌리는 것을 m_bBinarize를 뿌리도록만 변경하시면 됩니다.
      자세한 내용은 이후의 강좌들을 확인해 주세요.

  5. ^^ 2012/02/12 04:33  댓글주소  수정/삭제  댓글쓰기

    감사합니다.. 많은정보 얻어가고 배워감니다~

  6. 이상훈 2012/02/24 19:13  댓글주소  수정/삭제  댓글쓰기

    지금 여기서 오츠방식으로 하셨는데 다른 방법으로 이진화 하려면 cvThreshold()5번째 인자에 넣는 코드가 어떤게 있는지 알려주실수 없으신가요