본문 바로가기

openCV

Making a 3D-Image from a Photo using SURF, OpenCV, OpenGL 실시간으로 입력 되는 영상에서 사진/명함을 추출하고 이를 인식하여 각각의 정보를 출력하는 일. 더 나아가 각각의 정보가 3D 형태의 사진 또는 동영상일 경우에 대해서 생각하고 프로그램을 작성 중이다. 이번 테마는 2D 이미지(사진)를 인식하고 그것으로 부터 3D 영상을 만들어 출력하는 작업이다. 3D 객체는 구현이 안되어 있는 상태라, 기존에 구현하던 아이디어인 사진을 3D로 표현하는 HSV 컬러 좌표계 VIEWER 를 이용하여 실시간으로 출력 해 보았다. 2D 이미지 인식에 소요되는 시간, 3D 좌표계의 구성 등 손 봐야 될 것이 제법 많이 보인다. 덧. OpenGL의 영상을 OpenCV의 영상으로 가져오는 방법 glReadPixels(0, 0, image->width, image->height, GL..
OpenCV find-obj를 이용한 마커리스 AR 위성/심해 영상 정합과 관련된 논문을 읽으며, SIFT, SURF 테스트 프로그램을 좀 짜봐야겠다고 생각하고 있던 차에 OpenCV에서 이미 SURF를 구현해 두었기에 간단히 테스트를 해 보았다. 아래는 데모프로그램에서 제공하는 예제 사진인데 생각했던 것 보다 성능이 괜찮다. 다만 문제는 수행시간이다. 상단의 책 영상의 크기가 324 x 223 px, 아래 타겟 영상은 512 x 384 px 인데, 키포인트를 찾고 하는데 걸리는 시간이 290ms. 과연 실시간으로 가능할지 궁금해졌다. 먼저 몇 개의 테스트 영상으로 다른 응용방법을 생각해 보았다. 테스트 영상으로 사용한 영상(손쉽게 구할 수 있는 데이타가 이것 밖에 없음에)은 참으로 나답게도 번호판 영상이다. 수행시간이 좀 오래 걸리는 편이라 이미지를 작..
개체 추적 1. 침입 탐지 프로그램(테스트 영상) 지능형 카메라 개발을 위해 개체 추적 관련된 논문을 읽고 쓰면서 만들기 시작한 프로그램. 어느새 논문보다 프로그램에 더 열을 올리고 있는 나를 보며 나는 학자 말고 개발자 해야겠다는 생각을 많이 하게 된다. - 물론 이것이 새 알고리즘을 적용하기 위한 필수 단계이긴 하지만. 이 프로그램은 개체 추적 프로그램의 첫 단계로 침입 탐지 및 알람용 프로그램이다. 제한된 영역으로 들어오는 침입자의 탐지가 주된 목적이며 차량 도난 위험 탐지, 전시물 회손 위험 탐지 등에 이용 될 수 있다. 아래는 USB-CAM을 이용해서 창 밖의 모습을 촬영한 테스트영상으로 차량 도난범 연기는 내가 직접........ ㅋㅋ 두 번째 영상은 http://groups.inf.ed.ac.uk/vision/CAVIAR/CAVIARDATA..
마틴 블로그 닷 넷 티에디션 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. 검증 알고리즘의 구현 - 만들어둔 레이블링 알고리즘 사용의 적극 권장! 이전에 작성하였던 프로그램에서, 각 레이블에 빨간색을 칠하는 부분에 검증 알고리즘을 넣으면 되겠다. 보다시피 몇 줄 안되면서도 동족방뇨스럽기 그지없는 코드이..