IJRR 2007
Pressgout, Marchand @ IRISA, INRIA

edge + texture 최종판 (?)
작성 내용이 날아간 듯 ㅠㅜ
다음에 보충하겠음
ISMAR 2004
EPFL
CVPR, PAMI, 그리고 ISMAR 2004

3. Considering multiple hypotheses when tracking edges
결국 MH를 위해 min을 사용한 것. Fraunhofer 애들은 이 아이디어를 기반으로 한 것임.
mixture of Gaussian보다 min을 쓰는 것이 좋다고 주장.
MoG는 두 개 이상의 peaks가 합쳐져서 정확성이 떨어질 수 있고, 이럴 경우 하나의 peak보다 더 weight가 커지므로 더 선택받을 확률이 높아져서 역시 잘못된 hypothesis가 선택되는 단점이 있다.
참고로 Fraunhofer에서 사용한 MoG는 visual state update를 위한 것.
비록 edge point tracking 레벨에서 MH가 가능하다고 해도, contron points가 아예 occlusion된 상황에서는 robust M-estimator에 의존할 수 밖에 없는데, M-estimator란 것이 에러의 영향을 줄일 순 있어도 RANSAC처럼 아예 배제할 순 없다. → 에러 크기 + 군집 상태 등을 이용해서 explicit occlusion reasoning을 해야 함.

4. Integration (with texture tracking)
MH edge tracking은 3장에서 설명했고,
texture tracking은,
Harris interest points를 t-1 프레임에서 추출한 후, t 프레임에서 match (구체적 언급은 없지만 PyramidLK일 듯).
이 matches를 가지고 transfer function (결국 homography)을 최적화함.
H - P의 상호 변환(?) 방법은 소개되지 않음.

ISMAR 2005
Dept. of virtual and augmented reality, Fraunhofer IGD, Germany

Algorithm Outline
  1. for every line
    1. determine the number n of sample points
    2. visibility test (GL_OCCLUSION_TEST_HP)
    3. for visible points Vi,
      1. projection
      2. gradient maxima > thr. → possible edge points
      3. possible edge points에 대해, the most probable edge property와의 similarity를 계산.
  2. the highest similarity를 가진 gradient maximum을 채택. mimimize. (3.1. single hypothesis)
  3. g개의 most significant gradient maxima를 추가하여 다시 minimize. (3.2 multiple hypotheses)
    가장 작은 distance를 가진 gradient maximum을 사용.
    처음부터 MH를 쓰지 않는 것은 수렴성 때문인 것같다. 아무래도 unstable하겠지?
  4. visual state를 update.
비교
역시 상대 비교 없음.
Ma: signle hypothesis,
Mb: multiple hypotheses,
Mc: uses only the most likely hypotheses with regard to the previous measurements - still has problems if other edges are near the line to be tracked.
Md: all
참고로 Mc는 adaptive하게 edge property를 개선하는 것. Md는 이를 위해 mixture of Gaussian을 사용하는 것이 차이.
사실 3.3은 뭔 소린지 잘...
Mb만 쓸 때 카메라 모션이 크면 pose에 딜레이가 생긴다는데, 잔상 때문일까?

결론
continuously learning the visual properties of edges 이게 내세울 점인 듯.
논문 읽기가 정확히 한 달 딜레이되고 있군. ㅠㅜ


JVRB 2007
Dept. of virtual and augmented reality, Fraunhofer IGD, Germany
ISMAR의 확장판인 줄 알았는데, ISMAR가 더 내용이 많다. ISMAR 첫번째 저자(Blesser)가 빠졌다.

