Simple Image Processing

Hello,

Basically I want to implement simple image processing using Arduino (whichever works).
The board with a camera will be mounted on a small 4-wheeled car.
Basically I will be holding a bright Red LED and the objective of the car is to follow me using that LED.

Being new to Arduino platform I wanted a bit of advice on which camera and board to use if I want the image processing done by the controller?
How will go about doing that? Like are there any build in libraries I can use?
I will also need a bit of help interfacing the camera with the controller.

And is there a way to do the image processing from the camera mounted on the car on my computer and send the commands back to the controller wirelessly?

It will be awesome if someone can help me out getting things together.

So have you searched this forum for similar posts?
What happens is I say no, you can't do it.
Then other people jump in and say maybe but it is complex.
Then you go away to look at another platform.

To have a robot follow light, you don't need a camera and image processing- you can get by with two LDRs (Light Dependent Resistors).

Unless there are some other constraints to this project that mean you have to use a camera and image processing, Google "photovore" (light eater...) and you'll get some good info.

You also don't need to have one processor do every thing. Use a WiFi cam mounted on the 'bot. Link the cam to the PC and have the PC do the image processing and send instructions to the 'bot. Lookup robotics - horse and rider.

Mark

... but it's complex.

holmes4:
You also don't need to have one processor do every thing. Use a WiFi cam mounted on the 'bot. Link the cam to the PC and have the PC do the image processing and send instructions to the 'bot. Lookup robotics - horse and rider.

Mark

That sounds like a better idea.

Can you explain me a bit more about this?

So what I make out of what you said is:

  1. Wifi Camera sends image to PC.
  2. I process the image in say MATLAB.
  3. I send the instructions to the controller wirelessly from my results generated in MATLAB.

Now I am not very well versed with MATLAB. It would be really great if you could guide me on this.
How would I automate results from my MATLAB scripts to be sent over to the controller?
Give me some sources to study. Also, I am planning to get the XBEE module with the shield for my UNO board. How exactly would XBEE talk to my PC. (Is it possible to do that on an AD-Hoc network? or I would need a Wireless Router?)

It would be really helpful if you could give me more pointers on this.

  1. Wifi Camera sends image to PC. > Not associated with arduino

  2. I process the image in say MATLAB. > Matlab forum

  3. I send the instructions to the controller wirelessly from my results generated in MATLAB. > possible arduino interface

How would I automate results from my MATLAB scripts to be sent over to the controller? > serial is the usual format

Give me some sources to study. > google is your friend

How exactly would XBEE talk to my PC. > probably thru another XBEE attached to your pc.

Is it possible to do that on an AD-Hoc network? or I would need a Wireless Router? > I think you are trying to mix apples and oranges.

I am no expert at this, but the company I work for was using image processing hardware in their machines over 20 years ago(!). Isn't the Arduino (or a few of them connected together) "strong" enough to do what was done by hardware 20 years ago?

I too did image processing over twenty years ago.
We used 32 bit processors, often lots of them in parallel, with (for then) bucket loads of wide, fast RAM.
It wasn't a beginner's project.
Have a look at the video experimenter's board.
There's example code.

Using Kinect Camera to do color tracking and determine its coordinate using depth sensor, it is interesting since you also could use Processing to receive any data from Kinect and send data to your Arduino. Check this out: Kinect Color Tracking | KinectDuino

Forget colour.
Use optical filters.

szangvil:
I am no expert at this, but the company I work for was using image processing hardware in their machines over 20 years ago(!). Isn't the Arduino (or a few of them connected together) "strong" enough to do what was done by hardware 20 years ago?

I did image processing 30 years ago on a TRS80 computer.
While the processing power was roughly the same as an arduino the memory capacity was not. That is what stops you using the Arduino to do any meaningful image processing. Also I build my own real time frame grabber. I programmed it in Fourth.

Arduino could process 1-bit video, extracting 240 points on regular NTSC frame. Applying simple math it would be possible to distinguish straight lines, cycles etc.
http://coolarduino.wordpress.com/2012/07/28/visual-navigator-making-it-mobile/
and
http://coolarduino.wordpress.com/2011/12/29/optical-magnet-arduino-project-next-in-a-series-laser-tracking-3d/

Pauses thread here for a moment and rewinds.....

Is this really an image processing issue or just light following?

JimboZA:
Pauses thread here for a moment and rewinds.....

Is this really an image processing issue or just light following?

It will be image processing cause the light which the bot has to follow, I will be holding it in my hand waving around in a 3-D space. If it was just following something on the floor I would've used LDR's.

Using Kinect is an awesome idea...but Sir I have no Idea how to send Kinect's data wirelessly back to my computer.
Could you help me a bit in that?

If that can be worked out it will be amazing!

It will be image processing

Cool... it was just a thought, always good to keep things simple if possible!

Using Kinect is an awesome idea...but Sir I have no Idea how to send Kinect's data wirelessly back to my computer.
Could you help me a bit in that?

If that can be worked out it will be amazing!

Truly it would. But you can't do it with an Arduino, maybe the Due but so far I have not seen anything to talk to the USB port and input video. That sort of setup would require a laptop on your robot.

Grumpy_Mike:

Using Kinect is an awesome idea...but Sir I have no Idea how to send Kinect's data wirelessly back to my computer.
Could you help me a bit in that?

If that can be worked out it will be amazing!

Truly it would. But you can't do it with an Arduino, maybe the Due but so far I have not seen anything to talk to the USB port and input video. That sort of setup would require a laptop on your robot.

Well the Arduino won't have to do any processing other than recieving data wirelessly and telling the motors what to do. Rest everything will be done by the laptop.

As creativen said that I could use Kinect to capture the image data and process it using Processing on the computer and send the data to Arduino for driving the motors. So if I could figure out a way to send images captured by Kinect wirelessly to my PC, it would make things really simple. Well for starters I could actually just wire my laptop to it. As this project is no school work, I am just doing it to increase my own knowledge about image processing and embedded systems.

Okay, nevermind. In India the Kinect for PC is costing around $400. That is way over my budget at the moment. So we are back to webcam.

So I will have to use a wireless webcam and process it on the computer.

I will study and learn processing. But can anyone guide me on how to exactly send data to my controller from the results generated by Processing?
Or once I study it from a normal tutorial/wiki I will know that and nothing special would be required.

I'm no expert, but I would imagine that you write code for processing to send info to the serial port. You connect an XBEE to an FDTI breakout board, which is connected to the computer.