Matching물체를 비교해서 동일한지 비교하는 것을 매칭이라고 한다.보통 두 오브젝트 사이의 유사도 거리를 비교한다. 만약 3개 이상의 매칭 페어가 발견되면, 그 물체의 위치와 방향을 결정할 수 있다. 일반적인 매칭 과정은 간단하다.특징점들 (관심 포인트) 사이의 유사도를 계산한 뒤, 가장 큰 값을 갖는 것을 대응 쌍으로 결정한다.또는 일치하는 관심 포인트 사이의 거리를 계산하여 가장 작은 거리를 갖는 것을 대응쌍으로 결정할 수도 있다. 하지만 매칭과정에서 현실적인 문제가 있다.예를 들어 서로 다른 특징을 매칭쌍으로 결정하거나 (false-positive), 유사도 점수가 낮아 동일한 객체의 특징이 매칭되지 않을 수도 있다. (false-negative) 이 경우, 전형적인 해결책은 많은 매칭 쌍을 찾..
Local Feature Extraction서로 다른 이미지에서 물체를 매칭하기 위해서, 각 물체의 '특징'을 추출해야 한다.현대에는 특징점 추출 연산으로 SIFT, SURF 와 같은 연산자를 사용하며, 이들은 스케일 (크기 변봐) , 방향, 밝기 변화에도 불구하고 같은 특징을 갖는 (불변한 값을 갖는) 특징점을 찾는 것을 목표로 한다. 사실 이미지의 특징으로 사용할 수 있는 것 중에 지난 글에서 정리한 방법대로 검출했던 '엣지' 가 있다.하지만 엣지가 제공하는 정보는 강도와 방향, 2가지에 한정된다.보다 다양한 정보를 특징으로 사용하기 위해 엣지대신 gray scale 이미지로부터 추출되는 local feature 를 사용하는 방법이 등장했다. 이 이미지는 같은 물체를 서로 다른 방향에서 찍은 이미지..
Edge Detection의 기본 원리어떤 물체의 내부, 또는 그 물체의 배경에 대해 변화가 작다면, 배경과 물체 사이의 경계 주위에서는 큰 변화가 있을 것이다.이 관찰에 기반해서, Edge detection 알고리즘은 밝기, 색상, 텍스쳐 등의 변화량을 측정하고, 큰 변화가 발생한 위치를 edge로 인식한다. 이 작업을 수행하기 위한 가장 간단한 방법은, 각 픽셀에서 gray level의 gradient vector를 계산하는 것이다.이미지를 흑백으로 바꾼 뒤, 밝기의 차이만 보는 것이다. 그 값은 위와 같이 계산할 수 있다.또한 절대적인 변화량은 이렇게 절댓값을 씌워서 얻을 수 있다.그리고 이 변화량은 마치 수학에서 두 점 사이의 변화량을 보는 것과 같이 그 변화의 뱡향을 따질 수 있다.이때 변화의 ..
Group모든 평면 투영 변환의 집합들은 그룹을 형성한다.그리고 각각의 그룹에는 특별한 케이스들이 있다.이제 다양한 특별한 케이스 (특별한 평면 투영 변환) 을 정리한다. 우선 group은 아래와 같은 특성을 갖는다. 1. 특정 그룹에 속하는 a, b 에 대해서, a와 b를 연산현 결과도 그 그룹 안에 속한다.이를 '닫혀있다' 라고 표현한다. 2. 연산 순서에 영향을 받지 않아야 한다. (associative 하다고 한다.) 3. identity element를 가져야 한다.identity element는 이 element와 다른 element를 연산했을 때, 그 다른 element가 그대로 나오도록 하는 element를 말한다. 4. 특정 group 안에 있는 모든 element에 대해, 그들의 inv..
Homographyhomography는 평면 투영 변환 행렬을 가리키는 말이다.평면 투영 변환은 2차원 평면에 어떤 변환 H를 가해 다시 2차원 평면으로 만드는 것을 말한다. 이걸 사용하는 이유는 수학적으로 어려운 개념을 인간의 관점에서 쉽게 이해하기 위함이다.예를 들어 이전 내용에서 무한대에 위치한 점은 homogeneous 좌표계로 나타냈을 때 세번째 원소가 0이었고, 이들을 모두 이으면 하나의 원이 나온다고 했었다.그런데 이런 수학적인 표현은 인간의 두뇌로는 상상도 잘 안되고 이해하기 힘들다. 그래서 그냥 평행선이 있다고 할 때 이걸 인간의 시점에서 잘 비틀어보는 것이다.그러면 우리가 도로를 바라볼 때 먼 지점의 도로가 한 점에서 만나듯 (소실점) 무한대에 있는 점들은 한 곳에서 만난다는 것을 인간..
Homogeneous CoordinatesR² 을 2차원 실수 공간이라고 하자.R² 에 속하는 하나의 직선은 ax + by + c = 0 을 만족하는, R² 에 속하는 점 (x, y) 의 집합이다.이를 통해 R² 에 속하는 하나의 직선은 (a, b, c) 를 통해 나타낼 수 있다. 이때 l 을 (a, b, c) 라는 3차원 파라미터 벡터라고 하자.그러면 (x, y) 라는 2차원 물리 점은 3D 벡터 (x, y, 1) 로 나타낼 수 있다. ax + by + c = 0 이라는 등식은 (a, b, c) · (x, y 1) 으로 나타낼 수 있다.이때 3차원 실수 공간 R³ 에 속하는 (x, y, 1) 을 2차원 실수 공간 내부의 점 (x, y) 에 대한 homogeneous coordinate 표현이라고 한다...
Computer Vision컴퓨터 비전은 컴퓨터를 이용하여 시각 기능을 갖는 기계 장치를 만드는 기술 분야를 통칭한다.자율 주행, 수술 로봇, 행성 탐사, 군사 등 다양한 분야에 사용된다. 컴퓨터 비전이 해결하려는 문제는 크게 2가지가 있다. 1. 사람의 시각에 준하는 인공 시각을 만든다. (제약이 없는 상황 (이미지) 를 인식한다.)과학적으로 접근하여 사람 시각의 원리를 밝혀내고 컴퓨터로 모방하려고 한다.뇌 과학의 주요 관심사이며, (지식 표현, 학습, 추론, 창작) 과 같은 인공 지능이 필수적이다. 문제는 사람이 당연하게 2D로 들어오는 시각정보를 보고 3D를 판단하는 것을 기계가 할 수 있게 하는 것이 어렵다.2D 이미지로부터 3D 정보를 추론하는 것을 '역 문제' (Inverse Problem) ..
Window Programming 용어 Windows Procedure : a function that handles specific messages the parameters for the windows procedures mean specific messages when a message is created, a windows procedure corresponding to the message is called Win32 SDK : standard C library necessary to develop an application program on Windows OS MFC (Microsoft Foundation Class) : C++ class library necessary to develop ..
이번 글에서는 시점 변환에 대해 정리하려고 한다. 시점 변환은 주어진 그림에서 카메라의 위치를 이리저리 옮기는 것을 말한다. 카메라의 위치 정보를 설정하는 좌표계는 View Coordinate System (VCS, 시점좌표계) 이다. 따라서 시점을 옮기는 행위는 VCS이 변환되는 것을 의미한다. 이를 위해 사용하는 행렬이 뷰 행렬이다. (그런데 GL에서는 Model 행렬과 View 행렬을 합해서 하나의 행렬로 취급한다고 한다.) 그렇다면 뷰 행렬은 어떻게 구할까? 위 이미지에서 보는 것이 뷰 행렬을 구하는 것과 관련되어 있다. 결국 우리가 원하는 것은 VCS를 구하는 것이다. 즉, VCS의 x, y, z 축을 결정하고, 이 축을 기준으로 기존 정점을 새롭게 표현하는 것이다. 이는 아래와 같은 방식으로 ..
투상 (Projection) 3D 물체를 2D 평면에 사상하는 것을 말한다. 지난 글까지 각종 행렬 변환을 통해 ' Model 좌표계 → World 좌표계 → View 좌표계 ' 까지 변환했다면 이렇게 변환된 좌표계 위에 놓인 3D 물체를 2차원 화면에 사상하는 과정이다. 먼저 용어부터 정리하자. 1. 투상면, View Plane = Projection Plane 화면에 그리기 전 최종 변환된 좌표계 위 3D 물체를 투상하는 2D 화면을 의미한다. 물체 영상이 이 곳에 맺힌다. 2. 관찰자 위치, View Point, Eye Position, Camera Position 투상의 기준은 관찰자의 위치로부터 결정된다. 이 위치를 '시점 좌표' 라고 한다. 3. 투상 중심 (COP = Center Of Pro..