From: Alistair Templeton on
Greetings,

I should preface this (as I do all my posts) by saying I'm still a rookie at image processing. I submit this to any of you gurus who have the time and attention to spare. Sorry this is so verbose:

I'm trying to automate what we call a Winston-Lutz test, where we shoot radiation through a circular cone onto a capture device, which in this case is a digital detector array (basically an x-ray). The point of the test is to see whether we can align a metal ball of a given size such that the bounds do not extend past the outside of the field.

please let me know if there's a better way to share the images
http://img709.imageshack.us/i/centered.png/
http://img651.imageshack.us/i/noten.png/



In a nutshell, I have one bigger, very clear circle of exactly known size. Inside that (but possibly partially occluded) is a much blurrier circle, also of known size within <.1 pixel. The attenuation of the radiation outside the field is large enough that the ball's extra attenuation is non-detectable, hence the partial occlusion.

I'm trying to use the Hough transform to detect the circles, particularly this implementation:

http://www.mathworks.com/matlabcentral/fileexchange/9168-detect-circles-with-various-radii-in-grayscale-image-via-hough-transform

This is basically dummy-proof for finding the circle representing the radiation field. However, that gradient is so dominant that the ball within seems invisible.

So, any words of guidance? Specifically:

Am I barking up the right tree with the Hough Transform?
Do I need to somehow get rid of the outer circle once I've found it, in order to find the ball? This is impossible to do perfectly, because of sampling issues.

Any tips would be wonderful!