Usando tamizado para la realidad aumentada -- java campo con android campo con algorithm campo con augmented-reality campo con sift camp Relacionados El problema

Using SIFT for Augmented Reality


3
vote

problema

Español

Me he encontrado con muchas bibliotecas / SDK / API de AR, todos ellos están basados ​​en marcadores, hasta que encontré Este video , de la descripción y los comentarios, parece que está usando tamizar para detectar el objeto y seguirlo.

Necesito hacerlo para Android, por lo que necesitaré una implementación completa de tamizar en Java puro.

Estoy dispuesto a hacer eso, pero necesito saber cómo se usa el tamizado para la realidad aumentada primero.

Podría hacer uso de cualquier información que le dé.

Original en ingles

I've come across MANY AR libraries/SDKs/APIs, all of them are marker-based, until I found this video, from the description and the comments, it looks like he's using SIFT to detect the object and follow it around.

I need to do that for Android, so I'm gonna need a full implementation of SIFT in pure Java.

I'm willing to do that but I need to know how SIFT is used for augmented reality first.

I could make use of any information you give.

</div
              

Lista de respuestas

10
 
vote
vote
La mejor respuesta
 

En mi opinión, tratando de implementar tamizar para un dispositivo portátil es una locura. SIFT es un algoritmo de extracción de características de imagen, que incluye matemáticas complejas y ciertamente requiere mucha potencia de computación. Tamiz también es patentado.

Aún así, si de hecho quiere salir con esta tarea, debe hacer bastante investigación al principio. Necesitas comprobar cosas como:

  • Cualquier variante de tamizado que mejore el rendimiento, incluidos los diferentes algoritmos a su alrededor
  • recomendaría mirar en surf que es muy robusto y mucho más rápido (pero sigue siendo uno de esos algoritmos de miedo)
  • Android NDK (Explicaré más tarde)
  • lotes y muchas publicaciones

¿Por qué Android Ndk? Debido a que probablemente tenga una ganancia de rendimiento mucho más significativa al implementar el algoritmo en una biblioteca C que su solicitud de Java está utilizando.

Antes de comenzar cualquier cosa, asegúrese de hacer esa investigación porque sería una pena realizar la mitad de la mitad de los algoritmos de extracción de imágenes de la imagen son demasiado para un teléfono Android. Es un esfuerzo serio en sí mismo implementando dicho algoritmo que proporciona buenos resultados y se ejecuta en una cantidad de tiempo aceptable, y mucho menos usándolo para crear una aplicación AR.

Como en la forma en que usaría eso para AR, supongo que el descriptor que obtiene de ejecutar el algoritmo en una imagen deberá coincidir con los datos guardados en una base de datos central. Luego, los resultados se pueden mostrar al usuario. Se supone que las características de una imagen recopiladas de surf se deben describir, como que se puede identificar usando aquellas. No tengo mucho experiencia en hacer eso, pero siempre hay recursos en la web. Probablemente, querrías comenzar con cosas genéricas, como reconocimiento de objetos .

La mejor de las suertes :)

 

In my opinion, trying to implement SIFT for a portable device is madness. SIFT is an image feature extraction algorithm, which includes complex math and certainly requires a lot of computing power. SIFT is also patented.

Still, if you indeed want to go forth with this task, you should do quite some research at first. You need to check things like:

  • Any variants of SIFT that enhance performance, including different algorithms all around
  • I would recommend looking into SURF which is very robust and much more faster (but still one of those scary algorithms)
  • Android NDK (I'll explain later)
  • Lots and lots of publications

Why Android NDK? Because you'll probably have a much more significant performance gain by implementing the algorithm in a C library that's being used by your Java application.

Before starting anything, make sure you do that research cause it would be a pity to realize halfway that the image feature extraction algorithms are just too much for an Android phone. It's a serious endeavor in itself implementing such an algorithm that provides good results and runs in an acceptable amount of time, let alone using it to create an AR application.

As in how you would use that for AR, I guess that the descriptor you get from running the algorithm on an image would have to be matched against with data saved in a central database. Then the results can be displayed to the user. The features of an image gathered from SURF are supposed to describe it such as that it can be then identified using those. I'm not really experienced on doing that but there's always resources on the web. You'd probably wanna start with generic stuff such as Object Recognition.

Best of luck :)

