LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Extracting Drop Outline

Hi,

I am trying to extract the outline of a hanging drop
I want to extract the data to an array containing the outline's (x,y) pixel-coordinates, ordered so as to follow the curve.

I have converted a greyscale image of a hanging drop to a binary image of its contour (See attached Image)
After the image processing, I tried using "IMAQ Extract Curves.vi" and "IMAQ GetPointsOnContour.vi" but they don't consistently result in one single curve.
In some cases, I get several incomplete and overlapping sections of the curve - even though to the eye, the curve is almost identical to examples which work.

Is there a way to extract the coordinates of a curve as a single ordered data set?

Unless there happens to be a better Curve Detection function, I was thinking of listing all the black pixels in an image (how???) and then sorting them so that they are arranged in the proper order to follow the drop.

I've attached some of the sample contours and drops that I'm using.

Thank you very much for your help!
0 Kudos
Message 1 of 5
(3,147 Views)
Should this be on the Machine Vision Board???
0 Kudos
Message 2 of 5
(3,122 Views)

It may be a good idea. 

R

0 Kudos
Message 3 of 5
(3,117 Views)
Dear yegeniy,

I was able to get all of your images to come back with one curve using the IMAQ Extract Curves VI by setting the extraction mode to "uniform" and the edge filter size to "fine". See attached the simple example VI that I used (saved for LV 8.0). I wonder if these settings work for all of your other images, or if you will still get some images that return multiple curves.

If you do still have some images that return multiple curves, hopefully the below information will help you in finding an appropriate way to order the curve points.

If you set the extraction mode back to normal, you'll get multiple curves. The example I have attached will take the array of points generated for each curve, and compile them into one large array, which is then used for the overlay. This array should contain the points ordered according to the curves found, but in reverse order. I've also included a method to break out the x and y coordinate arrays so that you can find the min and max values, perform array manipulation, etc...

Best Regards,

Nate


0 Kudos
Message 4 of 5
(3,103 Views)
Thank you so much Nate. This is exactly what I was looking for!
0 Kudos
Message 5 of 5
(3,090 Views)