Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

crack

Solved!
Go to solution

Hi

I'm working on my M.Vision course project which aims to find the total length of the cracks on a peice of mud brick ( fig. 1 )

I have Imaq & Labview 8.2.1 in this project.

after applying some filters such as ,Extract RGB, threshold,.... , the skeleton of the cracks extracted(fig. 4 ), then  i used shape detection function to find the  total length of the cracks by summing the length of each resulted line.

Actually ,after creating the VI by Imaq , we sum the length parameter output  in the labview.

 any way, my problems  in this project are:

*  I dont know why the shape detection missed some parts of the skeleton(fig. 2 ) and in the other hand , the overlap of the lines ocurred in some parts(fig. 3). of course  i should remember that my script is attached as best.scr .

now,how can i rearrange the settings of the Shape Detection  to achive the best accuracy?

 

*  I wonder if someone could help me on understanding the meaning of the settings of the shape detection function that are mentioned in the fig. 5 and their effects on my result.

 

*In your opinion, is there any better method to find the total length of the cracks in my image??

 

** note that : i'm using labview 8.2.1 & Imaq 8.2.1

 

 

Thanks a milion  for your help !

 

Waiting to hear from you ...

 

M.Roodi

Explo.mech@gmail.com


 

Download All
0 Kudos
Message 1 of 6
(4,448 Views)

Hello M.Roodi,

 

This is a very interesting application. The problem with the shape detection is that it is looking for straight lines and that is difficult with the curved cracks. This is the main reason that lines are either missed or overlapping.

 

I would suggest looking at the context help of the NI Vision Assistant; there it will tell you more about the different functions that you show in picture five. Let me know if you need further clarification about any of them.

 

Instead of using the Shape Detection, I would use Particle Analysis. You can have it tell you the Perimeter and divide that by two to get a decent calculation of the length. I suggest doing that step after you perform the Skeleton function, but feel free to compare that with doing the Perimeter after the threshold function, also.

 

Best Regards,

 

Nathan B

Applications Engineer

National Instruments

 

Message 2 of 6
(4,402 Views)

Dear Nato :

first of all,Thanks for your attention to my problem.

your solution seems to be applicable. i'll test it soon and report the results.

do you have any idea about removing dendrits made by skeleton filter?

I want to know why such dendrits are made. and i'm trying to remove them from the skeleton to achive a better accuracy as they are interfering in the perimeter calculation. 

for me, the only and only problem is dendrits on the body of the skeleton. i need an smooth skeleon to complete the project.

I hope your profession and kindness would help me to achieve the goal.

 

thanks in anticipations

 

Masoud Roodi

 

 

 

0 Kudos
Message 3 of 6
(4,397 Views)
Solution
Accepted by xhs

Hello Masoud Roodi,

 

The best options we have right now are to dilate and then erode the after the skeleton function, and possibly add them with open and close functions until the desired lack of dendrites are achieved. These dendrites are a result of the skeleton fictions method of minimizing the particles to a single line of pixels.

 

Page 9-25 of the NI Vision Concepts Manual shows the structuring element used to accomplish this minimization, which then causes the dendrites.

 

There might also be ways of subtracting the images, if you could isolate the dendrites and other pixels you do not wish to keep. Also, if you could get rid of the pixels where each dendrite starts to branch from the main line, then you could remove the smaller lines with a Particle Filter.

 

Best Regards,

 

Nathan B

Applications Engineer

National Instruments

Message 4 of 6
(4,373 Views)

Dear Nathan B

thanks again for your guidance.

i've almost checked your offers. as i found, we cannot take a better skeleton by dialation and erodind , even by applying close and open functions.

you know it may destroy the correct form of the skeleton.

 

to distinguish the base pixels of dendrits, i used a FFT filter. i dont khow how does this filter eliminate these pixels, but just by testing, i found it useful in this cases. you can see its effect and how i used it in the attached script .

 

then by applying the particle filter i could remove small particles. this would give us a skeleton with less dendrits.

 

i'm not sure if i could find any better way to do this.  do you have any better idea?

 

Download All
0 Kudos
Message 5 of 6
(4,361 Views)

Hello Masoud Roodi,

 

That seems to be a very effective way of getting rid of a lot of the dendrites. I do not know of a much more effective way of getting rid of the dendrites while leaving the rest of the image intact. You might be able to create a LabVIEW function that looks at all the pixels in a radius of the end of a line of pixels and connects them, but I believe that your current method is the best in the terms of effectiveness and the amount of processing.

 

Best Regards,

 

Nathan B

Applications Engineer

National Instruments

0 Kudos
Message 6 of 6
(4,325 Views)