Post

컴퓨터비전(9) - corner(2)

uniqueness

image에서 특징을 찾았는데, 좋은 feature이라는 것은 무엇인가요? 바로 unique하다면 좋은 특징일 것 같습니다. 그렇다면 어떻게 unique함을 정의하는지에 대해 알아봅시다.

작은 window를 통해 pixel을 바라본다고 가정합시다. window를 움직이면서 전체 image를 보는데, 단위 이동당 변화가 많이 없다면 그냥 주변과 잘 어우러진 그냥 그저 그런곳이라고 생각할 수 있습니다. 하지만 단위 이동당 변화가 많다면? 이는 뭔가 feature를 나타내기 적합하다는 것이죠.

Harris operator - corner detection

image

첫 번째 그림은 상하좌우로 움직여도 비슷하고, 두 번째 그림은 좌우로 움직이면 조금씩 변합니다. 이는 edge라고 예전 포스팅에서 이야기했습니다. 세 번째 그림은 corner입니다. 이는 모든 방향에서 window를 통해 본 이미지가 다 바뀝니다.

그렇다면 window를 조금씩 움직여서 window에 맺히는 image를 가지고 unique한 feature를 찾자는 것이 이제 주된 이슈가 됩니다!

(u,v)만큼 window가 이동하고, E(u,v)를 아래와 같이 정의합니다. 이를 SSD error라고 부릅니다. 우리의 목적은 SSD error가 가장 큰 곳을 찾는 것입니다. 왜냐하면 이는 단위 이동(u,v)만큼 움직였을 때, 가장 많이 이미지가 바뀌는 곳이기 때문입니다.

image

ssd error - approximate

하지만 이는 하나의 image가 n x n size고, window의 size가 m x m 이라고 가정하면 계산 시, (n*m)^2의 시간 복잡도가 필요합니다. 이는 조금 비효율적이죠. 변화량을 체크하는 것이니, 잘 근사를 해봅시다. 테일러 급수를 활용하면,

image

아래와 같이 식을 전개할 수 있습니다. (u,v)가 매우 작다는 가정 하에, 마지막 상수 부분을 무시할 수 있습니다.

image

최종적으로 SSD error는 아래 식과 같이 쓸 수 있습니다.

image image

이 식 뭔가 행렬로 표현하면 좀 쉽게 표현할 수 있을 것 같습니다.

image

만약 내가 horizontal edge 위에 놓여있다면, x축으로의 변화량은 0입니다.

image

만약 내가 vectical edge 위에 놓여있다면, y축으로의 변화량은 0입니다.

image

즉, 이제 따로따로 계산을 할 수 있게 되었다는 의미입니다. 선형식으로 고쳤어요.

eigen vector

타원방정식을 사용해서 , x max는 가장 큰 변화량, x min은 가장 작은 변화량. 그 때 람다값이 매핑됨.

코너라는 것은 edge위에 있는데, 결국 edge를 따라 가야함. 따라서 x min에 매핑되는 람다min이 제일 중요하다.

공식에 의해 어쩌고 계산 ..

harris operator

근데 어려움 -> harris operator를 가지고 근사

window에 가중치를 두어서 함!

image

Second moment matrix

1
2
3
4
5
1) image 미분
2) ix2 iy2 ixiy 찾기
3) 이를 가우시안 필터를 적용함 -> window에 가우시안 필터를 사용했으니 ix iy ixiy도 가우시안 필터가 적용되어야함
4) eigenvalue를 찾음 
5) Non-maxima suppression 통해서 얇게 만든다. 이는 하나 찾고, grad 방향으로 이동해서 거기서 max값만 남기고 나머지 0으로 만듦.

이상한 케이스도 많아서 복잡하다!

This post is licensed under CC BY 4.0 by the author.