Image Gradient

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Image Gradient

Dan Siler
I am X-raying tangents of cones/cylinders with the following chord lengths
taken every 0.100 inches.

2.3967”
3.3776”
4.1221”
4.7430”
5.2839”
5.7675”
6.2071”
6.6115”
6.9868”
7.3376”

This gives intensities in the part that range from 3043 to 515

What would be the best way to flatten the image gradient?
Reply | Threaded
Open this post in threaded view
|

Re: Image Gradient

Dr. Ulrich Mletzko
At 15:07 21.12.2005, Dan Siler wrote:

>I am X-raying tangents of cones/cylinders with the following chord lengths
>taken every 0.100 inches.
>2.3967"
....
>7.3376"
>This gives intensities in the part that range from 3043 to 515
>What would be the best way to flatten the image gradient?

Do you want to flatten the 'image gradient' or the 'x-ray intensity gradient'?

The first question should be no problem, using contrast manipulation or
histogramm equalization tools, available in almost all image processing
software, including ImageJ.

The second question is more difficult.

Let's assume, that you have 'narrow beam' attenuation (i.e. lead or
tungsten or uranium iris collimators on the source side and on the detector
side) and a linear intensity response of the detector. Then the measured
x-ray intensity is depending on the chord length according to the well
known exponential intensity attenuation law. To flatten, you have three
possibilities:
(i) Use of a pre-filter (some millimeters of copper plate, e.g.) between
x-ray source and specimen, to attenuate the low or 'weak' energy parts of
the x-ray spectrum (to 'harden up' the spectrum).
(ii) Use of a higher x-ray energy (i.e. higher voltage), as up to some MeV
the attenuation coefficients are decreasing with increasing energy.
(iii) Use of a detector with non-linear response (or working near the
saturation of the detector).

If you have 'broad beam' attenuation according to a cone beam geometry
without  iris collimators, you could try the same measures. But the image
quality in general would be lower, as you have additional scattered
radiation to the detector from both the specimen and the environment.

Regards
Uli Mletzko
NDT Group, Materials Testing Institute,
University of Stuttgart (Germany)
Reply | Threaded
Open this post in threaded view
|

Re: Image Gradient

Dan Siler
In reply to this post by Dan Siler
I have tried histogram equalization from several software packages but the
images contain severe vertical banding. I don't know if this is caused by
how the intensities are mapped to the monitor or graphics card or both.
This makes if hard to find vertical flaws. Different monitors/graphic
cards seem to give different results. Does someone have a suggestion on
how to fix this or montitor/graphics card recommendations if that is the
problem. These are 4096 gray scale images.

The images are taken using 4 Mev with a tungstun collimator at the source
only. Also we are using a linear intensity response CCD 1536 X 1024
detector.

Thanks for your help this has suggested options that may help with the
problem.
Reply | Threaded
Open this post in threaded view
|

Re: Image Gradient

Gabriel Landini
On Thursday 22 December 2005 18:40, Dan Siler wrote:
> I have tried histogram equalization from several software packages but the
> images contain severe vertical banding. I don't know if this is caused by
> how the intensities are mapped to the monitor or graphics card or both.

The bands are due to the the mapping of the input image into the equalised
histogram function which has discrete levels.

If you need to have a smooth histogram without gaps (let's say to do some
histogram fitting) you could add a very tiny small amount of noise to the
image after the equalisation.

Cheers,

Gabriel
Reply | Threaded
Open this post in threaded view
|

imageID list in macro

Soichiro Yamada
I am writing a macro that uses two images.  In Dialog window, I would  
like an option for the users to choose two images from open windows.  
To do this I need to know the image IDs of images that are currently  
open. I could not find a build-in macro function to do this. It would  
be an equivalent of windowManager.getIDList().  Any help?

Thanks in advance.

So

Soichiro Yamada
Molecular & Cellular Physiology Dept
Stanford University
tel: 650-725-7553
email: [hidden email]
url: http://nelsonlab.stanford.edu
Reply | Threaded
Open this post in threaded view
|

Re: imageID list in macro

Gabriel Landini
On Thursday 22 December 2005 19:38, Soichiro Yamada wrote:
> I am writing a macro that uses two images.  In Dialog window, I would
> like an option for the users to choose two images from open windows.
> To do this I need to know the image IDs of images that are currently
> open. I could not find a build-in macro function to do this. It would
> be an equivalent of windowManager.getIDList().  Any help?
>

You could loop from 1 to nImages, to selectImage(i), get their title and put
it into an array.

Cheers,

Gabriel
Reply | Threaded
Open this post in threaded view
|

Re: Image Gradient

Bevic, Jordan
In reply to this post by Dan Siler
Dan:

The discrete binning ("vertical banding")is caused by the equalization
algorithm itself, and is not a function of how the image was obtained.

The method involves remapping the image (as in a Look Up Table) using
the cumulative intensity distribution (CD) that has been scaled from
zero to the maximum gray level. Unless your initial histogram is a
straight line from zero to 4096 (so that the scaled CD has values at all
grey levels), there will be some gray values that aren't represented
(this is like missing codes in an analog to digital converter).

Adding noise before equalizing will smooth out the CD, making more gray
levels available in the final image (the final image will still have
noticeable binning, but they will be closer together).

Adding noise after equalizing will spread each bin out, but will not
change their spacing.

Of course, adding noise before and after equalization would give the
smoothest final image.


Jordan Bevic

AVS Engineering
QuadTech
A Subsidiary of Quad/Graphics
Sussex, Wisconsin
414-566-7493 phone
[hidden email]
www.quadtechworld.com

 


-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
Dan Siler
Sent: Thursday, December 22, 2005 12:41 PM
To: [hidden email]
Subject: Re: Image Gradient

I have tried histogram equalization from several software packages but
the
images contain severe vertical banding. I don't know if this is caused
by
how the intensities are mapped to the monitor or graphics card or both.
This makes if hard to find vertical flaws. Different monitors/graphic
cards seem to give different results. Does someone have a suggestion on
how to fix this or montitor/graphics card recommendations if that is the

problem. These are 4096 gray scale images.

The images are taken using 4 Mev with a tungstun collimator at the
source
only. Also we are using a linear intensity response CCD 1536 X 1024
detector.

Thanks for your help this has suggested options that may help with the
problem.
Reply | Threaded
Open this post in threaded view
|

Re: imageID list in macro

Soichiro Yamada
In reply to this post by Gabriel Landini
Thanks Gabriel.  That worked. So

// check open images
titles=newArray(nImages);
count=0;
testid=-1;
while (count<nImages) {
     if (isOpen(testid)) {
         selectImage(testid);
         titles[count]=getTitle();
         count++;
     }
     testid--;
}


Soichiro Yamada
Molecular & Cellular Physiology Dept
Stanford University
tel: 650-725-7553
email: [hidden email]
url: http://nelsonlab.stanford.edu


On Dec 22, 2005, at 11:50 AM, Gabriel Landini wrote:

> On Thursday 22 December 2005 19:38, Soichiro Yamada wrote:
>
>> I am writing a macro that uses two images.  In Dialog window, I would
>> like an option for the users to choose two images from open windows.
>> To do this I need to know the image IDs of images that are currently
>> open. I could not find a build-in macro function to do this. It would
>> be an equivalent of windowManager.getIDList().  Any help?
>>
>>
>
> You could loop from 1 to nImages, to selectImage(i), get their  
> title and put
> it into an array.
>
> Cheers,
>
> Gabriel
>