Login  Register

Re: Removing Ring Artefacts

Posted by pcloetens on Oct 01, 2008; 6:24pm
URL: http://imagej.273.s1.nabble.com/Removing-Ring-Artefacts-tp3694905p3694907.html

Gluender-2 wrote
>Hello All,
>
>I am currently working on X-Ray CT images of soil within plastic columns
>(which have been spilt in half with mesh). See the attached image for an
>example. I am having problems removing the ring artefacts present within my
>images that will effect the analysis of pore spaces present within these
>soil columns. I have checked the archives of this mailing group and the
>plugins page for ImageJ and cannot find any evident solution to the ring
>artefact problem. I know that this is a common problem, so I hope that there
>is a solution out there someone which I have simply missed on my research.
>
>Any help you can offer will be appreciated very much.
>
>Thanks,
>Sarah


I'm quite sure that those rings are not artefacts of CT image
formation. So could you please be more specific and point us to the
source of your opinion:

"I know that this is a common problem..."

Best
--

                   Herbie

          ------------------------
          <http://www.gluender.de>
Ring artifacts are common on all real world CT image systems. They correspond for example to defects of the detector. The artifact will be at a fixed position on the projections and thus form a circle (360 degrees scan) or half circle (180 degrees scan) on the tomographic slice. The best solution is to avoid these artifacts at the source or to correct on the projections. In case only reconstructed slices are available several methods are proposed in the literature. A good starting point in ImageJ could be the polar transform and its inverse:
http://rsbweb.nih.gov/ij/plugins/polar-transformer.html
After transforming to polar coordinates, the rings will appear as vertical lines. The basic idea is that it will be easier to separate these vertical lines from the object information. After filtering the vertical lines in some way, it is sufficient to go back to cartesian coordinates. I made a quick trial on the soil image. As filtering I used an horizontal average on a (manual !) selection of each vertical line. The main steps are recorded below. Maybe this can help as a starting point.
Peter

Some results:
Corrected image:

Difference:

Polar transform (360 angles instead of the 1500 used):


run("Polar Transformer", "method=Polar degrees=360 number=1500 center=827.4 center=902.4");
FILTER ON MANUAL SELECTION AROUND VERTICAL LINE
run("Convolve...", "text1=[1 1 1 1 1 1 1 1 1\\n] normalize");
run("Polar Transformer", "method=Cartesian degrees=360 for center=827.4 center=902.4");
run("Specify...", "width=1595 height=1813 x=0 y=0");
run("Crop");