Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

leg bone fracture detection using x-Ray images

Status
Not open for further replies.

johnperera

Newbie level 6
Newbie level 6
Joined
Aug 16, 2010
Messages
11
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Visit site
Activity points
1,368
heyyy,
I am doing a project on leg bone (Tibia) fracture detection using image processing. I am using digital x-Ray bone fracture images to deal with this project. I was not able to find a proper method to identify bone fractures on above mentioned bone due to the high noise and variations of the fracture types.

Does anyone have any idea how to handle this project using x-ray bone fracture images??? i have attached an image of that bone.



Thankx..
 

Well, if I were to handle this problem, I would first try to locate the bone axis, than try to find a few parameters that would somehow correlate with fractures (like, for example, ratio of max distance of dense tissue from axis to average distance of same). Then try to find clusters of of points in N-dimensional space (N=number of parameters) for images with fractures.
 

    johnperera

    Points: 2
    Helpful Answer Positive Rating
Thankxx for replying on this....

@ bassa,
well im trying to segment the bone without using ANN. Femur fracture detection based on ANN training images. Also when it comes to tibia bone, its really hard to find a texture on each bone. i was trying, segment bone area (like thresholding)--> then fracture detection. but it was hard bcoz of the noise of image.. so you have any idea on tht segmenting a bone 4m tht image??

@ ddeenn,
as i think to locate the axis, 1st i have to locate the bone area ryt??? i have a problem vth tht (segmenting bone area). bcoz different images have different histograms. So finding global threshold value is really difficult.

soo if you can suggest me a method to segment the bone area is really helpful me to move on this project. Plzz correct me if the way i approached is wrong.

kind regards
 

I guess I would try something like the following.
Suppose the image has 8-bit pixels with values from 0 to 255 where higher value means higher tissue density.
1. Experimentally determine two threshold values: A - the value below which the pixel is definitely not a bone, B - the value above which the pixel is definitely a bone.
2. Set all pixels with value below A to 0, and with values above B to 255.
Then execute something like this.
boolean changed= true;
while(changed) {
changed = false;
for(x=0;x<sizeX; ++x) {
for(y=0; y<sizeY; ++y) {
pixel = image[x][y];
if(pixel!=0 && pixel!=255) {
nA = calculateNumberOfNeighboursWithValue(x,y,0);
nB = calculateNumberOfNeighboursWithValue(x,y,255);
/* maximum 8 neighbours */
if(nA>4) { image[x][y]=0; changed = true; }
else
if(nB>4) { image[x][y]=255; changed = true; }
}
}
}

}

When this finishes, most of the bone area will probably be 255 values, while most non-bone area should be 0 values. The rest is gray area, but from viewpoint of finding the bone axis it is not relevant -- the 255 values will form enough of a picture to represent the bone shape.
I have one more idea... There is a system called ArcGIS. It is a geographic information system, and it allows to do calculations on rasters and see results immediately. It has a lot of useful raster functions to play with, like pixel classification based on different criteria... If I were you, I would get some system like this and play with different raster conversion functions to form an idea of what works and what doesn't.
 

Dear ddeenn,

Thanks a lot. Let me check that using C#. Hope your method will segment the bone area. Is it possible to get color intensity values to check a fracture existence ?.. i was thinking connected component labeling. bt the case is, if the bone doesn't break into 2 or more completely this methods is nt working properly.. nw researching on tht as well.

i am interesting on ur ideas.

Regards...
 

hey guysss,

i need a help on identifying bone fracture area. depend on bone fracture type the bone's angle is getting vary. I was not able to find a proper method to detect bone fracture areas.....

any ideaaaaaa plzzzzzzzzzzzzzzzzzzzzzzzzzz.....!!!
 

First convert the image to black and white (ie. not gray scale)
Run a despeckle noise remover
Next use an edge detection algorithm to trace the white areas
(you can invert the image if that gives better results.)

(To try all these things photopaint has the basic functions - you
will just need to create your own better tailored versions if you
like the method.)

Next finesse the edge detection ensuring all sections are closed
Next count the enclosed sections.

If you have more than a leg normally has you have a break.

Edge detection is fairly simple - try sourceforge for code.
If stuck try doing a search on alta vista (not google please) for
"sobell" and spelling variations
(sorry this was long ago and I forget spelling of the name)

If you get really stuck - try searching technical sites for image
processing code for welding and pipe fracture applications.


----------------
jack
 

    johnperera

    Points: 2
    Helpful Answer Positive Rating
Thankx Mr. Jack,

I'm bit stuck, Bcozz I'm newer to image processing area. Your idea is simple and efficient :).... hope this works finee.

If u hv any links regarding to this area, plzz be kind enough to keep a reply on this. I'm tryn on ur idea...:) to detect the fracture..

Regards....
 

Hi

I had a quick go last night. I havn't done image processing for a long time but the trick has always been to use multiple filters in specific sequencies to get the best results.

If you load the image you posted into Photoshop / photopaint (any of the free disk versions are fine)
you can play around with different filters to adjust the image to a point where some specially written software can take over.

By noting what stages & filters bring the image to the best state you will have a really quick and good starting point to work from.

Your images can be reduced to remove the flesh component very simply by adjusting the gamma or intensity graph in photopaint then you move on to isolating the edges. Photopoaint can do some simple stuff but you would be better off custom writing something at that point. (One trick is to use an embossing filter to help raise edges)

