Asked by mounim
on 8 Dec 2012

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

*No products are associated with this question.*

Answer by Matt J
on 8 Dec 2012

Edited by Matt J
on 8 Dec 2012

Accepted answer

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.

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- defining the edge of the bone
- 2- drawing 2 parallel lines in the top bone
- 3- defining the points where the drawn line intersect with the edge of the bone
- 4- define the middel point between the 2 points ( from 3 )
- 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
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.

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 0 Comments