Sunwoo Kim's Computer Vision, Machine & Deep Learning Blog search

SLAM-6-DOF(6 Degree Of Freedom)

|

처음 SLAM공부를 시작하면서 관련된 키워드들에 대해서 정리중입니다. 틀린 부분이 있다면 말씀해주세요!

6-DOF(6 Degree Of Freedom)

6-DOF는 6자유도라고 번역할 수 있다. 즉, 6개의 자유도를 의미한다. 6개의 자유도는 아래 그림과 같다.

그림1. 6-DOF

사용자는 이 6개의 자유도를 모두 관측하여 사용할 수 있고,필요에 따라서 이 중 일부의 자유도만 사용할 수 있다. 대체적으로 6-DOF중 3-DOF씩 2개로 분류하여 언급한다.

3-DOF

Rotational DOF

말 그대로 회전과 관련된 DOF이다. 위 그림에서 알 수 있듯이, 회전과 관련된 Pitch,Yaw, Roll 이렇게 세가지의 자유도를 의미한다. VR기기를 예로들면, 일반적인 저가형 VR기기에서는 위 3가지의 자유도만 제공한다. VR헤드셋을 착용하고 가만히 있는 상태에서 머리를 회전시키거나 위아래로 움직일 때, 화면이 잘 따라온다는 것이다. 이런 기능을 Rotational tracking 이라고 한다.

Positional DOF

위치와 관련된 DOF이다. x, y, z축의 자유도를 의미한다. 사용자가 VR헤드셋을 쓴 상태에서 앉았다 일어나거나, 움직이는 등 머리의 위치가 바뀌었을 떄 이러한 점을 화면에도 반영시킬 수 있다는 것이다. 이것을 Positional tracking이라고 한다.

Rotational tracking만 가능한 경우 VR에서 투사체가 날아와서 머리를 움직이거나, 실제로 이동할 경우에 이런 사용자의 동작이 화면에는 반영이 안된다는 뜻이다. 그러므로 rotational tracking만 가능할 경우 가만히 앉아서 감상하거나 즐길 수 있는 컨텐츠에 국한될 수 밖에 없다.

Positional tracking만 가능한 경우 rotation이 안되므로, 이동은 가능하지만 머리를 꼳꼳이 고정한 상태로 VR기기를 이용해야 한다. 그러므로 rotational tracking만 제공하는 vr기기들은 있지만, positional tracking만 제공하는 기기는 없다.

Rotational tracking과 positional tracking이 모두 제공되는 기기는 6-DOF가 모두 제공되는 것이라고 볼 수 있다. 6-DOF가 모두 제공된다면, 물체를 만지거나 사용자가 움직이는 등, 보다 더 사용자가 능동적으로 움직일 수 있다. 간다한 예로, VR게임으로 유명한 비트세이버가 6-DOF가 모두 지원되는 예이다.

출처 그림1. https://commons.wikimedia.org/wiki/File:6DOF.svg

Comment  Read more

Feature detector-1. Scale이란?

|

Scale

영상과 관련된 자료들을 보다보면 scale이란 단어를 한 번씩은 본적이 있을 것이다. 그렇다면 과연 scale이란 무엇일까?

스케일(scale)이란 말은 우리 일상에서도 쓰이는 용어이다. “야 너 스케일 크다!” 라는 말이 있다. 보통 일을 크게 벌릴 때 쓰는 말이다. 또, 우리가 만수르가 쓰는 돈을 보면 스케일이 크다라고 생각하지만, 만수르 입장에서는 크지 않다. 이미지에서 스케일도 이와 비슷하다.

이미지에서 스케일을 생각해보기 위해서 마음속에 사각형 하나를 그려보자. 그것을 우리는 window라고 할 것이다. 그리고 아래 그림을 보자.노란색 사각형이 우리가 생각한 윈도우다. 그리고 그 창을 통해서 어떤 풍경을 바라본다고 하면 위와 같은 그림이 될 것이다.

[그림1]

그렇다면 우리가 더 조금보거나 더 많이 보려면 어떻게 해야할까? 우리가 어떤 풍경을 볼 때, 큰 창을 통해서 보는 것과 작은 창을 통해서 보는 것을 생각해보자. 큰 창을 통해서 보면 풍경이 더 많이보이고, 작은 창을 통해서 보면 풍경이 더 적게 보인다. 그리고, 가까이서 보면 풍경이 더 적게 보이고, 멀리서 보면 풍경이 더 많이 보인다.

