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? |
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) |
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. |
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 |
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 |
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 |
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. |
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 > |
Free forum by Nabble | Edit this page |