¿Cómo calculo si algún hardware específico puede ejecutar mi código con una velocidad determinada?
Es un software de reconocimiento de imágenes, y una versión simplificada del algoritmo es:
- Agarra un marco (en RGB, 640x480).
- Recortarlo a un ROI dado (Región de interés). En mi caso, esta sería una ventana de 60x60, por lo que todo el siguiente procesamiento no tiene que pasar por todos los píxeles, solo los que están dentro del ROI.
- Cree una imagen binaria (cada píxel tiene un valor '1' o '0'), yendo a través de cada píxel y aplicando una regla simple (que involucre solo las intensidades del color de ese píxel específico) para decidir si esa posición tendrá un valor '1' o un valor '0'. Esto es en realidad solo un umbral de color, aquí hay un ejemplo de la entrada y salida de este paso. En el ejemplo, la regla es "¿el color del píxel es naranja?".
-
Calcule el centro geométrico de la imagen binaria creada en el último paso. Esto se hace simplemente:
scan the image for valued-1 pixels; save the coordinates of those pixels in two vectors, one named 'ind_x' and another 'ind_y'; GCx = mean(indices_x); Gcy = mean(indices_y);
- Imprima
Gcx
yGcy
a través de la comunicación en serie.
Intento averiguar si una Raspberry Pi podría procesar este código 120 veces por segundo (o más) específicamente, a qué velocidad se podría hacer esto en él).
Creo que la respuesta a esta pregunta también podría beneficiar a electronics.stackexchange, ya que podría resumirse para responder a la pregunta más general: dada una descripción aproximada de un algoritmo (lo suficientemente claro como para poder estimar la complejidad del código). ) ¿Cómo puedo predecir si un hardware específico puede procesarlo con una restricción de tiempo dada?
Si se necesitan más detalles, dígalo en los comentarios.