[Stereo Vision] kinect 설치하기 (Visual Studio 2015, Windows 10, 64 bit, usb 3.0)

[Kinect] kinect 설치하기 (Windows 10, 64 bit, usb 3.0) 환경은 Windows 10, 64bit, usb 3.0, Visual Studio 2015 이다. usb 3.0 버전은 키넥트 SDK 프로그램 다운로드가 안된다고 하여, 키넥트 SDK 1.8 버전을 다운받았다. 3.0 버전이 아니거나 최신버전 다운을 받고싶다면 아래 사이트에서 SDK를 다운하면 된다. http://www.kinectforwindows.com/ 2.0 버전이거나 낮은 버전을 다운 받고 싶다면 아래 사이트에서 적절한 SDK를 다운하면 된다. 나는 v1.8 을 다운받았다. https://www.microsoft.com/en-us/search/result.aspx?q=kinect+for+windows+sd..

[Image Processing] OpenCV Watershed를 이용한 영상 분할

OpenCV Watershed를 이용한 영상 분할 워터쉐드 변한은 영상을 빨리 분할하여 동일한 영역으로 만들기 위해 사용하는 영상처리 알고리즘이다. 영상이 위상적 입체감을 보여준다는 아이디어에서 착안하였으며 영상 분할을 위해 정의된 마커 집합을 사용하게 된다. 워터쉐드 함수는 마커 기반 영상 분할을 수행하게 된다. CV_8UC3인 8비트 3채널 컬러 영상 image에 사용자가 대략적으로 32비트 정수 1-채널 markers에 부분영역을 설정하면 영상을 분할하여 markers 행렬에 저장한다. 초기에 markers에 주어진 영역의 값을 씨앗(seed)으로 하여 나머지 영역을 분할한다. 함수가 반환 될 때 markers에 1 이상의 값을 가지며 markers의 값이 같으면 동일 특성을 갖는 분할 영역이며, ..

[OpenCV] pyrMeanShiftFiltering 적용하여 영상분할