As you mention the images may be from different angles - one rule of thumb is to attempt to minimaise that as much as possible - the more standard your image the easier it will be to process.

Dont forget you can use pre-created shape masks to
overlay your bone image to indicate to your software
a standard outline etc. That can be a powerful help.

good luck

-------------------
jack
 

Hiii Jack,

I did some gamma Correction and i inverted the color of the image. The output was quite good. But the thing is the values (gamma correction, threshold, etc) in not the same for each bone.

edge detection (sobell), used to separate the edges. after analyzing 4 images, I felt that separating enclosed object also bit hard. Because, if it is a hairline fracture edge detection method won't work well :(..
 

Yes - with this type of problem you have to experiment a lot and work with a number of different filters to obtain and average method that works best then work at refining it. Because of the many issues involved there isn't an "out of the box" formula for this type of problem you can just sit down and implement.

The problem -like many- is a lot more complex than it first appears.

I can tell you from experience that it can be done and the suggestions I've made are for working towards finding a solution rather than simply providing one (I wish I could just do that for you!).

The only alternative is to buy specialist software that already does the job. (Thinking outside the box I suggested weld fracture software because I know that works and solves a very similar problem - even down to the images being X-Ray generated)

This is the sort of problem that companies tend to solve internally and keep quietly milking for years.

In practial terms there are a number of things to do
that can help you depending on what level of control you can exert over each process: This is probably how I would approach it:-

1. Standardise the image as much as possible
(Angle taken, lighting conditions, digitisation methods etc.) This will have the most effect on simplifying things if you can do it.

2. Create a number of manually adjusted images - ideally from different sources and analize the original hue- saturation - gamma and whatever you can and create a "difference file set of data" between the original images and the ones you manually create to establish a pattern of variation.

All of this is just to write the image preperation code
to try and establish a clean image methodology.

3. Then do another set of test with the result from that code to extract the shapes from the image that are of interest using a combination of whatever filters you can find that work best. Maybe edge detection maybe not.

4. Create again - an averaging methodology to extract the shapes

5. Create a methodology to decide if the shape extraction is good or requires manual intervention
for the exceptions to the rule

6. create a method of deciding if the shapes constitute a fracture or not.

You will notice that the image preperation is the hard part - the fracture part (the bit you really want) is the easier bit at the very end. ;-)

If all this sounds hard/complex - that's because it is.

You've set yourself a very challenging and fun task

I hope you can get through it and profit suitably for the work involved.

-----------------------
jack

Added after 3 minutes:

PS

TIP
Incidentally - you have a couple of very nice straight lines in those images - one thing that may help is to rotate the images so the leg bones are perpendicular
That will give your software something standard to look for.
(Look at OCR software for a source of doing that if it isnt available elsewhere - OCR does it as standard)

-----------------------
jack
 

    johnperera

    Points: 2
    Helpful Answer Positive Rating
Hey Mr. Jack,

I'm really happy on your ideas. I was jst pissed off with this project. You encouraged me to move on this project. Thanks for that bone perpendicular idea (OCR) as well. I'll go through that as soon as possible. :).

What I have understood is, this project needs simple ideas rather than thinking of complex theories. I'll let you know, the progress of the project while i am developing.

Thank for everyone, you guys motivated me a lot. :).

Feel free to make your valuable ideas on this interesting project. :)

thanks....
 

Hii,

I'm back again :D.. I need a proper edge enhancement method to apply before doing edge detection. I did that using photoshop ( called smart sharpen filter) . It helped to obtain proper edges of bone boundary.

Does anyone know a similar filter to enhance the edges of the bone boundary?.
or any sample code also fine. I'm doing this using C#.net.

Thanks....
 

My first port of call would be sourceforge.net
other than that I'd have a root around the public .edu FTP or gopher pages.
(Assuming gopher is still used ... I miss my gopher... :cry:)

jack
 
Hii,

I have attached 2 images, one is sobell applied ( Not thresholed), other one is thresholded after sobell edge detection. Both images show the edges clearly. but i think without thresholding the image is more clear.

So just go through that images when you are free. Also i need some idea on how to detect the bone fractures on this images. As i think reading the bone boundary is the best.

waiting for your valuable ideas.

Regards,
 

Hii all,

I have applied sobel horizontal edge detection for the images using some free software. It was able to detect horizontal line (hairlines) on the bone. Then i was trying implementing that algorithm using C#. but the it gives so many line than the that software did. So i tried to remove that noise pixels using filter. But it destroyed the image (all the horizontal lines).

Any idea on this? Are there any problem with implementing that algo in C#?? Any C# code for this?? let me know ASAP. :???::???:

regards.,
 

The only real way to do what you are now trying to do - is to do it.
Try things and see what does or doesnt seem to work.

If you are searching for horizontal lines - have you tried to find
anything specific about a fracture line that is different from the other lines?
Then part of your solution is to locate that.

Perhaps a fracture generates a thicker line - or an "echo" line. Maybe the fracture has more of a "shaddow" under or around it.

Maybe you could "quaranteen" specific portions of the image - ie. test inside square blocks that a simpler algorithm says may be of interest (higher portion
of white to black perhaps) that should speed up runtime and testing.

You are pretty much on your own at this stage.

jack
 

hi every one i find this thread now because i have same problem
i tried to use matlab to make project that detect fractures in long bones i tried to use snake method and hough transformation to do that but
i didn't reach to any result so any one can help me?????
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top