How to determine orientation distribution in a fiber network ?
15 views (last 30 days)
Show older comments
I am processing SEM images of cellulose network. I am not sure as to how to go about determining the orientation distribution of the fiber network. The algorithm that I thought of is:
- Generate random pixels
- If the value at that pixel is '1' I have landed inside the fiber network. Draw arbitrary lines through those pixels (at angle step of ,say, 5 or 10 degrees)
- The shortest of all those distances where value changes from '1' to '0',in both the directions, would give radial direction at that point
- At any pixel the orientation of the fiber would be perpendicular to the direction that gives me the shortest distance
An algorithm for diameter distribution was suggested previously but that approach did not take care of the spatial orientation of the fiber network.
A sample image is given below:
How should I go for the implementation my algorithm? Any alternate algorithm suggestion would be appreciated.
Regards,
Rajesh
4 Comments
Walter Roberson
on 10 Dec 2013
Once you have skeletonized in MATLAB, you can find the branch points, and the connectivity information. Then from two (x,y) pairs, you can compute the angle -- it is atan2( (y2 - y1), (x2 - x1) ).
Answers (1)
Image Analyst
on 10 Dec 2013
Use imgradient() to get the gradient direction. Multiply by the skeleton to get the gradient direction only at fiber centerlines. Then take the histogram to get the distribution of directions.
3 Comments
Image Analyst
on 12 Dec 2013
imgradient() will give you the direction of fastest slope. So I was thinking that if you take the gradient of the euclidean distance transform , at the centerlines of the fibers, the slope would point towards the edge, right? You want the distribution of just the gradient along the centerlines so we need to extract out just the gradients there. So if we multiply by the skeleton we'll get zero everywhere except at the centerlines where we'll have the directions of the centerline. Follow me so far? So then if we take the histogram of that then we'll have the distribution I think you're looking for. If you want the direction along the fiber instead of perpendicular to it, then that's just 90 degrees added to the histogram. Does it make more sense now. I haven't done this so if I'm totally wrong, let me know.
See Also
Categories
Find more on Image Segmentation and Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!