필터 지우기
필터 지우기

How to determine orientation distribution in a fiber network ?

조회 수: 7 (최근 30일)
Rajesh
Rajesh 2013년 12월 10일
편집: Rajesh 2013년 12월 12일
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:
  1. Generate random pixels
  2. 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)
  3. The shortest of all those distances where value changes from '1' to '0',in both the directions, would give radial direction at that point
  4. 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
Walter Roberson
Walter Roberson 2013년 12월 10일
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) ).
Rajesh
Rajesh 2013년 12월 12일
@Walter: Thanks!! I get your point. But could you please clarify this:
1. How do I select the branch points of interest (meaning to say that I cannot pick up any two branch points, they need to be connected)? How do I ensure this? More over this process has to be automated over the entire skeleton.
2. Further more the fiber may not be a straight one. So while calculating the length, I need to traverse along the curve joining two branch points in the fiber network and not just take the euclidean distance. How do take care of this?

댓글을 달려면 로그인하십시오.

답변 (1개)

Image Analyst
Image Analyst 2013년 12월 10일
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
Image Analyst
Image Analyst 2013년 12월 12일
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.
Rajesh
Rajesh 2013년 12월 12일
편집: Rajesh 2013년 12월 12일
I took a slightly different approach. I detected the edge of the fiber network. Took the inverted image of the one cited in the thread. Found its imgradient(). This gives me the gradient direction all along the edge (radially outward). Now I multiplied the two. This gives me the direction distribution of the network along the edges. Adding up 90 degrees would give the orientation along the length of the fiber. This approach would take care of the fact if the fiber has a different orientation/behavior on either edge. Correct me if I am wrong!!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Polymers에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by