Algorithm Outline
Our implementation is based on the approach of [CMPC06 - D'fusion] and [VLF04 - Vacchetti ISMAR 04].
  1. If the previous frame was tracked successfully, (what if NOT?)
    1. create correspondences, by the correlation along the line perpendicular to the regarded edge,
      (이 correlation 계산이 명확하지 않다. 어느 섹션에 기술되어 있는지...)
      4.에서 생성한 이전 프레임의 correlation window를 가지고 correspondences를 구해서,
    2. predict camera pose by minimising the distance.
  2. Generate a new line model to the predicted camera pose.
  3. Apply the line model registration (2.2)
    (이 때 MH를 고려해 여러 개의 gradient maxima 중 distance가 가장 작은 놈이 사용된다 - 일종의 sorting 아이디어. 드디어 사용된 곳을 발견했다)
  4. Extract a 1D correlation window at every control window.
    (결국 이 correlation window로 다음 프레임의 1A 과정에서 correspondences를 찾는 것으로 보인다.) 
요컨대, 이전 프레임 patch로부터 correspondences를 계산하여 pose를 구하지만, 이것이 정확하지 않은 거다. 그래서 이 결과를 다시 edge tracking으로 refine하는 2중 구조.

비교
상대 비교 없음.
synthetic 먼저. ground truth와 비교.
T의 단위는 뭔지 알 수 없음.
R은 최대 에러가 0.15 밖에 안 돼서 오옷~ 했으나, 단위가 radian임. 즉 최대 8도 정도 에러.
결론에서 주장하듯이 pooly textured & with sharp edges일 경우 괜찮은 접근 방법일지도.
전체적으로 실망스럽지만 쓸만한 레퍼런스는 건졌다.

레퍼런스
[VLF04] Luca Vacchetti, Vincent Lepetit, and Pascal Fua, Combining Edge and Texture Information for Real-Time Accurate 3D Camera Tracking, Proceedings of International Symposium on Mixed and Augmented Reality (ISMAR), November 2004, ISBN 0-7695-2191-6, pp. 48–57.

[WVS05] Harald Wuest, Florent Vial, and Didier Stricker, Adaptive line tracking with multiple hypotheses for  augmented reality, Fourth IEEE and ACM international symposium on mixed and augmented realurn: nbn:de:0009-6-11595, ISSN 1860-2037 Journal of Virtual Reality and Broadcasting, Volume 4(2007), no. 1 ity (ISMAR), 2005, ISBN 0-7695-2459-1, pp. 62– 69.

PS.
프린트를 했지만, 그냥 모니터로 봤다. 헤비하게 볼 게 아니면 이것도 괜찮은 듯?
종이 절약...은 둘째 치고, 형광펜 정보를 저장할 수 있으니.

ezplot으로 함수 그래프 그리기

학술 2010. 1. 13. 11:24 Posted by 양고
함수 그래프 하나 보자고 인덱스 만들고 난리치다가 간단한 방법이 있을 것 같아서 검색해봤다.
Yongwan Lee's Blog (http://ywlee.tistory.com/15)에서 MATLAB의 'ezplot' 명령에 대한 설명을 찾을 수 있었다.

그리고자 하는 함수는 M-estimator의 하나인 Geman-McClure 함수를 살짝 변형한 것이었는데, 다음 한 줄의 코드로 그래프를 그려 확인할 수 있다.

ezplot('w = 1 - (d/1000)^2/(1+(d/1000)^2)', [0 10000 0 1])



이걸 distance weight로 써야지~!
ISMAR 2006
Dept. of virtual and augmented reality (ㄷㄷ;), Fraunhofer IGD, Germany
JVRB에서도 봤던 논문. 나중에 JVRB 버전으로 이틀 더 추가해야지... 그래서 ISMAR 껀 대충 보기로 함. 그런데 MATRIS 관련 논문들은 하나같이 매우 복잡하다. model-based tracking에 SFM에 EKF까지 (근데 MATRIS 관련 논문들이 서로 비슷하긴 하다).

Model initialization
semi-automatic: a rough camera pose has to be given - the user has to move the camera until the projected line model is close to the appropriate object in the image.
line model은 다음과 같은 방법으로 얻어진다:
모델을 렌더링한 z-buffer 이미지를 2×2 Laplacian filter mask와 convolve해서 Canny 비슷한 에지를 추출.

Multiresolution feature tracking
based on Zinßer[DAGM 2004], where a brightness corrected affine (small patch이므로 affine으로 충분하다고) warped template patch is used to track a feature point.
→ 지금 보니 PTAM이나 Wagner랑 똑같네? (2010.8.28)


TPAMI 2002
Drummond and Cipolla, Cambridge

개요
initialization: 역시 rough hand initialization. 거의 모든 페이퍼가 automatic initialization을 future work로 꼽고 있다는...
edge tracking의 장점:
1. edges are strong enough
2. takes advantage of the aperture problem - limited to 1D search. 라고 하는데, 그보다는 꼭 corner가 아니라도 사용할 수 있으니까 more features can be used 이런 얘기를 해야 하지 않을까?

projection: measurement vector → the subspace (안드로메다로... -.-)
The system projects this m-dimensional measurement vector onto the six-dimensional subspace corresponding to Euclidean transformations. (m = 400개로 edges를 샘플링)

우선, 변수 이해
ξ    sample index (m = 400까지)
i    group generator index

This subspace is given by the f_ξi  which describe the magnitude of the edge normal motion that would be observed in the image at the ξth sample point for the ith group generator. 
These can be considered as a set of six m-dimensional vectors which describe the motion in the image for each of the six modes (=basis?) of Euclidean transformation.

f_ξi 는 (6)처럼 tx,ty,tz,rx,ry,rz에 의한 edge sample points의 변화량(?)이라고 볼 때,
결국 (14)를 minimize하는 coefficients의 solution인 β_i  = α_i 를 구하는 것이 최종 목적이다.

(14)    S = sum_ξ (d_i - β_i f_ξi )^2  →  minimize
따라서 ∂S/∂β_i = 0    (15)-(17)

Robustness
substitute a robust M-estimator for the least-squares estimator by replacing the objective function with one that applies less weighting to outlying measurements.
This approach is known as iterative reweighted least squares (IRLS) since s depends on d, which changes with each iteration.

online camera calibation
online camera calibration이 가능. (Fig.10)
skew = 0. four parameters: f, a, u, v
This creates four new vector fields, L_i, (7 <= i <= 10).
Convergence is fast, taking only 5-10 iterations.    (웬 iteration이지? 원래 iterative하게 푸는 건가!?)
ill-conditioned (degenerate) configurations: single plane parallel to the image plane
ill-condition 상황을 피하기 위해, well-conditioned 상황에서 먼저 calibration하고, 나머지는 parameter 고정.

기타
visual servoing system에 적용, results를 보임.
3장 complex configurations는 별로 가져다 쓸 것도 없고, 스킵.

levmar에서 Jacobian 문제

학술 2009. 12. 30. 17:37 Posted by 양고

(Jacobian, F : RnRm, from wikipedia)

Levmar에서 Jacobian 사용 가능성 검토.

# parameters = m

# measurements = n
(위의 J와는 m,n이 반대인 듯)

void (*jacf)(double *p, double *j, int m, int n, void *adata) 함수는 j (n×m) 을 계산해서 채워야 함.

 

Levmar의 예제 rosenbrock ros()에서는 모든 measurements x에 대해 똑같은 값을 리턴하고 있다.

Jacobian jac()에서는 jac[0,2], jac[1,3]이 각각 같은 값으로 채워짐.
 
(Rosenbrock function, from wikipedia)

 

[오늘의 해결책]

Measurements를 무시하면 된다.

cost function 값 자체를 measurement로 취급하면 됨 (n=1).

Jacobian m×1로, derivative 값을 채워주면 될 것임.

이로써 levmar에 대한 좀 더 직접적인 컨트롤이 가능.

지난 번 고민했던 weighted least squares 문제도 해결 가능!!

물론 실험은 안 해 봤다. ㅜㅠ


dlevmar_der() 주석에는 다음과 같이 analytic Jacobian이 필요한 것처럼 기술돼 있지만, 간단하게 evaluation할 수 있다면 꼭 analytic일 필요는 없겠다.

An analytic Jacobian is required. In case the latter is unavailable or expensive to compute, use dlevmar_dif() below.


추가
measurement vector만 NULL로 넣어주면 된다고 하지만, n := 0으로 넣으면 # unknown params > # measurements라 계산할 수 없다고 나온다.
n := m으로 넣고 hx[0]만 계산하고 나머지 hx들은 0으로 채우면 된다.

[12.10-11] 3D SSD tracking with estimated 3D planes

학술 2009. 12. 29. 18:29 Posted by 양고

IVC 2009
Univ. Alberta, INRIA
2005.11 제출, 2006.8 수정 제출, 2006.10 통과. 빠르진 않지만 그렇게 나쁘진 않은 듯.

내용
initialization: SFM with the first 100 frames
warped image와 template을 비교, 최소화할 식을 정의하고 (5), 이를 Taylor 시리즈로 linearize한다 (즉 둘째 항까지). 결국 overdetermined linear equation system.
이 과정에서 image derivatives (또는 derivative images) M이 사용되는데, 이것은 Lucas-Kanade 등에서도 동일한 과정인지 확인할 필요가 있을 듯.
4장은 실제 warp W를 계산하기 위한 내용. W(x;u(p)) = Hx (15) 로 warp는 결국 homography임.
4.2 Plane defined through four control points가 perform best하는 configuration인데, 최종적으로 A(p)u = B(p) (18) 식으로 linear하게 구할 수 있다(고 한다). u는 warp parameters로서, H를 구성함. 솔직히 4장은 잘 모르겠다!
5장은 SFM인데, 내가 가려는 방향과 달라서 스킵 -.-

결과
기껏 2D SSD tracking과 비교. 그런데 2D의 경우 global 3d scene tracking이 아니라 각각의 이미지 패치를 그냥 추적한 것 같다. Fig.5의 1행 2열 그림을 보면 알 수 있음.
위로부터 SSD (2D), SSD+PL, SSD+PLCT, SSD+3DPT (섹션 4.2)


[12.9] Robust feature matching in 2.3us

학술 2009. 12. 23. 17:50 Posted by 양고
CVPRW 2009
Taylor, Rosten, Drummond (Cambridge)
보잉사에서 왜 이런 과제를 줬을까?

내용
기본은 SSD와 같은 patch 비교이며, sparse하게 8x8 샘플링. small viewpoint change에 대비하여 intensity histogram을 사용한다.
결국 여러 viewpoints에 대하여 특정 intensity(5개로 양자화)가 많이 등장하는지 아닌지를 분석하여 0 또는 1로 저장한다.
각 feature에 대하여, 64 sample points x 5 bits/point + 4 bytes for position = 44 bytes 소요.
이를 36 rotations for large viewpoint changes x 7 scales = 252 bins에 대해 계산하여 db에 저장하여, 나중에 target patch와 비교한다.
feature detection에는 Rosten, Drummond가 ECCV 2006에 제안한 FAST라는 것을 사용.
실험은 PROSAC을 사용한 homography estimation에 의한 planar target tracking.

감상
2.3us라는 임팩트있는 제목에 비해 내용은 사사로운(?) 테크닉의 나열이다.
invariant한 feature를 포기하고 결국 모든 viewpoint에 대해 DB를 구축했다는 것 아닌가?
수식도 없이 말로만 지지부진하게 나가는 논문을 힘겹게 읽었더니 실망~~
논문에 소개된 Ferns라는 테크닉에 오히려 관심이... --> ten lines of code. 관심 사멸.