본문 바로가기

강좌

마틴 블로그 닷 넷 티에디션 5호, OpenCV 강좌 발행 영상처리 라이브러리인 OpenCV의 사용을 위한 OpenCV 강좌를 정리함. 바로가기 -> http://martinblog.tistory.com/te/5 목차 : 1. MFC로 OpenCV 시작하기 2. 다이얼로에 이미지 출력하기 3. 다이얼로그에 캠 영상 입력받기 4. 영상 이진화 하기 5. 레이블링(Blob Labeling) 6. 마커 추출 (1) - 잡영 제거 7. 마커 추출 (2) - 마커 검증 8. 마커 추출 (3) - 마커 꼭지점 구하기 9. 마커에 동영상 삽입하기 결과물 노트에서 뮤직비디오를? 내맘대로 TV - 1. 마틴밴드 편
문자인식 강좌 01. 문자 인식 개론 안녕하세요 마틴입니다. 문자인식이라는 광범위한 주제의 강좌를 본격적으로 진행해 보고자 합니다. 사실, 문자인식 분야를 제법 오~래 공부해온 저 나름의 자존심 문제도 있고 해서, 어려운 논문들을 참조해가며 체계적이고 또한 학문적인 강좌를 진행하고 싶은 욕심이 컸지만, 금새 바닥을 보일 실력... 거짓말은 하지 말자는 생각에, 이야기 하기 쉽고 많은 사람들이 공감할 수 있는 내용들을 이곳에 정리해 가는 것이 원래 강좌를 시작한 취지에도 맞고 훨씬 바람직하다는 생각이 들었습니다. 역시 그러한 과정에서 저 스스로도 많이 배우고 또 깨달을 수 있는 계기가 될 수 있을 것도 같구요. 두산중공업의 출입문을 지나는 차량의 번호판을 인식하는 일을 시작으로, 삼성테크윈의 불법주정차 차량 번호판 인식, 신선대부두의 컨테이너..
OpenCV 강좌 09. 마커에 동영상 삽입하기 예언자일보 프로젝트의 대미를 장식할 마지막 단계. 검출된 마커에 동영상을 삽입하는 방법이다. 동영상이라고 하는 것이 뭐 거창한 것 같지만 실제 형태는 스틸컷의 연결 정도로 보는 것이 적당하다. (MPEG 압축 등은 별개) 다시말해 모든 프레임을 이미지 형태로 가져올 수 있다는 말이다. 이렇게 매 프레임을 추출된 마커의 꼭지점 정보를 이용하여 변형한 뒤 원 영상에 삽입함으로써 일명, 예언자일보 프로젝트를 마무리 한다. 1. 변수 선언 - 동영상 파일을 불러오기 위한 변수 선언. 캠 영상과 그 형태가 같다. 2. 파일 불러오기 - 동영상 파일의 경로를 설정한다. 여기서 잠깐! SoaS Music Video 감상하기 [클릭] 3. 프레임 이미지 얻어오기 - 현재 프레임의 이미지를 임시 변수인 IplImage*..
OpenCV 강좌 08. 마커 추출 (3) - 마커 꼭지점 구하기 마커의 영역이 추출되면 그 마커의 윤곽선만을 추출해 낼 수 있으며, 이를 위해 OpenCV에서는 cvFindContours() 함수를 제공하고 있다. /* Retrieves outer and optionally inner boundaries of white (non-zero) connected components in the black (zero) background */ CVAPI(int) cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size CV_DEFAULT(sizeof(CvContour)), int mode CV_DEFAULT(CV_RETR_LIST), int method CV_DEFAU..
OpenCV 강좌 07. 마커 추출 (2) - 마커 검증 앞서 구한 '잡영이 제거된 영상'으로부터 이야기는 진행된다. 이번 장은 앞서 검출된 마커 후보영역들 중에서, 실제 마커영역이 가지는 특징을 가지는 것을 최종적으로 남기는 검증단계를 구현한다. 검증의 방법은 간단하다. 레이블의 내부에 홀이 있는지 없는지 파악한 뒤, 그 홀의 위치와 크기를 외부 레이블의 그것과 비교해 보고, 현재 레이블이 마커인지 아닌지 아래와 같이 구분해 내는 것이다. 1. 버튼추가 - 별달리 새로울 것도 없는. - 변수 이름을 m_bVerify로 만들었다. 2. 검증 알고리즘의 구현 - 만들어둔 레이블링 알고리즘 사용의 적극 권장! 이전에 작성하였던 프로그램에서, 각 레이블에 빨간색을 칠하는 부분에 검증 알고리즘을 넣으면 되겠다. 보다시피 몇 줄 안되면서도 동족방뇨스럽기 그지없는 코드이..
OpenCV 강좌 06. 마커 추출 (1) - 잡영 제거 본 장에서는 마커 추출을 위해 레이블의 크기정보를 토대로 잡영여부를 판단하고 이를 제거하는 방법을 소개한다. 1. 버튼 처리 - 단계적으로 결과를 보기 위한 체크박스 삽입 - 이진화를 해야 레이블링이 가능하고, 레이블링 이후에만 레이블링 통한 잡영 제거가 가능하도록 버튼 조작 (나중에 이런 부분들은 다 제거할 예정임.) 2. 레이블링 클래스에 잡영제거 루틴 추가 BlobSmallSizeConstraint(int nWidth, int nHeight)는 지정한 값 보다 작은 레이블들을 제거하고, BlobBigSizeConstraint(int nWidth, int nHeight)는 지정한 값 보다 큰 레이블들을 제거한다. 각각의 함수는 클래스 내부에서 각각 _BlobSmallSizeConstraint()와 _..
OpenCV 강좌 05. 레이블링(Blob Labeling) 앞선 강좌에서는 OTSU 기법을 이용한 이진화 방법에 대해 알아보았다. 오늘은 이진화된 영상에서 각각의 컴포넌트들을 잘라낼 수 있는 레이블링에 대해 알아본다. 레이블링(Labeling)이란? 인접한 화소에 모두 같은 번호(Label)를 붙이고 연결되지 않은 다른 성분에는 다른 번호를 붙이는 일 1. 클래스 추가 2. 픽셀 방문 기록을 남길 구조체 및 각종 변수 선언 레이블링시 영상의 전체 픽셀을 검사하며 돌아다니게 되는데, 이 때, 해당 픽셀의 이전 방문 여부와 되돌아갈 곳의 위치를 저장하는 구조체를 선언한다. 또한 레이블링시 레이블이 저장될 이미지와 각 레이블의 정보가 담길 각각의 변수들을 선언한다. 3. 실제 레이블링 알고리즘의 구현 - 파라미터를 설정하고, DoLabeling() 함수를 실행함으로써..
OpenCV 강좌 04. 영상 이진화 하기 AR을 시작하면서 처음 떠오른 것이 바로, 해리포터에 나오는 신문(예언자 일보?)이다. 얼핏보면 일반 신문과 다를바 없는 신문이지만, 신문의 사진들은 사진이 아닌 동영상이다. AR 첫 주제로 해리포터 신문, 일명 멀티미디어 신문을 만들어보고자 한다. 원리 자체는 간단하다. 종이에 기사를 프린트하되, 영상이 들어갈 부분은 2D 마커로 대치한다. 캠이 기사를 비출 때 마커를 인식하여 그 마커 위에 영상을 뿌려주는 것이 과제의 전부이다. 본 장에서는 OpenCV를 이용하여 영상을 이진화하는 방법에 대해 살펴본다. OpenCV 설정 및 MFC 프로그램 기본에 대한 사항은 이전 글을 참고할 것 강좌 01. MFC로 OpenCV 시작하기 강좌 02. 다이얼로그(Static Control)에 이미지 출력하기 강좌 0..