본문 바로가기

openCV

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..
OpenCV 강좌 03. 다이얼로그에 캠 영상 입력받기 OpenCV를 공부하면서 부터 캠을 하나 사야지 사야지 벼르고 있었는데, 들로네 님의 추천(웹캠으로 주행중 차량 번호판을 추출한다)으로 좋은 캠을 하나 알게된 차에 증강현실(AR)을 이용한 마술을 보고 너무너무 따라해 보고 싶은 마음에, 과감하게 캠을 하나 질렀다. 이 캠이 앞으로의 연구들에 큰 역할을 하기를!! Genius Slim 1320, 25000원 OpenCV 설정 및 MFC 프로그램 기본에 대한 사항은 이전 글을 참고할 것 강좌 01. MFC로 OpenCV 시작하기 강좌 02. 다이얼로그(Static Control)에 이미지 출력하기 1. 웹캠에서 영상을 입력받기 위한 변수 선언 2. 웹캠 연결 및 타이머 설정 - 일반적으로 캠 영상의 입력은 콜백함수를 이용하지만, 예제에서는 간단히 타이머를 ..
OpenCV 강좌 02. 다이얼로그(Static Control)에 이미지 출력하기 1. Static Control(Picture Control) 생성 2. 멤버변수 추가 3. 헤더파일 수정(이미지 변수 선언. 이때 화면에 뿌려줄 이미지를 전역으로 설정 한다.) 4. 열기 버튼 내용 수정 및 윈도우 종료시 이미지 Release 5. Static Control에 이미지 출력 - IplImage형의 이미지를 CvvImage형으로 복사한 뒤 그 핸들을 이용하여 Static Control에 이미지 출력 6. 테스트 결과
OpenCV 강좌 01. MFC로 OpenCV 시작하기 (이미지 열기) 0. OpenCV 다운로드 및 설치 - 아래 사이트에서 OpenCV 1.1 pre 버전을 다운로드 받은 후 설치 OpenCV 라이브러리 다운로드 페이지 http://sourceforge.net/projects/opencvlibrary 1. 새 프로젝트의 생성 - 본 프로그램의 예제는 Microsoft Visual Studio 2005 기준임 - 대화 상자 기반으로 응용 프로그램 종류 선택 후 마침 2. OpenCV 라이브러리 경로 설정 및 등록 - 도구 - 옵션 클릭한뒤, 프로젝트 및 솔루션의 VC++ 디렉터리란 정보 수정 - 포함 파일에 OpenCV INCLUDE 디렉터리 추가 - 라이브러리 파일에 OpenCV LIB 디렉터리 추가 - Alt + F7키 또는 메뉴에서 프로젝트 속성 페이지를 선택한 뒤,..
OpenCV로 구현한 자동차 번호판 인식기 OpenCV를 만지기 시작한지 석달째. 조금 무거운 감이 없지 않지만, 역시 꽤나 괜찮은 라이브러리임은 확실한 것 같다. 예전부터 공부/일해오던 분야인 자동차 번호판 인식을 시작으로, 프로그래밍감을 살려보려 하다보니, 석사논문 쓸 때와는 또 다른 환경(번호판 종류, 카메라의 변화)들이 나를 맞이한다. 덕분에 새로운 알고리즘의 개발은 필수가 되어버렸다. - 번호판 인식기의 껍데기 - 번호판 추출부와 번호판 인식부를 따로 떼어둔 것은, 추출부와 인식부의 알고리즘을 따로/동시에 개발했기때문이기도 하거니와, 추출된 후보영역 중 실제 번호판 영역을 선택하는 알고리즘이 명확하지 않음이 그 이유이다. 현재는 추출된 번호판 후보영역 모두에서 문자들을 추출해 내도록 하며, 일련번호 4자리에 대해서만 인식하도록 프로그램 ..
cvWarpPerspective() 사용 방법 1. 와핑 와핑이라는 말의 의미는 휘게하다, 왜곡시키다 라는 의미로 해석할 수 있지만, 영상처리에서는 회전 보정이나 찌그러진 이미지의 정규화를 위하여 사용한다. 2. OpenCV 제공 함수를 이용한 와핑 (역순으로 설명) OpenCV 에서 이미지의 와핑을 위해 제공하는 함수는 cvWarpPerspective() 이며, 이는 원본 이미지를 미리 구해진 변환 매트릭스를 이용하여 타겟 이미지를 생성하는 함수이다. void cvWarpPerspective (const CvArr *src, CvArr *dst, const CvMat *map_matrix, int flags = 1+8, CvScalar fillval = cvScalarAll(0)) 첫 번 째 변수 src는 IplImage* 타입의 원본 이미지, 두..