Software > Software

Machine Vision : Getting Started

(1/2) > >>

Hi there,

My name is Ian and I am new to the forums, although I always have been interested looking through the website.

I am currently wanting to find out more about computer vision and am very excited about the new tutorials John has put up on his site. I have also looked through some Google pages, but often find that the information I get is somewhat beyond a beginner, and some is not comprehensive at all.

Some of it is also lacking in how it would be used in a practical application.

I am going to be doing a 4th year project which is involved with a firewire camera above a table with some robots on, and this, by looking down on the robots, will set up a control when the robots are not doing what they are supposed to.

I was thinking along the lines of Lego Mindstorms NXT, LeJOS and the Java Media Framework, but am still open as to what to do. Maybe a bluetooth or Zigbee module on a microcontroller driven robot would be better in a lot of ways?

I was just wondering if anyone knew a good way to get started with the concept, and maybe even a way I could get going with a simple application that I could build on?

Will be interested to see your replies!

I'm just getting started, too, and I can't advise you on hardware choices yet.  Others on this forum will probably be able to do that.  I'm using a couple of cheap webcams and my own apps.

Here are some preliminary thoughts about the software functions.  I'll stick with the 2D vision, because the 3D stuff gets deep quickly.  Let me know if any of this was useful.

One aspect of the task you mentioned is that it can make use of a template.  It's like that old addage, "If you want to recognize a counterfeit, you need to know what the real thing looks like."

For instance, if you want to handle the situation in which a robot gets too close to the edge of the table, you can do it by defining a "no robots land" at the edges.  Compare just that portion of the video with the same portion of a still shot of the table and look for significant differences that persist from one frame to the next.  You will have to ignore bad frames, columns, rows and pixels because technology isn't perfect.  You may also run into issues with "glare and shadow intrusion" from people entering the room and whatnot.

You can add logic to refresh the still shot periodically, if you want to increase the adaptability of the system.  That can lead to the next level of analytical sophistication.  An example where this might be useful is if the light level of the room slowly changes over the course of the day.

If your table has surface details, like a pattern, you might have to use a mathematical process to deal with camera vibration.  Assuming that the features of the pattern are fine enough, you can monitor the average color of a group of pixels.  If the contrast of the pattern is not very high, then you can decrease the resolution of the pixel attributes in order to zero out the difference.  It's a good idea to make your robots a different color than your table.

Will you have some sort of symbol on top of your robots that can be easily isolated and used to detect the orientation and identity of each of them?

ivr1, what you ask for has been done by hundreds of teams for the Robocup competition.

basically there is an overhead camera looking down on groups of robots for control. google for teams that have participated, as the winners are required to publish all of their work.

Oh that's really cool!

It will be 2D stuff i'm dealing with, and had no idea that the robocup was allowed a camera above it.

I will now have a lot of fun trawling through the archives hehe.

Thanks again people! You are a real help :)

Good luck with your project and let us know how it comes out.   ;D


[0] Message Index

[#] Next page

Go to full version