pyrMeanShiftFiltering에 의한 피라미드 기반 영상 분할 (color segmentation) 피라미드(Pyrimid) 영상 일단 이 함수를 영상에 적용시키기에 앞서 피라미드 기반 영상분할에 대하여 알아야 한다. 피라미드 생성은 각각 축소와 확대로 나타난다. pyrDown 함수 같은 경우 오리지널 영상에 가우시안 필터링을 한 후, 결과영상 사이즈를 축소한다. 보통 디폴트 값은 가로, 세로 각각을 1/2배 크기로 축소하는 것을 적용한다. 즉 Size((src.cols+1)/2, (src.rows+1)/2)가 된다. pyrUp 함수는 마찬가지로 영상에 가우시안 필터링을 적용하여 주어진 크기로 결과영상을 확대하게 된다. 디폴트는 가로, 세로 각각 2배 크기로 확대하게 된다. 즉 Size(src...

[OpenCV] MOG2 함수를 이용한 배경추출

안녕하세요 오랜만에 티스토리 포스팅을 해요. 포스팅을 하는 주된 목적이 하루 또는 일주일 동안 공부한 내용을 정리하는 목적 그리고 공유하는 목적으로 썼었는데 요 며칠간 공부만하느라고, 정리를 못했네요. 정리를 안하니 머리에 남는 것도 없고 다시 정리를 하자는 마음으로 포스팅을 오랜만에 해요. 배경추출 알고리즘을 찾던 도중 OpenCV에 내장되어있는 MOG2 함수를 써보게 되었어요. OpenCV 3.1 도큐멘트에 있는 내용을 참고하여 작성하였습니다. MOG2의 기본 원리는 다음과 같습니다. 현재 프레임(currentframe)과 객체를 추출하기 위한 배경 모델(background model)의 차영상(substraction)을 구하여 Thresholding을 하여 foreground mask를 구하는 것입..

[OpenCV] 간단한 웹캠 영상 띄우기 및 CANNY EDGE

소스코드 (OpenCV 3.0 버전) if(frame_valid) 부분의 try 문에 처리하고자 하는 영상처리 소스를 입력하면 된다. #include "opencv/cv.h" #include "opencv/highgui.h" #include "opencv2/opencv.hpp" #include using namespace cv; using namespace std; int main(int argc, char *argv[]){ VideoCapture capture(0); if (!capture.isOpened()){ cerr frame; } catch (Exception& e){ cerr

[MFC] 3. MFC 프로그램 기본 구조 및 MFC 기초 클래스

정말 오랜만에 다시 꺼내든 MFC 윈도우 프로그래밍 책, 다시 여유시간이 생겨 공부해보려고 한다. 지난번에는 SDK 프로그램 기본구조에 대해서 살펴보았는데 이번엔 그와 비슷한 MFC 프로그램 기본 구조를 살펴보려고 한다. SDK 기본 구조의 골격은 다음과 같다. 1. 윈도우 클래스를 정의(초기화)하고 운영체제에 등록한다.2. 윈도우를 생성하고 화면에 보이게 한다.3. 메시지 루프를 구동한다.4. 윈도우 프로시저에서 메시지를 처리한다. 그와 비슷한 MFC 기본 구조의 골격은 다음과 같다. 1. 응용 프로그램 클래스를 정의한다.2. 메인(프레임) 윈도우 클래스를 정의한다.3. 응용 프로그램 객체를 선언한다.4. 메시지 맵을 선언한다. MFC 응용 프로그램을 개발 할 때는 일반적으로 AppWizard를 이용하..

[3D Reconstruction] Trifocal tensor 정리

Trifocal tensor (그림 1) Trifocal tensor 컴퓨터 비전에서 Trifocal tensor (또는 tritensor) 는 3개의 View 사이의 모든 투영 기하학적 관계를 통트는 3 x 3 x 3 행렬이다. 이는 3개의 View에 있는 Line과 Point에 대응하는 좌표가 있고, 이는 Scene Structure에 영향을 받지 않고, 캘리브레이션 파라미터와 3개의 View 에 영향을 받는다. 따라서, Trifocal tensor는 3개의 View에서 기본 행렬의 일반화라고 할 수 있다. 27개의 요소들로 구성되어있으며, 18개 만 독립적으로 존재한다. (그림 2) Trifocal tensor Matrix 즉, 그림 1에서와 같이 공간상의 하나의 직선 L이 세 가지 View에 투영..

[Image Processing] Fourier Transform (푸리에 변환)

Fourier Transform (푸리에 변환) 푸리에 변환(Fourier Transform) 이란 어떤 시간 도메인(time domain)에서 표현된 신호를 주파수 도메인(frequency domain)에서의 표현으로 변환해주는 것을 말한다. 영상처리에서는 2차원 푸리에 변환을 사용하게 된다. 이는 영상을 x축 또는 y축 방향으로 따라가면서 픽셀의 밝기 변화를 파형 또는 신호로 보고 주파수 분석을 적용하는 것이다. 푸리에 변환을 통해 얻은 각 주파수 성분의 강도를 스펙트럼(spectrum)이라고 부른다. 이 스펙트럼도 이미지처럼 표현이 가능하다. 또한, 푸리에 변환은 신호를 주파수 영역에서 분석하기 위해 사용된다. 푸리에 변환의 기본 개념은 하나의 신호는 여러 개의 sin 신호와 cos 신호의 합으로 ..

OpenCV contrib 설치 및 Cmake

참고자료 1 : http://m.blog.naver.com/imsujin91/220596347249참고자료 2 : http://kimjuyoung.blogspot.kr/2015/11/window-opencvcontrib-master-install.html참고자료 3 : https://github.com/opencv/opencv_contrib참고자료 4 : http://dongjinlee.tistory.com/entry/%ED%8D%BC%EC%98%B4-OpenCV-ExtraModules%EC%9D%84-windows-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-%EC%84%A4%EC%B9%98%EB%B2%95참고자료 5 : http://neodreamer-dev.tistory.com..

[MFC] 2. 윈도우 프로그래밍 및 SDK 프로그램 기초

1. 윈도우 프로그래밍 개요 윈도우 프로그래밍이란 윈도우 운영체제에서 구동되는 응용 프로그램을 만드는 것이다. 따라서 윈도우 운영체제의 특징을 알아야 한다. 기존에 운영되었던 DOS와 같은 텍스트 기반 운영체제에 비해 WINDOW와 같은 그래픽 기반 운영체제가 훨씬 보기 편한게 사실이다. 이러한 프로그램을 만들기 위해서 메세지 구동 구조에 대해 알아야한다. 윈도우 운영체제에서 실행되는 대부분의 응용 프로그램은 메세지 구동 구조(Message-Driven Architecture)로 동작한다. 메세지는 운영체제가 프로그램의 외부 또는 내부에 변화가 발생했음을 해당 프로그램에 알리기 위한 개념이다. 하지만 대부분의 윈도우 응용 프로그램은 순차적으로 실행되지 않고 어떤 메세지를 받는가에 따라 코드의 실행 순서가..