Search
📝

[Vision Study] Week 2 문제 해설

링크
Category
Vision Study
Keywords
SIFT
Moment
ORB
Kernel function
Image Matching
상위 개념
하위 개념
속성
Subcategory
문제
날짜

문제 1.

객관식1. 다음은 SIFT 알고리즘에 대한 설명입니다. 다음 중 틀린 것을 모두 고르세요.
SIFT 알고리즘은 최종적으로 Keypoint Descriptor를 구하는 것이 목적이다.
→ 해당 알고리즘은 Keypoint Descriptor를 구한 뒤 Image Matching까지 하는 것이 목표다.
Scale-space extrema detection 단계에서 DoG를 활용하여 Keypoint를 얻는 과정을 거친다. 여기서 DoG는 노이즈에 민감하고 parameter가 많은 LoG를 대신하여 사용되었는데, 이는 또한 2차 미분 성질을 이용한 LoG를 근사시킨 방법이다.
문제 정정 : “노이즈에 민감하고 parameter가 많은 LoG를 대신하여” → “parameter가 많은 LoG를 대신하여”
LoG : 이미지를 Gaussian함수를 통해 Blur처리를 하여 이미지에 있는 Noise를 조금 제거를 해주고 나서 Laplacian Operator를 통해 Edge를 검출하게 된다.
Laplacian Operator
Gaussian function
LoG
그런데
여기서 σ\sigma1.6 : 1의 비율로 한 두 Blurred Image를 빼는 방법으로 연산량을 줄인 것이 DoG이다.
해당 방법으로 연산하면 LoG에 굉장히 근사하는 값을 가질 수 있기 때문에
이 방법을 사용해서 σ\sigma에 할애되는 연산 시간을 단축한다고 한다.
DoG
2번의 단계에서 한 이미지를 여러 scale로 변환한 후 특정 Point의 extrema를 통해 Keypoint를 구하게된다. 그 과정에서 여러 Scaled image 별로 Keypoint가 존재하게 되는데 각 Scaled Image는 원본 Image와 같은 Coordinate System_좌표계 를 사용하기 때문에 Keypoint의 위치를 연산 없이 원본 Image에 나타낼 수 있다.
의 연장으로 이미지 Scale 값을 다르게 한 여러 크기의 이미지를 DoG를 통해 Keypoint를 찾아내게 되는데 이때 output의 이미지들은 전부 Scale이 원본 이미지와는 다르기 때문에 각각의 좌표가 의미하는 바가 다르다
Gradient feature vector를 만들기 위해 Keypoint의 주변을 만약 32x32 window로 나눈다면 8개의 방향 정보를 담은 256차원의 feature vector를 얻을 수 있다.
위의 이미지는 하나의 point를 기준으로 16x16 Window를 상정하였고, 다시 이 Window를 4x4로 묶어서 8(orientation) x 16(window) 의 feature vector를 만들 수 있다.
여기서 Window를 단순히 32x32로 상정 하였다고해서 단순히 8x32의 feature vector를 만들 수 있는 것이 아니라 32x32의 window를 또 ?x?의 window로 묶어서 feature vector를 만들 것인지를 정해줘야 한다. 이 값에 따라 8x16 인지 8x32 인지 확정 지을 수 있다. 따라서 SubWindow의 크기를 정해줘야 한다.
SIFT Feature를 나타내는 f vector에는 scale에 대한 정보도 들어있다.
답 : 1345

문제 2 + 3.

ORB 에서는 image moment라는 개념이 나옵니다.
Image moment는 이미지 처리, 컴퓨터 비전 및 관련 분야에서 이미지 픽셀 intensities나 특정 가중 평균이며, 일반적으로 attractive feature 또는 해석을 갖도록 선택됩니다.
아래는 Image moment와 Center of mass를 구하는 공식입니다.
mpq=x,yxpyqI(x,y)m_{pq} = \sum_{x,y}^{\lfloor} {x^p y^q I(x,y)}
C=(m10m00,m01m00)C = (\frac{m_{10}} {m_{00}},\frac {m_{01}}{m_{00}})
주관식 1.
위의 식을 이용해서 아래와 같은 5x5 이미지가 있다고 할 때, 해당 이미지의 Center of mass 를 구하세요.
풀이 식을 작성해서 이미지로 첨부해주세요. Index는 1부터 5까지 증가합니다.
index
1
2
3
4
5
1
1
1
0
0
1
2
1
1
0
1
0
3
0
1
1
0
0
4
1
1
0
1
0
5
1
1
0
0
1

풀이

Center=(x,yxI(x,y)x,yI(x,y),x,yyI(x,y)x,yI(x,y))=(3112,3112)Center = (\frac {\sum_{x,y} {x I(x,y)}\newline}{\sum_{x,y}{I(x,y)}}, \frac {\sum_{x,y} {y I(x,y)}}{\sum_{x,y}{I(x,y)}}) = (\frac{31}{12},\frac{31}{12})
ORB에서 직접적으로 사용 되지는 않지만 Image moment를 centroid에 대한 가중평균을 내면 Center moment_중심 모멘트 를 구할 수 있는데 이는 다음과 같습니다.
mpq=x,y(xm10m00)p(ym01m00)qI(x,y)m_{pq} = \sum_{x,y}^{\lfloor} {(x - \frac{m_{10}} {m_{00}})^p (y - \frac{m_{01}} {m_{00}})^q I(x,y)}
또한 ORB에서는 Orientation을 구할 때 arctangent를 사용하는데 그 식은 아래와 같습니다.
θ=atan2(m01,m10)\theta = atan2(m_{01}, m_{10})
여기서 atan를 사용하지 않고 atan2 함수를 사용하는 이유는 반환 값의 범위 때문인데요, atan의 범위는 -π/2 ~ π/2이고
atan2의 범위는 -π ~ π입니다.

문제 4+5.

코드 1. 이미지 로드는 Grayscale로 진행하고 해당 이미지를 Gaussian Blur를 진행하는데 σ\sigma 파라미터 수치를 바꿔가면서 image matching을 실행해보세요. 코랩에서 실행해보고 링크를 제출해주세요.
주관식 2. 또 해당 결과를 토대로 σ\sigma가 Gaussian Distribution에서 무슨 역할을 하고,
matching 결과에 어떤 영향을 미치는지 작성해주세요.
️opencv를 활용해보세요. cv2.BFMatcher() : point 매칭기 cv2.drawMatches() : point 선으로 연결하기 ️커널의 크기는 홀수여야 합니다.
표준편차가 작을 수록 중심에 더 큰 가중치가 가해지고 값이 급변한다 클수록 더 많은 영역에 가중평균되고 더 흐리고 뿌연 결과가 나온다.