image processing : computing the axis of a long bone

3 views (last 30 days)
Hey everyone .. i hope someone can point me to a solution, i am trying to find the angle between two long bones - known as the Q-angle ( have to process about 6000 x-ray images )
what i want to do is to draw a center line trough the first bone, and a center line through the second bone and then calculate the angle between those two lines. Please how can i approach the problem ?
any help will be appreciated, thanks

Accepted Answer

Matt J
Matt J on 8 Dec 2012
Edited: Matt J on 8 Dec 2012
You can draw the lines using RBLINE
Roger Stafford recommends this formula for finding the angle between 2 vectors a and b
angle = atan2(norm(cross(a,b)),dot(a,b))*180/pi;
There are some long threads on it in the Newsgroup arguing that it behaves better numerically than other formulas.
  2 Comments
mounim
mounim on 8 Dec 2012
Edited: mounim on 8 Dec 2012
thank your for your answer, for using that formula, i have to click manualy on the picture. But since i'am going through 6000 x-rays, i need to do that automaticly.
i was thinking about this strategy :
  1. 1- defining the edge of the bone
  2. 2- drawing 2 parallel lines in the top bone
  3. 3- defining the points where the drawn line intersect with the edge of the bone
  4. 4- define the middel point between the 2 points ( from 3 )
  5. 5- draw a line between the 2 dots and then i will get my axis
does it make sense ? can i do it this way ?
Matt J
Matt J on 8 Dec 2012
Yes, that seems plausible to me. You could use EDGE to find the edge points in conjunction with find(...,'first/last') or max/min to get the edge points on opposing sides of the bone. You might, however, need to fit a line to more than 2 mid-line points to get a good fit to that line.
A similar direction might be to use bwmorph(...,'skel',inf) to get the skeleton of the bones.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!