🐍Python/OpenCV

    [OpenCV] 08-2-1. Understanding SVM

    이번 장에서는SVM의 직관적인 이해를 도울 것이다!TheoryLinearly Separable Data빨강 / 파랑 두 가지 타입의 데이터가 존재하는 아래 이미지를 보자. kNN에서는 테스트 데이터에 대해, 학습 데이터들과의 거리를 측정하고 가장 최솟값의 거리를 갖는 것을 택했다. 이는 모든 거리들을 측정하는데 많은 시간이 들고 모든 학습 샘플들을 저장하는데 메모리도 많이 차지한다. 하지만 아래 이미지 처럼 데이터가 주어졌다면 그럴 필요가 있을까?? 한 번 다르게 생각을 해보자. 데이터들을 두 영역으로 나누는 f(x)=ax1+bx2+c 선을 찾아보자. 그리고 새로운 테스트 데이터 X를 받으면, f(x)에 대입시키면 된다. f(X)>0일 경우, 파란 그룹에..

    [OpenCV] 08-1-2. OCR of Hand-written Data using kNN

    이번 장에서는OCR 기능을 만들기 위해서 kNN에 대한 지식을 이용해보고OpenCV와 함께 제공되는 숫자와 알파벳 데이터를 사용해볼 것이다.OCR of Hand-written Digits목표는 손글씨 숫자를 읽을 수 있는 기능을 만드는 것이다. 이를 위해 train_data와 test_data가 필요하다. OpenCV는 5000개의 손글씨 숫자인 digits.png 이미지(0~9까지 500개씩)를 사용한다. 각 숫자는 20X20 크기의 이미지이다. 먼저 첫 번째로, 이미지를 5000개의 다른 숫자로 나눠야한다. 각 숫자에 대해, 펼쳐서 400 픽셀의 한 줄로 만든다. 이것이 우리의 feature set이다. 예를 들어 모든 ..

    [OpenCV] 08-1-1. Understanding k-Nearest Neighbour

    이번 장에서는, kNN 알고리즘에 대해서 이해해 볼 것이다!TheorykNN은 지도학습중에서 가장 간단한 분류 알고리즘 중에 하나이다. feature space 에서 test data와 가까운 매치를 찾는 것이 주 아이디어이다. 아래 이미지를 통해 더 쉽게 알아보자. 이미지에서, 파란 사각형과 빨간 삼각형으로 총 두 개의 카테고리가 존재하고 있다. 이 카테고리를 Class라고 부를 것이다. 우리가 feature space라고 부르는 그 곳에 놓여져있다(feature space는 모든 데이터들이 투영되어있는 공간이라고 생각하면 된다. 예를 들어서, 2D 좌표 공간을 생각해보자. 각 데이터는 x,y좌표를 가진다. 이를 2D 공간에..

    [OpenCV] 07-4. Depth Map from Stereo Images

    이번 세션에서는스테레오 이미지로부터 depth map(깊이)를 생성하는 것을 배워볼 것이다.Basics이전 세션에서, epipolar constraints와 다른 관련된 용어들의 기초 개념을 봤다. 그리고 같은 장면의 두 개의 이미지를 가지고 있다면, 직관적인 방법으로 깊이 정보를 얻을 수 있다는 것 또한 봤었다. 아래의 이미지와 간단한 수식들은 이 직관을 증명해준다. 위의 도형은 등가 삼각형(각이 전부 60도)이다. 이 등가식을 적는 것은 다음과 같은 결과를 도출해내게 한다. disparity=x−x′=BfZ x와 x′는 3D 포인트에 해당하는 이미지 평면에서의 점과 해당 카메라 중심 사이의 거리이다.(x,y축으로 생각) B는 두 카메라..

    [OpenCV] 07-3. Epipolar Geometry

    이번 장에서는다관점(multiview) 기하학의 기초에 대해 배워보고epipole, epipolar 선, epipolar 제약에 대해서 알아볼 것이다.Basic Concepts핀홀 카메라를 사용해서 이미지를 얻으면, 이미지의 깊이와 같은 중요한 정보를 잃게된다. 또는 카메라에서부터 이미지의 각 점이 얼마나 멀리 떨어져있는지에 대한 정보도 해당한다. (3D에서 2D로의 변환이기 때문이다.) 그래서 카메라를 사용해서 깊이 정보를 얻어낼 수 있냐는 질문은 매우 중요하다. 그리고 답은 하나 이상의 카메라를 사용하는 것이다. 우리의 눈은 스테레오 비전이라고 불리는 두 개의 카메라를 사용하는 것과 유사하게 작동한다. 이제 OpenCV가 제공하는 것을 봐보자!이미지의 깊..

    [OpenCV] 07-2. Pose Estimation

    이번 장에서는이미지에서 3D 효과를 생성하기 위해 calib3d 모듈을 이용하는 법을 배워볼 것이다.Basics매우 작은 섹션이 될 것이다. camera calibration를 하는 동안에는. camera matrix, 왜곡 계수등을 찾았었다. 패턴 이미지가 주어졌을 때, 위의 정보를 가지고 pose를 계산하고나, 물체가 공간에 어떻게 놓여있는지(회전,옮김)를 알 수 있다. 평면 물체에 대해서, Z축을 0이라고 할 수 있고, 이제 패턴 이미지를 보기 위해 카메라가 어디에 위치해야하는지가 문제가 된다. 그래서, 만약 물체가 공간에 어떻게 놓여있는지를 안다면, 물체에 2D 도형을 그려서 3D 효과를 시뮬레이션할 수 있다. 백문이 불여일견! 한 번 해보자!우리의 문제..