</div
 
 
   
   
2
 
vote

Si yo, donde usted, miraría cómo (y por qué) funciona la función de tamiz (como se dijo, su Wikipedia-Page ofrece una buena explicación de Cochise, y para más detalles, verifique el papel de la ciencia (que está vinculado a en Wikipedia)), y luego construir su propia variante que se adapte a su gusto; I.E. tiene el equilibrio óptimo entre el rendimiento y la carga de la CPU, necesaria para su aplicación.

Por ejemplo, creo que la suavidad gaussiana puede ser reemplazada por una forma más rápida de suavizar.

Además, cuando construyes tu propia variante, no tienes nada que ver con las patentes (ya hay muchas variantes, como GLOH).

 

If I where you, I'd look into how (and why) the SIFT feature works (as was said, its wikipedia-page offers a good cochise explanation, and for more details check the science paper (which is linked to at wikipedia)), and then build your own variant that suits your taste; i.e. has the optimal balance between performance and cpu-load, needed for your application.

For instance, I think Gaussian smoothing might be replaced by some faster way of smoothing.

Also, when you build your own variant, you don't have anything to do with patents (there already are lots of variants, like GLOH).

</div
 
 
 
 
2
 
vote

He intentado navegar por 330MHz Symbian Mobile y aún era demasiado lento, incluso con todas las optimizaciones y tablas de búsqueda. Y tamizar debería ser aún más lento. Todos usando rápido para móviles ahora. De todos modos, la extracción de características no es un problema más importante. La correspondencia y el claro falso positivo en ella es más difícil. Enlace rápido http://svr-www.eng.cam.ac .uk / ~ ER258 / TRABAJO / FAST.HTML

 

I have tried SURF for 330Mhz Symbian mobile and it was still too slow even with all optimizations and lookup tables. And SIFT should be even more slow. Everyone using FAST for mobiles now. Anyway feature extraction is not a biggest problem. Correspondence and clearing false positive in it is more difficult. FAST link http://svr-www.eng.cam.ac.uk/~er258/work/fast.html

</div
 
 
1
 
vote

Le recomendaría que comience al mirar las características ya implementadas en la Biblioteca de OPENCV, que incluyen Surf, MSER y OTROS:

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

Esto podría ser suficiente para su aplicación y es más rápido que el tamaño. Y como se mencionó anteriormente, Sift está patentado.

Además, comienza haciendo pruebas de rendimiento en su plataforma móvil, simplemente extrayendo las funciones en cada fotograma, de esta manera tendrá una idea de cuáles pueden funcionar en tiempo real o no.

 

I would recommend you to start by looking at the features already implemented in the OpenCV library, which include SURF, MSER and others:

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

This might be enough for your application and are faster than SIFT. And as mentioned above, SIFT is patented.

Also, start by making performance tests in your mobile platform, just by extracting the features at every frame, this way you'll have an idea which ones can run real-time or not.

</div
 
 
1
 
vote

¿Has probado la implementación rápida de OpenCV en el puerto de Android? Lo he probado y se ejecuta bruscamente rápido.

También puede calcular los descriptores de histograma reducidos alrededor de los puntos de llave rápidos detectados. He oído hablar de 3x3 en lugar de estándar 4x4 de tamizado. Eso tiene una posibilidad decente de trabajar en tiempo real si lo optimiza mucho con las instrucciones de neón. De lo contrario, recomendaría algo rápido y sencillo como la suma de diferencias cuadradas o absolutas para un parche alrededor de los puntos de llave que son muy rápidos.

TAMP no es una panacea. Para aplicaciones de video en tiempo real, generalmente es una exageración.

 

