I developed a Labview/vision program 6 or 7 years ago that would count small objects on a stationary platform. It would count as many as 200 objects in a 2 inch square area. I now need to count approximatley 2000 of these small ojects on a conveyor belt. These objects are not single file. 5 to 10 objects will pass a given point every second. Any thoughts on the best method to do this? My only thought is to use a line scan camera and create one big image file or several and then patch together.
Let me know If my understanding is right. 5 to 10 objects will pass a particular point evry second and u need to count them? or do you mean in each oh the object that is passing through there will be particles in the range of 2000 that you need to process and count?
The quantity of objects has increased. So now, instead of counting only 100 to 200 objects, we need to count approximately 2000 objects. The current system is most effective at counting approx. 100 objects. So now, with the new batch orders of 2000, we have to make 20 plus counts in order to verify a count of 2000. I want to streamline the counting process and run them across a small conveyor and count them on the fly. These objects are a small titanium wire. .032" diameter and .177" long. very shiny and easy to detect against a black background. All wires are the same size, there are no additional particles. The speed at which they pass a certain point is really yet to be determine. The main point is that they are not single file. So the idea is similar to an aircraft passing across a radar screen. indentify each object, mark it, count it once and let it pass off the radar on the other side.
1. The speed if in cconsistent will be a problem with the line scan camera unless you get a feedback
2. Since these are titanium wires why not use a through beam sensor.
By using a through beam sensor you can count as many objects as possible even if the conveyor speed is varying.
Even better i will suggest you use a through beam sensor as a trigger for capturing the image.
I recently did an application similar to this. I acquired a strip at a time from a linescan camera. I thresholded the strip, then added it to the top of my processing image. I use particle analysis to get information on each item in this image. All the particles touching the top edge (y min = 1 or 0) are ignored and left for future analysis. All the particles that are not touching the top edge are processed (counted in your case) and removed from the image. In your case, you could use IMAQ Label to number the particles, then use threshold to eliminate the higher numbered particles that aren't touching the edge. Slide the processing image down to make space for the new strip at the top and repeat the loop.
This algorithm gives you fast, realtime counting of the objects. It does assume that nothing is touching each other, though. You would have to add some more to the particle analysis to determine if a single particle was actually multiple pieces. I would consider looking at the area of the particle, which would be a multiple of the area of a single piece.
On my application, I had to know the exact size and location of each piece, so I used an encoder to control the linescan camera.
In this application, if you are just trying to count binary particles, the size and shape are not critical. As long as the conveyor is moving at a fairly constant speed, it should work fine. If the conveyor is starting and stopping or moves erratically, I would recommend an encoder to trigger the camera.