Matching물체를 비교해서 동일한지 비교하는 것을 매칭이라고 한다.보통 두 오브젝트 사이의 유사도 거리를 비교한다. 만약 3개 이상의 매칭 페어가 발견되면, 그 물체의 위치와 방향을 결정할 수 있다. 일반적인 매칭 과정은 간단하다.특징점들 (관심 포인트) 사이의 유사도를 계산한 뒤, 가장 큰 값을 갖는 것을 대응 쌍으로 결정한다.또는 일치하는 관심 포인트 사이의 거리를 계산하여 가장 작은 거리를 갖는 것을 대응쌍으로 결정할 수도 있다. 하지만 매칭과정에서 현실적인 문제가 있다.예를 들어 서로 다른 특징을 매칭쌍으로 결정하거나 (false-positive), 유사도 점수가 낮아 동일한 객체의 특징이 매칭되지 않을 수도 있다. (false-negative) 이 경우, 전형적인 해결책은 많은 매칭 쌍을 찾..
Homographyhomography는 평면 투영 변환 행렬을 가리키는 말이다.평면 투영 변환은 2차원 평면에 어떤 변환 H를 가해 다시 2차원 평면으로 만드는 것을 말한다. 이걸 사용하는 이유는 수학적으로 어려운 개념을 인간의 관점에서 쉽게 이해하기 위함이다.예를 들어 이전 내용에서 무한대에 위치한 점은 homogeneous 좌표계로 나타냈을 때 세번째 원소가 0이었고, 이들을 모두 이으면 하나의 원이 나온다고 했었다.그런데 이런 수학적인 표현은 인간의 두뇌로는 상상도 잘 안되고 이해하기 힘들다. 그래서 그냥 평행선이 있다고 할 때 이걸 인간의 시점에서 잘 비틀어보는 것이다.그러면 우리가 도로를 바라볼 때 먼 지점의 도로가 한 점에서 만나듯 (소실점) 무한대에 있는 점들은 한 곳에서 만난다는 것을 인간..
이번 글에서는 셰이더에 대해 더 자세한 사용법을 정리하고자 한다. 지난 글에서 셰이더는 그래픽스 스테이지에서 실행되는 작은 프로그램을 의미한다고 하였다. 대표적으로 이 수업에서 다룰 셰이더는 Vertext Shader, Fragment Shader 2가지 이다. Vertex Shader 사용 예 모든 셰이더 프로그램은 GLSL 이라는 별도의 언어를 사용한다고 하였다. Vertex Shader 는 일반적으로 아래 형태로 사용하는데, 각 코드를 뜯어서 설명해보려고 한다. const char* vertexShaderSource = "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" "void main()\n" "{\n" " gl_Position = v..