## image processing : computing the axis of a long bone

on 8 Dec 2012

### Matt J (view profile)

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

## Products

No products are associated with this question.

on 8 Dec 2012
Edited by Matt J

### Matt J (view profile)

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.

mounim

### mounim (view profile)

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.

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 (view profile)

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