I need to grab an image from a board-mounted camera (1kx1k pixels would do, colour not required), count and then output the number of pixels with luminance values below 10% of mean.

This has to be repeated once every minute. Frame and processing rates can therefore be very low.

The key things is I need are robustness, low-cost and low power.

Can anyone recommend appropriate hardware?

I'm posting this as an Arduino topic because that's the hardware with which I'd start - and because I don't see another forum here where I can post a question about chosing single-board-embedded-systems for this specific purpose. If there is another, more appropriate forum please tell me what it is.

I'm not considering Pi or Beaglebone because of power-consumption, cost and complexity. What I'm trying to do is quite trivial, it doesn't require the data to be treated as an image and it just need to output a single number. So I'd consider an Arduino mega as a good start - but the awesome collective conciousness of the SE community usually knows better.

  • 1k x 1k is 1 megapixels. That's 1MB at 8-bit greyscale. You're entering Pi territory there. – Majenko Mar 15 '18 at 15:25
  • Indeed, it can't be done in Arduino / MCU-internal-RAM territory by literally implementing the words of the question. But for a sensor with 8-bits of grayscale, it can be done by using 256 20-bit variables to count the number of occurrences of each level, from that figure the mean, and then total the buckets qualifying relative to it. Or perhaps they can cheat and calculate the mean of one frame, then calculate the number of pixels in the next frame qualifying relative to that threshold. – Chris Stratton Mar 15 '18 at 15:27
  • A pi will not get you robustness or low power, given the SD card and lack of power management. There are low end embedded Linux systems, often sold for a wifi capability you could ignore, which boot from a much more reliable SPI flash and can host a USB camera. But they don't tend to have good power management either, and you'd suffer something like a 50-60 second boot time in starting them up. The pi's processor, if you could directly target it and use the chip's capability to boot from SPI might work in a bare metal context though - but that's not available to end users. – Chris Stratton Mar 15 '18 at 15:34
  • @ChrisStratton Agreed. Personally, I'd use a PIC32MZ2064DAG169, but then that has 32MB internal DDR memory... – Majenko Mar 15 '18 at 15:46
  • 1
    @MichelKeijzers - you don't actually need more memory than a basic ATmega has, because you don't have to store a full frame to solve this problem. – Chris Stratton Mar 15 '18 at 16:07