Which Arduino Board to choose for my camera?

Well I am about to buy this camera http://www.sparkfun.com/commerce/product_info.php?products_id=8668 I am sure I can somehow take images using arduino board. I have written a code in C++ which I want to use into my arduino board. What this code does is to take an image and lets say find some pixels and than report back a number(maybe by using xbee). This process will be done like every second. I am not sure of which arduino board is powerful enough for something like this. I might be wrong of course... In my source code I have made use of windows libraries so I guess I will have to copy the important parts into my arduino board as well.. If you believe I can get my job done easier with another camera I would be glad if you could mention it :)

Some arithmetic:
You’ve got to get 1 352 000 pixels across I2C every second and do something with them.
Let’s assume they’re eight bit samples.
That’s about 3/4 of a microsecond per pixel, so about 12 instructions at 16MHz.
That I2C bus is going to be busy.

Then you’ve got severe RAM limitations.

lets say I am using only 2 color of pixels. Red and Black. And the process is to find the the red pixel coordinates. What board do i have to use?

Any Arduino will do the job. It just depends on how fast you need an answer.

This guide came in handy for what I was looking for but doesn't mention anywhere image processing http://gizmologi.st/2009/04/taking-pictures-with-arduino/ I have also found around http://beagleboard.org/ but my project budget is really limited and I have convinced my self that I can make it work using arduino only...


Thats what makes me believe so much in arduino


What you have to understand is that although JPEG makes image capture, transfer and storage more manageable on an underpowered microcontroller, JPEG makes simple image processing much more difficult, because JPEG essentially moves the image into the frequency domain, and discards much original information.

I do understand what you are saying to me. I haven’t necessarily asked for a camera
that saves images to JPEG. And ofc I won’t transfer images to the computer because
I know that it would slow down my whole project. What I mainly want is to be able
to distinguish some certain pixels through others using the program I already wrote on

I haven’t necessarily asked for a camera
that saves images to JPEG

The Sparkfun/Toshiba camera you linked has it as a USP.

And ofc I won’t transfer images to the computer because
I know that it would slow down my whole project

So you leave them in the camera - how does that help?

(ofc - ?)

I had in mind some kind of image processing using arduino and some components, maybe microcontrolers and than send back small size data packages using xbee, simple plain numbers. At the same time while searching I see that it is impossible to do something like that, using arduino only but when I look at this video proofs me that it is possible... http://www.youtube.com/watch?v=kVZJuDicCe0 Any ideas how to do that?


Lets assume that making an image process on the arduino board is impossible. Than how can I make a beagleboard- arduino hybrid?

Lets assume that making an image process on the arduino board is impossible

Let's not. I've done commercial real-time image processing (25-30 fps) on boards barely faster than an Arduino (though, I have to admit, a wider bus and a bucket-load (at the time) of RAM). You just have to fix expectations.

Than how can I make a beagleboard- arduino hybrid?

As usual, if you have to ask the question...

Image processing is possible with arduino... what camera should I use and what arduino board? Have in mind that an xbee module will be connected... and 4 motors (battery outside arduino will be used). Also what libraries should I use to program the image processing program? What extra microcontrolers, chips I will need?

Image processing is possible with arduino… what camera should I use and what arduino board?

You’re missing the point, and asking an incomplete question.

Return the coordinates of the brightest pixel in an image?
Simple, possibly even quick (ish).

Convolve a high-resolution image with a 17 pixel-square mask?
Very difficult, and slow.

Both “image processing” tasks.

the first one, what I am trying to do is a laser rangefinder that will report back pixels on computer and computer will create a map of the territory.

I'd probably ditch the mobile phone camera, and use a CCIR/RS170 camera and a sync stripper like an LM1881. With a bit of gating and an interrupt, I think you'd get surprisingly good results.

it requires way more memory than is available in Arduino

If all you're doing is looking for position of the brightest pixel, you don't need very much memory at all. ;)

How do you recognize patterns if you can't access the whole image as an array?

He's not looking for patterns, he's looking for the brightest pixel. That is possible on the fly with very little memory.

Besides, assuming the readout is non-destructive, you can use the camera as your "memory" and take multiple passes.

Make no mistake, it isn't easy, but given time, much is possible.

I am sorry but I am not sure I understand what on the fly means. Also how many frames per second by your experience could arduino uno process and what libraries I could use for the image processing. Also if not hard for you list any extra components that I will have to buy :)

I found this library that as it mention is really close to machine (meaning that it doesn't use any other extra libraries) would it be possible to add the useful functions(like the searching of the brightest pixel) of it to an arduino board? http://cimg.sourceforge.net/

btw @awol I don't think I am experienced enough with circuits to be able to connect a mobile phone camera with an arduino board...

PS I am sorry for my stupid questions but I am on 12th grade and they don't teach us on school such cool stuff..

The sparkfun camera you linked earlier is a mobile phone camera.

On the fly simply means (in this instance) without reference to any other pixels, past or future. Think about it - if I were to read out a list of numbers to you, you would be able to tell me very quickly what the largest number was, and its position in the list, and you could do it with a tiny amount of memory, just as soon as I had finished reading the list.

It doesn't need a library, just about 6 or 8 lines of C.

(I have no idea what "n th" grade means - is that like dan in martial arts?)

[edit]Your question about frame rates is meaningless without knowing how big a frame is. Some cameras have sub-sampling modes that mean you can read out lower-res frames more quickly.[/edit]

Sorry for bombarding you with questions... but Would anything change if it would be more than 1 pixel? Lets say a line of pixels.... Or except the brightness only check the color as well? (not displaying it but just comparing the rgb numbers...)

my main goal is to be able to manipulate(or process) one frame per second(I wouldn't mind 2 fps either.)

Any tutorials on how to connect the camera with arduino? (Google seems to find only finished projects)

http://www.sparkfun.com/commerce/product_info.php?products_id=9950 or http://www.sparkfun.com/commerce/product_info.php?products_id=9152 or even... http://www.sparkfun.com/commerce/product_info.php?products_id=9949

Are all able to do what I want? Consider that I will attach xbee and maybe some motors or servo or I dunno what....


My head is about to explode... any ideas on how to connect the camera with arduino?

EDIT 2: Do I have to use? http://www.sparkfun.com/commerce/product_info.php?products_id=7904