이미지 Labeling 알고리즘(fu chang)

컴퓨터비전/영상처리 2015. 5. 23. 17:50

현재까지 가장 빠른 레이블링 알고리즘은 중국 교수 Chang, Fu가 2004년에 쓴 논문

Chang, Fu, Chun-Jen Chen, and Chi-Jen Lu. "A linear-time component-labeling algorithm using contour tracing technique."computer vision and image understanding 93.2 (2004): 206-220.

입니다. 4-연결, 8-연결 레이블링과는 다르게 한번의 탐색으로 이미지의 연결성을 검사해 레이블링 합니다.


 위 논문의 레이블링 방법은 크게 4방법으로 소개하고 있습니다.

기본적으로 레이블 순서는 위에서 오른쪽 방향으로 탐색하며 이진 이미지를 대상으로 수행합니다.


 첫번째로 Figure1.a의 경우 탐색중에 색인되지않은 픽셀을 만나면 외곽선을 추적(시계방향)합니다. 

외곽선 탐색 한 이후로 다시 A픽셀로 돌아오면 외곽선 탐색을 종료합니다. 외곽선 탐색시 모두 A픽셀과 같은 레이블 번호로 지정합니다.

 두번째 사진 Figure1.b를 보면 외곽선을 추적하다 보면 같은 줄 안에 비어있는 홀을 확인할 수 있습니다. 

B 까지 A'와 같은 레이블 번호를 할당하고, 이때 B를 안쪽 외곽선으로 지정하고안쪽 외곽선 또한 같은 레이블 번호로 지정합니다.(안쪽 영역 외곽선 추적)

Figure1.c을 보면 내부 외과선 추적시 반시계 방향으로 추적합니다. 이때 Figure1.d와 같이 검정 픽셀을 오른쪽 방향

으로 탐색할 경우 B'와 같은 레이블 번호를 할당합니다.









Optical Flow(옵티컬 플로우)

컴퓨터비전/영상처리 2015. 5. 23. 15:34

Optical Flow 루카스-카나데(LK) 알고리즘





Optical Flow중 가장 많이 사용하는 루카스-카나데 알고리즘에 대해 정리합니다.


루카스 카나데 알고리즘은 3가지 가정을 기초로 구성되어 있습니다.


1. 밝기 항상성 : 어떤 객체 상의 픽셀은 프레임이 바뀌어도 그 값이 변하지 않는다.

2. 시간 지속성 : 영상 내에서의 움직임은 빠르지 않다. 즉, 영상에서의 객체 움직임에 비하여 시간 변화가

                  더 빨리 진행된다.(연속된 프레임 상에서 보면 이동량이 크지 않다는 것을 의미)

3. 공간 일관성 : 공간적으로 인접한 객체는 동일 객체일 확률이 높다.


 한가지씩 살펴보면, 첫번째로 밝기 항상성은 추적되고 있는 영역 안의 픽셀들은 시간이 지나도 그 값이 일정함을 

나타내며, 이를 다음과 같은 수식으로 나타낼 수 있습니다.



밝기 값은 시간이 지나도 변하지 않는것을 의미합니다.



 두 번째, 시간 지속성은 프레임 사이의 움직임이 작다는 것을 의미합니다. 변화는 시간에 비한 밝기값의 미분이라고 

볼 수 있는데 연속적인 프레임 상에서의 변화는 매우 작다고 가정하는 것입니다.


1차원 공간에서의 경우를 생각해 보면






 위 그림에서 1차원의 경우 움직임 속도는 시간축 미분(시간의 변화량) It와 x축에 대한 미분(공간의 변화량) Ix를 갖고



으로 구할 수 있습니다.




 위 그림은 옵티컬 플로우 수식에 대한 또 다른 관점을 볼 수 있습니다. 앞에서 제시한 가정이 상항 맞는것은 아닙니다.

만약 객체의 움직임에 비해 카메라 촬영 시간이 느릴 경우도 있으므로 반복으로 정확한 해를 구할 수 있습니다. 위 그림

의 경우 추정된 속도를 시작점으로 하여 반복 연산을 수행하여 정확한 해를 구합니다. 밝기 항상성 가정으로 인해 x축 

방향으로의 공간 미분값은 첫 번째 프레임에서 계산된 값이 그대로 유지됩니다.(재 계산을 줄여 속도 향상)

