Vector of Locally Aggregated Descriptors (VLAD) 소개
2023.03.14
VLAD는 BOF 기반(BoVW) 방법론들을 개선하여 더 적은 연산과 메모리 사용량으로 높은 성능을 낼 수 있는 handcrafted feature descriptor 생성 방법으로, Aggregating local descriptors into a compact image representation라는 논문에서 소개되었다. 이전 BOF 기반 방법과 유사하면서도, Histogram을 이용하지 않고 SIFT 등으로 뽑아낸 descriptor vector를 누적하는 방법을 사용하여 성능이 향상되었다. VLAD를 소개한 논문에서는 이외에도 quantization 등의 방법을 통해 연산량과 메모리 사용량까지 줄였는데, 이번 글에서는 VLAD를 통한 이미지의 표현 방법에 집중해보겠다. Extracting Loca..
Bag of Visual Words는 딥러닝 이전 컴퓨터 비전 분야에서 흔히 활용되던, handcrafted feature 기반 방법론이다. 원래 NLP 분야에서 활용되던 Bag of Words(BoG) 기법에서 영감을 받은 방법인데, 이해가 쉬워서 먼저 NLP의 원조 BoG 방법을 간단히 소개해보겠다. 예를들어, 어떤 글이 어떤 주제의 이야기를 하고 있는지 알고 싶다고 하자. 글의 단어들(Words)이 등장하는 빈도를 세어보면, 대략 어떤 이야기를 하고 있는지 유추할 수 있다. "메모리", "공간 복잡도", "컴퓨팅", "계산" 등의 단어가 높은 빈도로 등장한다면 어렵지 않게 글의 주제가 컴퓨터임을 알 수 있을 것이고, "캔버스", "유화", "구도", "추상화" 등의 단어가 자주 등장한다면 글의 주제..
이미지의 변형은 이미지의 각 픽셀을 이동시켜 이미지를 다른 형태로 변환하는 것이다. 이미지의 각 픽셀 좌표에 어떠한 변환 행렬을 곱하여 이러한 변환을 수행할 수 있다. 이미지 전체에 대해 같은 행렬을 이용한 변환을 수행하는 것을 Parametric Global Warping이라고 한다. 원본 이미지의 픽셀 좌표 p에 변형 행렬 T를 곱하여 p′로 옮기는 것이다. p′=Tp 이때, 만약 T가 linear한 변형을 수행하는 행렬이라면, p′≡Tp가 성립한다. 2x2 행렬을 이용한 변환 크기 변형 (Scaling) 이미지의 x축과 y축에 대하여, 각각 a,b의 비율로 변형을 수행한다. $$ \begin{bmatrix} x' \\ y' \end{bmatrix..
SIFT: Scale Invariant Feature Transform을 이용한 Feature Matching
2023.03.08
이전 글에서 blob 형태의 이미지 속 특징점(feature)을 추출하였다. 이제 이를 이용해서 다른 이미지와 현재 이미지를 비교도 하고, stitching도 하고 해야 하는데, 이러한 feature들의 비교와 매칭은 어떻게 수행할까? 바로 특징점들을 설명하는 descriptor가 필요한 순간이다. 이러한 descriptor들은 크기(scale), 회전(rotation), 조도(illumination) 등 다양한 변화가 가해져도 같은 특징들을 잘 기술해야 한다. Scale 극복하기 같은 물체를 촬영한 사진이더라도 촬영 환경에 따라 크기가 다르게 나올 수 있다. 이런 경우는 해결하기 어렵지 않은데, 어차피 blob의 크기를 알기 때문에 검출된 blob의 크기를 똑같이 맞춰주면 해결된다! Rotation 극..
SIFT: Scale Invariant Feature Transform 을 이용한 Blob Detection
2023.03.08
Edge, Line, Corner 검출에 이어 이번에는 blob 검출이다. blob detection은 이미지에서 특성을 추출해야 할 일이 있을 때 최근 들어 가장 흔히 쓰이는 방법이라고 한다. blob은 영어로 물방울 형태를 뜻하는 말로, 원형이라고 생각해도 되겠다. 이해를 위해 blob detection의 결과 이미지를 먼저 보자. 이미지 여기 저기에 크고 작은 원형으로 특징점이 검출된 것을 알 수 있다. Laplacian Filter Blob detection도 지금까지 해온 detection들처럼 합성곱 필터를 통해 수행된다. Blob 형태의 필터를 이용해 합성곱을 수행하면, 이미지 내에서 blob 형태의 속성이 있는 영역은 큰 값을 갖게 되고, 해당 속성이 없다면 작은 값을 출력하는 것이다. B..
지난 글에서 모서리(edge)와 직선(line)을 검출하는 것을 알아보았다. 이번에는 어떤 물체의 코너(corner)를 검출하는 법을 배워보자. Sliding Window Method 이미지에서 코너를 찾기 위해, n×n크기의 window로 이미지를 훑어가며 코너를 찾을 것이다. window가 상하좌우로 움직일 때 특정한 방향으로 움직일 때만 밝기의 변화가 있다면 edge, 모든 방향으로 움직일 때 모두 밝기 변화가 있다면 corner라 생각할 수 있다. (이미지를 참고하면 편하다.) 이를 수식으로 표현하면 다음과 같다. E(u,v)=∑(x,y)∈W(I(x+u,y+v)−I(x,y))2E(u,v)는 어떤 이미지의 (x,y)좌표에서 $(u,v..
오늘은 이미지 안에 존재하는 어떤 형태, 특히 직선을 검출하는 방법들을 배워보자. 선행 지식으로 Edge Detection을 알아야 하니 혹시 모르시는 분들은 이전 글을 참고 바란다. 이미지 안의 형태를 검출하는 Model Fitting은 다음과 같은 요소들로 구성된다. Data: Fitting을 수행할 이미지의 정보, 여기선 Edge Detection 된 결과를 사용한다. Model: Fitting하여 찾아낼 형태 정보, 직선, 곡선, 도형 등이 될 수 있다. Objective Function: Fitting 결과를 평가하기 위한 함수이다. Fitting이 진행되는 Edge Detection 결과 이미지는 다음과 같은 형태이다. 우리가 보기에야 선이나 곡선을 인지하는 것이 어렵지 않지만, 실제로는 다음..
영상의 모서리(edge)는 다음과 같은 불연속점에서 발생한다. Depth, Distance의 불연속점 Surface Orientation의 불연속점 (예를 들어, 책상 모서리처럼 평면의 각도가 변하는 부분) Surface Color의 불연속점 Illumination의 불연속점 (그림자 등) 이러한 모서리들을 검출하려면 어떻게 해야 할까? Calculating Gradient by Convolution 어떤 이미지를 좌표를 입력하면 해당 픽셀의 밝기값을 출력하는 f(x,y) 형태의 함수라 생각해 보자. 밝기값의 변화가 적은 영역은 평면, 밝기값이 불연속적인 영역은 모서리이기 때문에, 이미지를 미분하여 모서리를 찾아낼 수 있다. 예를 들어, 어떤 픽셀의 밝기값이 100인데, 한 픽셀 오른쪽으로 이동하니..
이미지에는 항상 어느 정도의 노이즈(noise)가 발생한다. 이로 인해 같은 환경에서 같은 물체를 여러 번 촬영하여도, 매번 다른 이미지가 촬영되게 된다. 필터링은 이러한 이미지의 노이즈를 제거하는데 사용된다. 노이즈 (Noise) 이미지에는 다양한 노이즈가 발생할 수 있는데, 위 이미지에 나타난 대표적인 사례들을 살펴보자. 좌측의 이미지는 원본 이미지이며, 중앙은 가우시안 노이즈, 우측은 소금과 후추(salt and pepper) 노이즈이다. 가우시안 노이즈는 이미지의 픽셀값이 정확히 저장되지 않고 부정확하게 저장되어 얼룩이 생긴 것처럼 보이게 된다. 한편 소금과 후추 노이즈는 마치 사진에 소금과 후추를 뿌린 것처럼, 특정 픽셀들이 0이나 255(즉, 검은색이나 하얀색) 값을 가지게 되는 노이즈로, 센..
핀홀 카메라 사진을 촬영하기 위해 필름을 그대로 찍고자 하는 상에 노출시키면, 상의 여러 부분에서 반사되어 온 광선(Ray)들이 무분별하게 필름의 여러 영역에 도달하여 사진을 찍을 수 없다. 그래서 상의 한 점(영역)에 반사된 광선이 필름의 한 점에만 맺히도록 핀홀 카메라 모델이 고안되었다. 3차원의 세상에 존재하는 한 점 P의 이미지 상에서의 위치 P′는 어떻게 구할까? 3D 좌표 P에서 2D 좌표 P′로의 변환은 삼각형의 닮음을 이용하여 다음과 같이 수행된다. 핀홀을 원점 O로 두고, 핀홀에서 이미지 평면에 내린 수선의 발인 광학 축(optical axis)을 설정한다. 점 P,O 그리고 광학 축이 이루는 직각 삼각형과 광학축, O,P′가 이루는 직각 삼각형의 닮음을 이용..
2D 이미지의 Projective(Homography) Transformation을 이용하면 이미지에 대한 다양한 변환을 수행할 수 있다. 기본적인 2D 시점 변환 이미지 내부에 존재하는 2D 평면을 마치 스캔한 것처럼 보이게 시점 변환을 수행해보자. 위 자판기 사진의 옆면의 각 모서리에 점을 지정하고, 해당 평면을 복원하는 변환을 수행해보겠다. (사진과 점이 정확하지 않아 약간 대충 찍은 것은 감안해주기 바란다.) y_pos = img.shape[0] x_pos = img.shape[1] original_coord = np.float32([[122, 30], [370, 0], [190, 800], [370, 960]]) warped_coord = np.float32([[0, 0], [x_pos, 0],..