Necesito un microcontrolador que pueda tomar una imagen como entrada y producir una lista de los n-píxeles más brillantes. Necesito ~ 10 fps. ¿Existe alguno de estos microcontroladores?

Depende de lo que sea N, supongo. Usted tendrá un ancho de banda limitado, por supuesto. También puede tener memoria limitada hasta cierto punto; sin embargo, si no necesita mantener el marco (algo más en el sistema es mantener el búfer de marco), entonces solo necesita almacenamiento para las N ubicaciones de píxeles más brillantes y algo de búfer para suavizar los requisitos del ciclo.

Supongamos una imagen de 1920 x 1080 x 10FPS. Eso es 20,736,000 píxeles por segundo. Necesita una MCU que sea lo suficientemente rápida como para leer tantos píxeles por segundo y encontrar dónde encajan dentro de un búfer de N píxeles más brillantes.

Una MCU de 100MHz le brinda aproximadamente 5 ciclos por píxel a la resolución asumida para este ejemplo. Para cada píxel dado, debe determinar si es más brillante que el más tenue de sus N píxeles. Si no es así, descarte y pase al siguiente. Para MCU totalmente canalizadas, esta operación podría ser tan rápida como 2 o 3 ciclos. Esto le da un margen de maniobra significativo en su presupuesto.

Si el píxel es más brillante que el píxel más tenue en su lista de N píxeles más brillantes, entonces debe descartar el píxel más tenue e insertar el nuevo píxel en la lista. Hay muchas estrategias que puedes usar aquí. Para N pequeña, un tipo de inserción puede funcionar mejor. Para N grande, un montón puede funcionar mejor.

Insertar un nuevo píxel en la lista es costoso. Sin embargo, puede consolarse con el hecho de que no debería suceder con frecuencia. Si su imagen tiene un rango dinámico de 8 bits (niveles de brillo 0 – 255), esto puede suceder 255 veces como máximo. (es decir, hay N píxeles con el valor 255). Si su rango dinámico es mayor (por ejemplo, profundidad de color de 12 bits), puede ocurrir más veces que eso.

( EDITAR : en realidad, las inserciones pueden ocurrir N * (brillo máximo – 1) veces, por lo que N importa. Considere lo que sucedería con una rampa de escala de grises muy lenta).

Mientras inserta el nuevo “píxel más brillante” en su búfer, otros píxeles estarán en búfer, esperando ser procesados. Es por eso que necesita un búfer en chip para suavizar el ancho de banda de procesamiento. Necesita suficiente almacenamiento para contener píxeles para cubrir la “penalización de inserción” en el peor de los casos. Para el resto de la imagen, el rechazo trivial es lo suficientemente barato como para mantenerse a la vanguardia.

Si su imagen es más pequeña, puede ir a un MCU más lento, por supuesto. Acabo de elegir algunos números redondos para mostrar la viabilidad, incluso con tamaños de imagen grandes, en un MCU de ~ $ 5, más o menos $ 1.

Seguramente tendrá memoria limitada.

Si tiene una imagen de 1920x1080x32 bits a 10 fps, eso es aproximadamente 82 MBytes / s (1920x1080x4x10).

Eso definitivamente es factible en un ARM rápido (Cortex-A8 y superior), pero no es más lento que 200 MHz más o menos (a menos que sea muy súper escalar).

Si se trata de un sistema personalizado, puede construir algo con mucho ancho de banda de memoria (bus de memoria muy amplio) y manejarlo con un FPGA. Eso probablemente tendría un costo total más bajo.

¿Alguna razón por la que quieres un microcontrolador y no un chip más potente?
Dependería en gran medida de la dimensión de la imagen, de lo poderoso que necesita un microcontrolador.

Echa un vistazo a Raspberry Pi, también.

Esto debería ser una tarea trivial, siempre que las imágenes no tengan una resolución de gigapíxeles.

Depende mucho de la cantidad de píxeles por imagen y de la cantidad de cosas que necesita hacer además de eso. El uso de un montón facilitará el seguimiento de los n píxeles más brillantes, por lo que no es un problema “computacionalmente difícil”. Todo se reduce al tamaño de la imagen.

Para responder a la pregunta, sí, existe tal dispositivo.

Creo que está haciendo la pregunta incorrecta, tal vez no sepa qué pregunta debería hacer. Voy a adivinar lo que realmente buscas es el seguimiento de características, tal vez la extracción de características, ¿verdad?

Sí, enumerar y clasificar los píxeles más brillantes es factible en un microcontrolador. Probablemente no va a resolver el problema que realmente buscas.