Have you tried OpenCV's FAST implementation in the Android port? I've tested it out and it runs blazingly fast.

You can also compute reduced histogram descriptors around the detected FAST keypoints. I've heard of 3x3 rather than standard 4x4 of SIFT. That has a decent chance of working in real time if you optimize it heavily with NEON instructions. Otherwise, I'd recommend something fast and simple like sum of squared or absolute differences for a patch around the keypoints which are very fast.

SIFT is not a panacea. For real time video applications, it's usually overkill.

</div
 
 
0
 
vote

Como siempre, Wikipedia es un buen lugar para comenzar desde: http: //es.wikipedia .org / wiki / scale-invariant_feature_transform , pero tenga en cuenta que tamiz es patentado.

 

As always, Wikipedia is a good place to start from : http://en.wikipedia.org/wiki/Scale-invariant_feature_transform, but note that SIFT is patented.

</div
 
 

Relacionados problema

0  Tamiz vs surf. ¿Cuál es más preciso?  ( Sift vs surf which is more accurate ) 
Estoy probando el objeto para hacer Feature coincidencia con tamizar y surfear con C ++ & amp; OpenCV. surf Las reclamaciones son más rápidas y sift p...

1  ¿Puede Sift3D funciona en la nube de puntos en formato XYZ y XYZRGB?  ( Can sift3d works on point cloud in both xyz and xyzrgb format ) 
Soy nuevo en PCL y SIFT3D. Cuando uso Feature_DEMO.CPP para evaluar los puntos de tecas, noté que si la nube de puntos es XYZRGB, se pueden detectar KeyPoints...

5  OpenCV STIFT VS DAVID LA IMPLEMENTACIÓN DE TAMBIENTO, OPENCV PEOR PEOR  ( Opencv sift vs david lowes sift implementation opencv far worse ) 
Probé la detección de objetos para un par de objetos diferentes que usan la implementación de David Lowe y openvenv Implementación (solo cambió 'Surffeatu...

2  OpenCV dibujar puntos no coincidentes  ( Opencv draw non matching points ) 
He seguido Tutorial de detección y descripción de la característica de OpenCV y usan tamizos y otros algoritmos en OPENCV para encontrar puntos de función c...

1  Mostrar teclas de teclas de OpenCV en iPhone iOS 4  ( Display keypoints from opencv on iphone ios 4 ) 
hey Estoy tratando de implementar algoritmos de detector de características en iPhone (Surf y Sift). Ya logré recolectar la corriente de video en bruto, lo c...

9  Extracción de tamiz - OPENCV  ( Sift extraction opencv ) 
Estoy tratando de comenzar a trabajar con la extracción de características de SIFT usando (C ++) OpenCV. Necesito extraer características utilizando tamiz, co...

0  Módulo OPENCV FLANN: KNN-Búsqueda de árboles jerárquicos del árbol que da un resultado extraño  ( Opencv flann module knn search for hierarchical kmeans tree giving weird result ) 
Tengo unos 130,000 descriptores de tamizado. Estoy construyendo un índice jerárquico de Kimeans utilizando el módulo FLANN de OPENCV. Después de esto, quiero ...

3  Usando tamizado para la realidad aumentada  ( Using sift for augmented reality ) 
Me he encontrado con muchas bibliotecas / SDK / API de AR, todos ellos están basados ​​en marcadores, hasta que encontré Este video , de la descripción y los...

19  Surf y sift alternativo objeto de seguimiento del algoritmo para la realidad aumentada  ( Surf and sift alternative object tracking algorithm for augmented reality ) 
Después de preguntarle a aquí y tratando de surfear y tamizar, ni de las costuras de ninguna manera Sea lo suficientemente eficiente para generar puntos de ...

3  No pude usar la biblioteca que ya he importado como referencias en mi proyecto  ( I couldnt use the library that i have already imported as references in my proje ) 
Estoy escribiendo un programa para la visión de la computadora en C # que se necesita parte del proyecto TAMP; Descargué la biblioteca de notas para tamizar: ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos