2009-08-17 3 views
2

나는 설명문과 설명에서 this video을 찾을 때까지 모두 마커 기반의 많은 AR 라이브러리/SDK/API를 보았습니다. 그는 SIFT를 사용하여 사물을 따라 다니십시오.증강 현실을 위해 SIFT 사용하기

Android 용으로해야하기 때문에 순수한 Java에서 SIFT를 완벽하게 구현해야합니다.

저는 기꺼이 하겠지만 SIFT가 어떻게 증강 현실에 먼저 사용되는지 알아야합니다.

귀하가 제공 한 정보를 이용할 수 있습니다.

답변

10

제 생각에는 휴대용 장치 용으로 SIFT을 구현하려고하면 광기입니다. SIFT는 복잡한 수학을 포함하고 확실히 많은 컴퓨팅 성능을 필요로하는 이미지 피쳐 추출 알고리즘입니다. SIFT도 특허를 받았습니다.

아직도이 작업으로 나아가고 싶다면 처음에는 상당한 연구를해야합니다. 당신은 같은 것들을 확인해야합니다 : 모든 주위에 다른 알고리즘을 포함하여, 성능을 향상 SIFT의

  • 모든 변종을
  • 나는 매우 강력하고 훨씬 더 빠른 SURF (하지만 여전히 그 무서운 중 하나를 조사하는 것이 좋습니다 것입니다 알고리즘)
  • Android NDK (나중에 설명하겠습니다)
  • 많은 출판물

왜 안드로이드 NDK 많이? Java 응용 프로그램에서 사용하는 C 라이브러리에 알고리즘을 구현하면 성능이 훨씬 향상 될 수 있습니다.

무엇이든 시작하기 전에 이미지 기능 추출 알고리즘이 안드로이드 폰에 너무 많은 것을 반쯤 깨닫는다면 그 연구 조사를해야합니다. AR 응용 프로그램을 만드는 데 사용하는 것은 물론, 좋은 결과를 제공하고 허용되는 시간 내에 실행되는 알고리즘을 구현하는 것은 심각한 노력입니다.

AR에서 사용하는 방법처럼 이미지에서 알고리즘을 실행하여 얻는 설명자가 중앙 데이터베이스에 저장된 데이터와 비교되어야합니다. 그런 다음 결과를 사용자에게 표시 할 수 있습니다. SURF에서 모아진 이미지의 특징은 이미지를 사용하여 식별 할 수있는 것과 같이 묘사됩니다. 나는 그 일을 실제로 경험하지는 않았지만 항상 웹에 자원이 있습니다. 아마도 Object Recognition과 같은 일반적인 물건으로 시작하고 싶을 것입니다.

행운 :) 최고의

+0

답변 해 주셔서 감사합니다. http://user.cs.tu-berlin.de/~nowozin/libsift/ (libsift)를 Java로 포팅하기 시작했으나 이제는 대안을 찾아야 할 것으로 생각됩니다. 그래서 나는 그것을 버려야하고 Java 또는 C++에서 SURF 구현을 찾아야한다고 생각합니다 (NDK와 함께 선택하는 경우에 대비하여). 그러나 제 질문은 AR에 사용할 수있는 방법입니다. –

+0

당신을 위해 더 많은 정보를 추가했습니다 :) – alkar

2

만약 당신이, 내가 말한대로, 자사의 위키 페이지가 좋은 쿠 차이즈 설명을 제공하고, 이상합니다 (SIFT 기능의 작동 방식 (왜)에보고 싶은데 I 세부 사항은 위키 백과에서 링크 된 과학 논문을 확인한 다음 자신의 취향에 맞는 변형을 작성하십시오. 즉, 애플리케이션에 필요한 성능과 CPU로드간에 최적의 균형을 유지해야합니다.

예를 들어, Gaussian smoothing이 좀 더 빠른 smoothing 방법으로 대체 될 수 있다고 생각합니다.

또한 변형을 구축 할 때 특허권과 관련이 없습니다 (이미 GLOH와 같이 많은 변형이 있습니다).

+0

고맙습니다. –

2

나는 SURF를 330Mhz Symbian 모바일 용으로 시도했지만 모든 최적화 및 찾아보기 테이블에서도 여전히 느리다. 그리고 SIFT는 더 느려야합니다. 이제는 휴대 전화에 FAST를 사용하는 모든 사람. 어쨌든 특징 추출은 가장 큰 문제는 아닙니다. 거짓 신호에 대한 통신 및 삭제는 더욱 어렵습니다. FAST 링크 http://svr-www.eng.cam.ac.uk/~er258/work/fast.html

1

나는 SURF, MSER 등을 포함 이미 OpenCV의 라이브러리에서 구현 된 기능을보고 시작하는 당신을 추천 할 것입니다 :

http://opencv.willowgarage.com/documentation/cpp/feature_detection.html

이 충분히있을 당신의 SIFT보다 빠릅니다. 그리고 위에서 언급 한 것처럼 SIFT는 특허를 받았습니다.

모바일 플랫폼에서 성능 테스트를 시작하십시오. 모든 프레임에서 기능을 추출하기 만하면 실시간으로 실행할 수있는 아이디어를 얻을 수 있습니다.

1

Android 포트에서 OpenCV의 FAST 구현을 사용해 보셨습니까? 나는 그것을 시험해 보았다. 그리고 그것은 우습게 빨리 달린다.

탐지 된 FAST 키포인트 주변의 감소 된 막대 그래프 설명자를 계산할 수도 있습니다. 나는 SIFT의 표준 4x4보다는 3x3에 대해 들어 봤다. NEON 지침을 사용하여 최적화하면 실시간으로 작업 할 수 있습니다. 그렇지 않으면, 매우 빠른 keypoints 주위의 패치에 대해 제곱의 차이나 절대 차이와 같은 빠르고 간단한 것을 추천합니다.

SIFT는 만병 통치약이 아닙니다. 실시간 비디오 응용 프로그램의 경우 일반적으로 잔인합니다.