no image
[OpenCV] MOG2 함수를 이용한 배경추출
안녕하세요 오랜만에 티스토리 포스팅을 해요. 포스팅을 하는 주된 목적이 하루 또는 일주일 동안 공부한 내용을 정리하는 목적 그리고 공유하는 목적으로 썼었는데 요 며칠간 공부만하느라고, 정리를 못했네요. 정리를 안하니 머리에 남는 것도 없고 다시 정리를 하자는 마음으로 포스팅을 오랜만에 해요. 배경추출 알고리즘을 찾던 도중 OpenCV에 내장되어있는 MOG2 함수를 써보게 되었어요. OpenCV 3.1 도큐멘트에 있는 내용을 참고하여 작성하였습니다. MOG2의 기본 원리는 다음과 같습니다. 현재 프레임(currentframe)과 객체를 추출하기 위한 배경 모델(background model)의 차영상(substraction)을 구하여 Thresholding을 하여 foreground mask를 구하는 것입..
2017.01.17
no image
[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
2017.01.17
no image
[MFC] 3. MFC 프로그램 기본 구조 및 MFC 기초 클래스
정말 오랜만에 다시 꺼내든 MFC 윈도우 프로그래밍 책, 다시 여유시간이 생겨 공부해보려고 한다. 지난번에는 SDK 프로그램 기본구조에 대해서 살펴보았는데 이번엔 그와 비슷한 MFC 프로그램 기본 구조를 살펴보려고 한다. SDK 기본 구조의 골격은 다음과 같다. 1. 윈도우 클래스를 정의(초기화)하고 운영체제에 등록한다.2. 윈도우를 생성하고 화면에 보이게 한다.3. 메시지 루프를 구동한다.4. 윈도우 프로시저에서 메시지를 처리한다. 그와 비슷한 MFC 기본 구조의 골격은 다음과 같다. 1. 응용 프로그램 클래스를 정의한다.2. 메인(프레임) 윈도우 클래스를 정의한다.3. 응용 프로그램 객체를 선언한다.4. 메시지 맵을 선언한다. MFC 응용 프로그램을 개발 할 때는 일반적으로 AppWizard를 이용하..
2017.01.02
no image
[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에 투영..
2016.12.27
파인만 알고리즘 (Feynman Algorithm)
출처 : http://thoughts.chkwon.net/feynman-algorithm/ 미국의 유명한 물리학자 리처드 파인만은 다음과 같은 ‘일반적인’ 문제 해결법을 제시 했다. 1. Write down the problem. 2. Think real hard. 3. Write down the solution. 1. 문제를 쓴다. 2. 열심히 생각한다. 3. 답을 쓴다. 한 십년쯤 전에 이 걸 처음 봤을 때는, 황당하다고 생각했고, 파인만 같은 천재들에게나 해당하는 문제 해결방법이라고 생각했다. 몇 년 후 시간이 흘러서, 대학원생일 때 이걸 다시 봤을 때는 2번 항목에 감명을 받았었다. 문제를 ‘직접’ 해결하는 방법 중에, 저 방법 말고 다른 방법이 도대체 뭐가 있을까를 생각 했다. 열심히 생각하는 ..
2016.12.27
no image
[Image Processing] Fourier Transform (푸리에 변환)
Fourier Transform (푸리에 변환) 푸리에 변환(Fourier Transform) 이란 어떤 시간 도메인(time domain)에서 표현된 신호를 주파수 도메인(frequency domain)에서의 표현으로 변환해주는 것을 말한다. 영상처리에서는 2차원 푸리에 변환을 사용하게 된다. 이는 영상을 x축 또는 y축 방향으로 따라가면서 픽셀의 밝기 변화를 파형 또는 신호로 보고 주파수 분석을 적용하는 것이다. 푸리에 변환을 통해 얻은 각 주파수 성분의 강도를 스펙트럼(spectrum)이라고 부른다. 이 스펙트럼도 이미지처럼 표현이 가능하다. 또한, 푸리에 변환은 신호를 주파수 영역에서 분석하기 위해 사용된다. 푸리에 변환의 기본 개념은 하나의 신호는 여러 개의 sin 신호와 cos 신호의 합으로 ..
2016.11.18
no image
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..
2016.11.14
no image
[MFC] 2. 윈도우 프로그래밍 및 SDK 프로그램 기초
1. 윈도우 프로그래밍 개요 윈도우 프로그래밍이란 윈도우 운영체제에서 구동되는 응용 프로그램을 만드는 것이다. 따라서 윈도우 운영체제의 특징을 알아야 한다. 기존에 운영되었던 DOS와 같은 텍스트 기반 운영체제에 비해 WINDOW와 같은 그래픽 기반 운영체제가 훨씬 보기 편한게 사실이다. 이러한 프로그램을 만들기 위해서 메세지 구동 구조에 대해 알아야한다. 윈도우 운영체제에서 실행되는 대부분의 응용 프로그램은 메세지 구동 구조(Message-Driven Architecture)로 동작한다. 메세지는 운영체제가 프로그램의 외부 또는 내부에 변화가 발생했음을 해당 프로그램에 알리기 위한 개념이다. 하지만 대부분의 윈도우 응용 프로그램은 순차적으로 실행되지 않고 어떤 메세지를 받는가에 따라 코드의 실행 순서가..
2016.11.12
OpenCV 설치 시 에러 LNK1112
error LNK1112: module machine type 'x64' conflicts with target machine type 'X86' 위와 같은 오류 발생 시 아래와 같은 방법으로 해결 할 수 있었다. 나같은 경우 OpenCV 3.1.0 버전을 설치하는 과정에서 오류가 나서 2번 방법으로 해결할 수 있었다. I wrote a blog entry about this, as I encountered this maddening problem, and finally yanked my system back into working order.These are the things to check, in this order:Check your properties options in your linker s..
2016.11.12
no image
[Image Processing] Superpixels (SEEDS / SLIC)
Superpixels (SEEDS and SLIC) 논문을 읽는데 심심치 않게 등장한 Superpixels 개념 때문에 조금 더 공부해보자는 차원에서 포스팅하게 되었다. Superpixels 이라는 개념을 영상에서 픽셀을 블록화 하는 걸로만 이해하고 있었다. Superpixels의 정확한 개념을 설명하고, 이에 대한 대표적인 방법인 SEEDS 와 SLIC 알고리즘을 설명하려고 한다. 영문을 번역하며 설명하는거라 다소 매끄럽진 않겠지만 최대한 매끄럽게 써보도록 하겠다.. 1. Superpixels (슈퍼픽셀) 슈퍼픽셀은 영상분할 및 Object Tracking 분야에서 자주 사용되는 방법이다. 영상분할은 입력영상으로부터 물체에 해당하는 영역을 추출하는 과정으로 영상해석을 위한 필수적인 단계라고 할 수 있다..
2016.11.11
[Image Processing] 영상처리 용어 정리
A. accumulator plane : 축적 평면 accumulator volume : 축적 공간 AdaBoost : 에이다 부스트 adaptive : 적응형, 적응적 algorithm : 알고르즘 aliasing : 에일리어싱 alpha blend : 알파 블렌드 alternative split : 대체 분기 anchor point : 고정점 anti-aliasing : 앤티 에일리어싱 aperture problem : 어퍼쳐 문제, 틈 문제, 구멍 문제, 틈새 문제 application : 응용 프로그램 area process : 영영 처리 aspect ratio : 영상 비 autocorrelation matrix : 자기 상관 행렬 average : 평균 B. background differen..
2016.11.10
no image
[Stereo Vision] Disparity Map 생성
[Stereo Vision] Disparity Map 생성 1. Disparity Map 이란? Disparity는 Stereo 정합을 위한 두 이미지(left image, right image, 또는 왼쪽에서 보는 시야와 오른쪽에서 보는 시야를 말함)에서의 객체의 위치 상의 다른 차이를 말한다. 이 차이를 parallax 하게 만드는 것을 Disparity Map 이라고 한다. 우리의 뇌는 2차원 이미지로부터 Depth information을 계산하여 disparity를 계산하게 된다. 간단히 말해서 Pixel의 Disparity는 그 픽셀에 대한 최소 제곱 합들의 Shift value와 같다. Disparity 는 왼쪽 시야와 오른쪽 시야로부터 보이는 특징의 position 사이의 2D vector라..
2016.11.04