시간축으로의 미분값은 매 프레임에서 매번 다시 계산해야 합니다. 그러나 만약 충분히 비슷한 값에서 시작 할  경우 

대략 5번 정도의 반복이라면 정확한 해를 구할 수 있습니다. 이 방법을 뉴턴방법(Newton's method)라고 부릅니다. 만약

첫 번째 측정이 충분히 유사하지 않으면, 뉴턴 방법은 발산합니다.


 위의 경우 1차원의 문제에 대한 해석이미만, 2차원 영상에서의 문제로 확장해 보면 단순히 y축을 추가하는것 만으로 

해결할 수 있습니다. 

표기법을 변형시켜 y축 방향으로의 속도 성분을 v라 하고, x축 방향으로의 속도 성분을 u라고 한다면

아래와 같은 수식으로 정리 할 수 있습니다.



 하나의 픽셀에 대해서 구성되는 이 방정식은 두 개의 미지수를 가지고 있습니다. 따라서 하나의 픽셀에서 구한

측정 값으로 2차원 움직임에 대한 유일해를 구할 수 없지만, 선형 방정식에 의해 기술되는 직선에 대해 수직 또는 

법선 방향의 움직임 성분을 구할 수 있습니다.












SURF(Speed-Up Robust Features)

컴퓨터비전/영상처리 2015. 5. 19. 18:02

SURF는 2008년 Herbert Bay가 제안한 방법입니다.


[Bay 08] Bay, Herbert, et al. "Speeded-up robust features (SURF)." Computer vision and image understanding 110.3 (2008): 346-359.


2004년 SIFT의 등장 이후 물체의 descriptor에 대한 관심이 높아진 이후로 많은 연구가 있었습니다.

SIFT의 최대 단점인 연산의 복잡성을 해소 하기 위한 방법으로 한때 많은 관심(성능)을 보인 

SURF 기술자를 정리해 봅시다.


위 논문에서는 SIFT 외에도 다른 방법들과 비교를 했지만 SIFT 못지 않게 성능을 유지하며 계산 속도를

향상 시키고자 했습니다.


그래서 속도 향상을 위해 제안한 방법을 요약하면 크게 총 3가지로 정리할 수 있습니다.


1. Integral Image(적분 이미지) 이용

 SURF에서는 SIFT와는 다르게 적분 영상을 사용하여 관심점과 영역을 찾습니다. 관심점 계산을 위해 

고속 헤시안 검출(Fast Hessian Detector)를 사용하는데, 이때 적분 영상을 사용합니다.


적분 영상이란 말 그대로 영상을 적분하는것을 말합니다.

적분이란? 고등학교 학생 때의 기억을 더듬어 보면 어떤 영역의 넓이를 구했던 것을 생각해 볼 수 있습니다.

그렇다면 영상의 적분이란 영상이 갖는 영역의 넓이(밝기의 합)을 구하는 것을 추론할 수 있습니다.


영상의 밝기의 합은 그냥 선형으로 영역을 계산하면 되지 않을까 생각하기 쉽지만 많은 영역을

n^2으로 계산하면 연산속도가 매우 느립니다. 따라서 적분 영상을 처음에 하나 만들어 두고 영상의 부분합을

구하면 빠른 속도로 계산할 수 있습니다.


그렇다면 영상의 Integral Image는 어떻게 계산할까요?

아래 그림을 보면 한눈에 이해 할 수 있습니다.



위 그림의 왼쪽 이미지는 기존 이미지를 의미하고, 오른쪽은 적분 이미지를 의미합니다.

적분 이미지는 (0,0)부터 현재 좌표점까지의 밝기값의 누적으로 계산할 수 있습니다.

만약 (1,1)를 구할때는 (0,0) + (0,1) + (1,0) + (1,1)의 총합을 (1,1)에 저장하면 됩니다.


영상의 적분 이미지를 생성해 두고 영상의 부분 합을 계한하려고 하면 

D = D + A - B - C



3번의 더하기 빼기로 영역의 밝기 부분합을 구할 수 있습니다.



빨강 부분에 관한 합을 적분 부분합 식을 이용하면

 D = 21 + 4 - 11 - 11 = 3 

를 빠른 속도로 계산할 수 있습니다.


2. 축소한 detector와 descriptor를 사용하여 빠른 (차원수 축소)

 관심점을 계산하기 위해 SURF는 헤시안(Hessian) 행렬을 사용합니다.

논문에서는 정확성이 좋고 determinant가 최대값인 위치의 blob 구조를 검출하기 위해서라고 나와 있습니다.


[그림출처 : http://www.quora.com/What-are-the-benefits-of-calculating-the-eigenvector-of-a-Hessian-matrix-in-image-processing]


 만약 determinant(행렬식)가 음수이고 eigenvalue가 서로 다른 부호이면 해당 좌표는 관심점이 아니고

determinant가 양수이고, eigenvalue가 둘 다 음수 혹은 양수이면 해당 좌표는 관심점으로 판단합니다.

SURF의 경우 2차 미분을 Gaussian을 사용하는데, Scale-space를 분석하는데 가우시안이 가장 최적이라고

판단하여 사용함을 논문에 명시하였습니다. 따라서 x,y,xy에 대한 헤시안 행렬을 계산하면 관심점(Interest Point)

로 판단합니다.


또한 가우시안 분포 헤시안 행렬을 계산할때 계산을 좀 더 단순화 시키기 위해 근사화한 Dxx와 Dyy 박스필터를 

사용합니다.



 위 사진과 같이 근사화한 박스 필터를 사용하므로써 적분이미지 계산으로 영역의 넓이를 빠르게 구하고 

한 넓이로 헤시안 행렬을 계산해 관심점을 판단합니다.



논문에서 weight값은 0.9를 사용했습니다. 


 SURF도 스케일에 robust하기 위해 SIFT와 비슷하게 여러 스케일에서 관심점을 추출합니다. 

아래 그림을 보면 SIFT 필터 사이즈를 고정시키고, 이미지 사이즈를 줄여 관심점을 검출하는 반면, 

SURF는 SIFT와는 반대로 이미지 스케일을 고정시키고 필터 사이즈를 키워가며 관심점을 추출합니다.



SIFT와 다른 차이점을 둔 이유는 계산의 효율성 때문일 것 같습니다. 적분 이미지를 사용하기 때문에

위치를 변경하는것 만으로 필터 사이즈를 조절할 수 있기 때문입니다. 또한 down sampling하지 않기 

때문에 aliasing이 없는 장점이 있습니다.(scale invariance 가 제한적일 수 있음 - 단점)


아래 그림을 보면 3계의 옥타브가 있고 점점 스케일이 증가하는것을 확인할 수 있습니다. 

옥타브가 증가하면 필터 사이즈가 2배로 증가하는 것을 볼 수 있습니다.

(논문에서는 하나의 옥타브에 4번 scale up)


 

 선정한 관심점을 비 최대치 억제(non maximum suppression)을 통해 크기 공간에 대한 극대값(검출된 관심점)

을 선정합니다. 또한 이 극대값에 대해 보간법을 적용하여 보간된 관심점을 특징 벡터로 저장하여 사용합니다.

(Sub-Pixel로 보간)



 최종 보간된 관심점을 중심으로 6s(scale)의 원 안에 있는 이웃들에 관해 x, y 방향의 Haar wavelet response를 

계산합니다. 오른쪽 원 안의 파란 점이 response값의 분포입니다. 그리고 빨간 화살표는 부채꼴 모양 안의 영역에 있는

response의 합을 벡터로 표현한 것입니다. 60도 크기의 window를 슬라이딩 하면서 x,y축의 response의 합을 계산해서

벡터를 생성시키고 벡터 길이가 가장 긴 것이 orientation으로 할당됩니다.

이때 Haar wavelet filter를 이용하기 때문에 적분 이미지의 장점을 적용할 수 있습니다.(빠른 계산)



 위 그림을 보면 descriptor를 생성하기 위해 관심점 주위 20scale 크기의 window를 구성해 이미지를 회전에 

invariant 하기 위해 회전시킨 뒤 계산합니다. 이때 앞에서 구한 orientation를 활용하면 됩니다.

또한 descriptor window를 4×4로 나눈뒤, 나눠진 구역은 5×5 haar wavelet로 구성합니다.



 논문에서는 또한 contrast에 invariant하다는 것을 보여주기 위해 단순히 x, y 축에 대한 response값을 

합한 것이 아니라, 각 값에 대한 절대값을 합하여 contrast에 강하다는것을 증명하고 있습니다.


3. Contrast를 이용한 빠른 매칭

 hessian 행렬을 계산한 라플라시안 부호를 비교해 간단히 매칭을 시도합니다.(부호 비교)