¿Cuál debería ser un buen diseño para el siguiente escenario? -- p campo con design-patterns campo con kinect campo con software-design camp Relacionados El problema

What should be a good design for the following scenario?


0
vote

problema

Español

Estamos grabando las posiciones de varias partes del cuerpo. Nuestro hardware (Microsoft Kinect) proporciona posiciones de hasta 20 juntas de cuerpo humano. Y da los datos a unos 30 fps. También la posición incluye las coordenadas X, Y y Z de esa articulación en particular. Un gesto particular es de unos 3-4 segundos, así que el NO. De los marcos varía de 80 a 120. Nuestro problema es almacenar y recuperar estos datos y procesarlo. Nuestra terminología es la siguiente:

marco: una instantánea de todas las articulaciones en consideración Muestra: Colección de todos los marcos para un gesto particular

El problema es que estamos experimentando y no sabemos cuántos datos de las articulaciones se utilizarán en el proyecto. Así que no está arreglado.

Ahora considere un problema particular de decir almacenar los datos. La consulta SQL se genera utilizando el siguiente método. http://pastebin.com/ga114cqm

Como puede ver, el problema es que hay mucha repetición del código. En otro problema, donde tenemos que preprocesar los datos, sucede lo mismo. A pesar de que solo 6 articulaciones están preprocesadas, la longitud del método es demasiado. Eche un vistazo aquí: http://pastebin.com/jvkwndmz

Aunque está funcionando, no me gusta. Además, si usamos la encapsulación como los objetos de llenado en lugar de usar directamente las matrices, ¿cuánto golpe de rendimiento estará allí? Debido a que este es un sistema de reconocimiento de gesto en tiempo real, no podemos pagar mucho retraso.

Si la pregunta no es muy clara, dígame qué parte no entendió. Como no quiso una pregunta muy grande, he intentado resumir todo el problema.

Original en ingles

We are recording the positions of various body parts. Our hardware (Microsoft Kinect)gives positions of as many as 20 Joints of Human Body. And it gives the data at about 30 fps. Also position includes X, Y and Z co-ordinates of that particular joint. A particular gesture is of about 3-4 seconds so the no. of frames varies from 80 to 120. Our problem is to store and retrieve this data and to process it. Our terminology is as follows:

Frame: A snapshot of all the joints under consideration Sample: Collection of all frames for a particular gesture

The problem is we are experimenting and we do not know how many jointsxe2x80x99 data to be used in the project. So it is not fixed.

Now consider a particular problem of say storing the data. The SQL Query is generated using the following method. http://pastebin.com/ga114cQm

As you can see, the problem is there is lot of code repetition. In another problem where we have to preprocess the data, the same thing happens. Even though only 6 joints are preprocessed the length of the method is too much. Have a look here: http://pastebin.com/JVKWNDmZ

Though it is working, I do not like it. Also, if we use encapsulation like filling objects instead of directly using arrays, how much performance hit will be there? Because this is a real-time gesture recognition system, we cannot afford a lot of delay.

If the Question is not very clear please tell me what part you did not understand. Since I did not want a very big question, Ixe2x80x99ve tried to summarize the entire problem.

           
   
   

Lista de respuestas

0
 
vote

Si el problema es simplemente crear una instrucción SQL return0 para almacenar los valores en la base de datos, entonces su código no tiene sentido.

Podría crear un procedimiento almacenado en el DB, configure los parámetros en el código y llame al procedimiento, como:

  SqlCommand cmd  = new SqlCommand("InsertKinectData", conn); cmd.CommandType = CommandType.StoredProcedure;  cmd.Parameters.Add(new SqlParameter("@SkeletonX", sd.Position.X)); //... cmd.ExecuteNonQuery();   

Para optimizar para la velocidad, mantenga la conexión DB abierta, no recree el SqlCommand ni los parámetros, simplemente establezca los parámetros con los nuevos valores tan pronto como lleguen, y llame al SP de inmediato. después.

 

If the problem is just to create a SQL INSERT instruction to store the values to the database, then your code makes no sense.

You could create a stored procedure in the db, set the parameters in the code and call the procedure, like:

SqlCommand cmd  = new SqlCommand("InsertKinectData", conn); cmd.CommandType = CommandType.StoredProcedure;  cmd.Parameters.Add(new SqlParameter("@SkeletonX", sd.Position.X)); //... cmd.ExecuteNonQuery(); 

To optimize for speed, keep the db connection open, don't recreate the SqlCommand nor the parameters, just set the parameters with the new values as soon as they arrive, and call the SP immediately after.

 
 

Relacionados problema

3  Diseñando una plataforma web con módulos usando el EF 4.3  ( Designing a web platform with modules using the ef 4 3 ) 
Estoy tratando de construir una plataforma web (Rey de un CMS) usando el EF 4.3 con migraciones. Así que quiero factorizar todo mi trabajo de otros proyectos ...

3  ¿Cómo funciona una aplicación como Wireshark?  ( How does an application like wireshark work ) 
Me pregunto cómo funciona Wireshark. ¿Cuál sería el diseño de una aplicación que pueda escuchar el tráfico en todos los puertos de una máquina determinada? ¿C...

0  ¿Puede mezclar rasgos extendiéndose las clases de casos desde una perspectiva técnica?  ( May mix in traits extend case classes from a technical perspective ) 
Le leí repetidamente para que las clases de casos no se ampliarán porque una clase de caso implementa un método de igualdad por defecto y que conduce a proble...

0  ¿Cuál es la forma recomendada de cargar un gráfico de objeto de la capa de acceso a datos?  ( Whats the recommended way to load an object graph from data access layer ) 
de un libro de arquitectura de software relativamente antiguo: en otras situaciones, la misma consulta conceptual de pedidos podría generar diferentes da...

0  ¿Debo pasar una lista a este método o uno por uno?  ( Should i pass a list to this method or one by by one ) 
Actualmente estoy a través de una pequeña solicitud, y se encontró con algo que no sé cómo resolverlo. La aplicación permite a las personas seleccionar a los ...

1  NET MVC Design Ajax Llamadas (donde para poner los métodos AJAX)  ( Net mvc design ajax calls where to put ajax methods ) 
hola Al migrar de ASP.NET a MVC ASP.NET, parece que el MVC es más amigable para AJAX. Pero aun así me encuentro con problemas de diseño, ¿Alguien sabe la inte...

1  Cómo compartir clases y funcionalidad entre dos aplicaciones  ( How to share classes and functionality between two applications ) 
He desarrollado una solicitud (por ejemplo, por ejemplo, digamos que es una aplicación de tarjeta de membresía), donde el usuario desliza su tarjeta de membr...

0  ¿Cómo convertir a DFD en el código? [cerrado]  ( How to turn dfd into code ) 
cerrado. Esta pregunta no cumple con pautas de desbordamiento de pila . Actualmente no está aceptando respuestas. ...

0  Corriendo la función Python por función, pero multiprocesamiento  ( Running python function by function in order but multiprocessing ) 
Quiero ejecutar la función1 y luego funcionar 2 en una secuencia, pero usando multiprocesamiento. Tengo una sola solución para resolver este problema, pero ta...

1  ¿Cómo crear un objeto de los elementos de UI de una manera agradable?  ( How to create an object from ui elements in a nice way ) 
En mi aplicación de Android tengo algunos campos como MyButton a; MyEditText b; MySpinner c; MyTextView d; Cada uno de estos es como public class MyBu...




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