즉, 이것이 핵심이다.

  1. 창의 크기를 조절한다.
  2. 더 다가가서 보거나, 멀리서 본다. 그런데 이미지는 그렇게 할 수 없으므로, 이미지를 확대하거나 축소 시킨다고 생각하자.

밑에 그림을 보고 이해해보자.

[그림2]

차이가 보일 것이다. 왼쪽의 경우가 원본 이미지 대비 더 많은 영역이 담겼고, 오른쪽 영역이 더 좁은 영역이 담겼다. 이를 요약해서 보면 다음과 같다.

[그림3] window 및 zoom정도에 따른 scale 차이

그렇다면 이 정도 느낌까지는 받았을 것이다. 뭔가 많이 담기면 large scale이고, 조금 담기면 small scale인거 같다. 그런데 뭔가 확실하게 large scale은 뭐고 small sacle은 뭐인지에 대한 느낌이 안 올 것이다. 밑에 그림을 보자.

[그림4] 다른 영역, 같은 이미지 크기

왼쪽 오른쪽 이미지의 크기는 같다. 이 크기를 Window라고 생각하자. 그러면 같은 크기의 윈도우 안에 왼쪽 이미지가 더 많은 영역이 담기고, 오른쪽 이미지가 더 좁은 영역이 담겼다. 윈도우 크기에 비해서 이미지가 더 많이 담겼을 때, large scale, 조금 담겼을 때, small scale이라고 생각하면된다. 이것을 이해했다면, 밑에 그림도 바로 이해할 수 있을 것이다.

[그림5] 동일한 영역, 다른 이미지 크기

이러한 스케일에 대해서 아는게 왜 중요하냐면 이미지 처리에서 scale로 인한 문제들이 생기기 때문이다. 이를 예시로 filtering을 봐보자.

[그림6] scale에 따른 특징, 여기서 노란색 window의 크기는 모두 같다

(small, large scale의 기준은 원본이미지 대비 많은 영역을 담고 있는가, 적은 영역을 담고 있는가의 여부이다.) 우선, 스케일을 신경쓰지 말고 보자. 노란색 네모는 filter의 크기이다. 똑같이 window라고 생각하고 보자. large scale 밑에있는 이미지의 경우에느 확실히 코너지점이 있는지 없는지 알 수가 있다. 하지만 small scale밑에 있는 이미지의 경우에는 코너가 확실히 있는지 없는지 알 수가 없다.

만약에 우리가 어떤 알고리즘이나 딥러닝 네트워크를 설게했는데, 3x3크기의 필터밖에 존재하지 않는다고 하자. 그런데 입력으로 들어오는 이미지가 자동차 사진이라고 한다면, 가까이서 찍힌 자동차 사진, 멀리서 찍힌 자동차 사진들이 있을 것이다. 우리가 위에 배웠던 것과 같이 거리가 달라지면 이미지의 스케일이 달라진다. 그렇다면 위의 곡선 그림과 같은 문제가 생긴다. 모든 스케일에 대해서 한 크기의 필터만 사용해서는 모든 스케일의 이미지에 대해서 코너를 가지고 있는지, 더 나아가서는 동일한 특징을 지니고 있는지를 검출해낼 수 없다는 것이다.

즉, 이를 해결하기 위해서는 다양한 크기의 필터를 사용하는 것이다. (딥러닝 같은 경우에는 이미지를 확대, 축소해서 다양한 scale의 이미지를 입력으로 넣어서 훈련시켜도 될 것 같다.) 그렇다면 위의 그림처럼 다양한 scale에 대해서도 대응을 할 수 있게 될 것이다.

Outer scale 과 Inner scale

scale space를 공부하다가 이해가 안가서 한참 자료를 찾아보다가, 몇 번이고 봤던, Scale-Space Theory in Computer Vision 에서 outer scale, inner scale이란 단어를 찾았다. 거의 일주일 동안 고민하다가 생각난게 있었는데, 내가 생각한게 맞는지 안맞는지 긴가민가 했는데, outer scale, inner scale이란 단어를 보고 꽤 타당하게 생각했다고 생각했다.

그렇다면 우리가 위에서 Scale에 대해서 살펴봤었는데, outer scale, inner scale이 각각 무엇인지 살펴보자.

Outer scale은 위에서 설명한 scale의 개념하고 맞아 떨어진다. 즉, 단위 면적, 이미지 내에 얼마나 많은 정보가 담겨 있는지에 대한 차이이다. 솔직히 정보라고 하는게 좀 애매할 수 있다. 왜냐하면, 한 부분에 대해서 자세하게 표현하는것도 정보가 많이 있는 것이니까 말이다. 그러므로, 여기서 정보는 얼마나 많은 객체를 포함하고 있는가를 말하려고 한다. (사실 더 멀리서 봤으면 large scale, 가까이서 봤으면 small scale인 느낌이다. 그런데, 이미지의 크기가 다른 경우가 있으므로 굳이 정보라고 언급을 한것이다.)

결국, outer scale은 단위 면적 내에 얼마나 많은 물체를 포함했느냐(멀리서 봤냐, 가까이서 봤냐, 멀리서 봤으면 large scale, 가까이서 봤으면 small scale)로 볼 수 있다. 그렇다면 small scale은 무엇일까?

[그림7] outer scale, inner scale에 관한 설명

위 [그림7]에서 다음과 같은 문장이 있다. ‘inner scale of an observation’이란 부분이 있다. 여기서 observation에 주목해보자. 여기서 observation이란 무엇일까? 개인적인 생각이지만 filtering을 할 때 쓰이는 kernel 혹은 윈도우 라고 생각한다. 예를 들어, [그림5]를 보면, outer scale이 증가하는 모습을 볼 수 있다. 그러면 [그림5]의 모든 스텝의 그림에 100x100의 윈도우를 놓고 본다고 생각해보자. 그러면 당연히 작은 이미지에 대한 윈도우가 더 많은 객체를 안에 담을 것이다. 그러므로 inner scale도 작은 이미지가 더 높게 된다. 즉 [그림5]에서는 outer scale과 inner scale의 대소 관계가 똑같다. 여기서, large, small은 상대적인 개념이므로 절대적으로 large, small scale이 아니라는 점을 알고 염두에 두면서 보자.

그렇다면, inner scale을 더 고려해야 할 때가 있는데 어느 때일까? 바로 Gaussian blurring을 수행할 때이다. 이것은 scale space에서도 다루는 개념인데, scale space를 만들 때, 같은 이미지에 대해서 계속해서 blurring을 수행한다.이 때, scale값이 높아진다고 하는데, 이 때 바로 높아지는게 inner scale이 증가하는 것이다. 3x3 gaussian kernel을 가지고 convolution을 한다고 생각해보자. convolution후 이미지에서 똑같이 3x3 영역은 그 전의 3x3영역보다 더 많은 영역의 정보를 담고 있을 것이다(전 이미지의 5x5의 영역이다.) 이것은 간단하게 생각해 볼 수 있는데, convolution후 3x3영역이 이전 이미지로부터 어떻게 나오는지 생각해보면 된다. 이전 이미지의 5x5영역이 convolution 후 3x3영역이 된다. 즉 똑같인 3x3 크기의 윈도우로 convolution후 더 많은 영역을 보게 된 것이므로, inner scale이 증가하게 된다.

[그림8] scale space 구성

[그림8]은 scale space를 구성할 때 모습이다. [그림8]에서 scale은 inner scale을 의미한다. operation을 보면 한 이미지에 계속해서 같은 분산을 가진 가우시안 커널로 블러링을 해나가는 과정임을 알 수 있다. 블러링연산 즉, 컨볼루션 연산을 함에따라 위에서 설명한 이유로 인하여 스케일이 계속해서 커지는 모습을 볼 수 있다. 이 때, 여기서 노란색과, 하늘색 원에 주목하자. 동일한 가우시안 필터에 대해서, 이미지 크기가 동일할 때에는 $1^2$인데, 이미지의 크기를 두 배 줄이는 subsampling 이후에는 $2^2$으로 늘어났다. 이것은 즉, 이미지의 크기가 4배(가로, 세로로는 2배씩) 줄어들었기 때문이다. 즉, outer scale이 두 배 증가 했기 때문이다.

(위 표에서 octave가 늘어날 때, sacle이 이전과 그대로인 모습을 볼 수 있는데 이것은, Gaussian blurring을 통해서, 이미지가 상당 수준 blurring되었기 때문에, sampling되는 부분이 없어도, 원래 image를 다시 interpolation하여 재구성하기에 매우매우 충분한 정보를 가진다. 즉, 원래 이미지에서 9x9영역을 보는것과, 축소된 이미지에서 3x3영역을 보는것의 inner scale이 동일하게 된다. 그러므로 inner scale은 증가하지 않는다.)

Comment  Read more

Signals and Systems-8. 고속 푸리에 변환(FFT Fast Fourier Transform)&웨이블렛 변환(Wavelet Transform)

|

1. 고속 푸리에 변환(FFT : Fast Fourier Transform)

지난 번에 DFT Matrix에 대해서 살펴봤었다. DFT Matrix는 하나도 0인 부분이 없기 때문에 Matrix가 dense하다. 선형대수학에서 Sparse Matrix라고 배웠었다. 행렬의 많은 영역이 0으로 채워져있는 행렬을 의미한다. 0인 부분이 있기 때문에, 구현 할 때, 이러한 부분을 지나치면서 연산을 수행하여 연산시간을 많이 줄일 수 있다. 그렇다면 DFT Matrix를 Sparse한 matrix의 곱으로 표현할 수 있다면 연산시간을 줄일 수 있을까? 라는 생각에서 나온게 FFT이다. FFT를 사용하면 시간이 $O(N^2)$에서 $O(nlogn)$으로 줄어든다.

2. 웨이블렛 변환(Wavelet Transform)

푸리에 변환후 그래프를 보면, 시간과 amplitude의 축으로 표현된 모습을 볼 수 있다. 이 뜻은 즉, 시간에 대한 정보를 잃어버린다는 것이다. 전체 신호를 봤을 때, 어떤 주파수가 어느정도 쓰였는지는 파악이 가능하지만, 이 신호의 t시간에 어떤 주파수가 어느정도 쓰였는지에 대한 정보는 알 수 없는 것이다. 이러한 시간에 대한 정보도 알 수 있도록 고안된 아이디어가 웨이블렛 변환이다. 참고링크1 참고링크2

참고링크1에서 시간분해능, 주파수분해능을 논하고, 윈도우에 따른, STFT의 예제가 참고링크2에 나온다. 참고링크2에서 3차원으로 푸리에변환의 그래프가 겹쳐나오는 모습이 마치 라플라스 변환에서 얘기했던것과 비슷한데, 나중에 어떤 연관이 있는지 알면 좋을것 같다.

STFT(Short Time Fourier Transform)에서 윈도우가 뜻하는 것은, 시간을 얼마나 크게두고 관측할지, 작게두고 관측할지의 기준이라고 얘기했다. 시간을 크게 둔다면, 짧은 시간동안 관측하는 것보다, 다양하게 변하는 신호를 관측할 수 있을 것이다. 다양하게 변하는 신호는 다양한 주파수로 구성이 되있을 것이므로, 어떤 주파수가 신호에 있는지 관측될 것이다. 그리고 시간을 작게둔다면 이와 반대로, 짧은 신호이므로, 이 신호를 구성하는 주파수의 다양성은 줄어듦으로, 관측되는 주파수의 범위는 줄어들게 될 것이다.

n차함수를 생각해보자, 그리고 x축이 점점 줄어든다고 생각해보자. 그러면 n차함수는 처음에는 아주 구불구불한 모습이었겠 지만, x축이 점점 줄어들면서 그냥 단순한 직선에 가까워 질 것이다. 구불구불한 모양을 표현하기 위해서는 다양한 주파수가 필요하고, 단순한 직선및 선을 표현하기 위해서는 몇 개의 주파수만 존재하면 될 것이다. 그렇기 때문에, 시간분해능을 높히면, 단순하게 몇 개의 주파수 밖에 관측이 되지 않기 때문에, 주파수분해능이 낮아지는 것이고, 주파수분해능을 높히면, 구불구불한 신호를 표현하기 위해서 주파수의 다양성은 높아지지만, 그만큼 시간을 많이보는 것이기 때문에, 특정 시간을 단정짓지 못하기 때문에, 시간분해능이 떨어지는 것이다.

이것을 해결하기 위해서 나온게 Wavelet Transform 이다. wavelet transform에 대해서도 추후에 알아보도록 할 에정이다. 오늘은 어떤 개념인지 짚고 넘어가려고 한다.

Comment  Read more

Signals and Systems-7. 라플라스 변환(Laplace Transform)

|

1. 라플라스 변환(Laplace Transform)

Comment  Read more

Signals and Systems-6. 이산 푸리에 변환(Discrete Fourier Transform) 및 변환행렬

|

1. 이산 푸리에 변환(Discrete Fourier Transform)

2. 이산 푸리에 변환행렬(Discrete Fourier Transform Matrix)

Comment  Read more