Few, but very informative and useful responses about
2D to I vs. 2theta plot conversion and image
processing.

My original message was:

1) Some data collection and image processing files
have the options to show the intensity distribution
over a user-defined "line" in the image. Does any
program allow one to trace a line from the beam center
to 
the detector edge and save this intensity distribution
to a file, so one could have I vs. 2theta data (or
even a I vs. pixel data file, which could be easily
converted to a I vs. 2theta file given the
experimental 
setup)?

2) Is there a program which could convert image files
from common 2D detectors (Mar345, MarCCD, RaxisII...)
to a text file with the intensity on each pixel so one
could easily write programs to do things such as in
(1)?

3) If the answer to 2 is "No, you should learn how to
handle binary files and image data formats", is there
a tutorial on how to do this (I would prefer C/C++,
but Fortran is OK), or some well-documented open
source code I could study?

==============================================================
James Holton wrote:

I recommend Andrew Hammersley's program "FIT2D" for
doing this.

http://www.esrf.eu/computing/scientific/FIT2D/

You can integrate a 2-D image into a 1-D profile using
the "POWDER" command.  You want to set up the image
geometry with the "GEOM" command first.  Then you have
the option to get I vs 2theta in the output. You can
also go from a 1-D profile to a 2-D image with the
"SYMFUNC" command.

FIT2D can also interconvert a number of image file
formats.  When it can't output the file format you
want, you can usually just export the image data as
"binary" and slap a new header on it.  For example, if

you read in a Bruker image to FIT2D and want to make
it an ADSC-type image, then you can export the data
("OUTPUT") as binary integers ("BIN"), using the
filename binary.bin, then you can do this:

head -512c frame_001.img >! header
vi header
head -512c header >! newimage.img
cat binary.bin >> newimage.img

Here you are "stealing" a header from a pre-existing
image "frame_001.img".  You can edit the header with a
text editor if you like, but make sure it stays as 512
bytes (you can run the saved text through "head -512c"
to truncate it).  This will let you display the 
Bruker data frame in ADXV.  You might need to play
around with byte swapping in FIT2D to make it work.

To get binary data into text, I find it most
convenient to use the unix program "od" (octal dump). 
The dump does not have to be octal and you can
arbitrarily set where in the file to start dumping and
what format 
to dump it.  For example, dumping a MarCCD image goes
something like this:

od -v -t u2 -w2 -j 4096 frame_0001.mccd

Will dump all the 2-byte words in the image, starting
with the first pixel in the image.  The only problem
is if the pixels are byte-swapped.  A quick-and-dirty
way to un-swap bytes is:

od -v -t u1 -w2 -j 4096 frame_0001.mccd | awk '{print
$2*256+$3}'

Will dump as single bytes, and then you convert them
into the equivalent 2-byte value with awk.

The x-y coordinate of the pixel can be worked out from
the sequence.  
For example, if you have a 4096x4096 image,

od -v -t u2 -w2 -j 4096 frame_0001.mccd | awk '{print
x+0,y+0,$2;++x} 
x>4096{++y;x=0}'

Will dump x,y,and I for every pixel in the image. 
This output file will be quite large and this is
DEFINITELY not the fastest way in the world to do
this.

-James Holton
MAD Scientist

==============================================================
Graeme Winter wrote:

Hi Lucas,

There is a C++ library called DiffractionImage which
may help with #3 if you get that far:

http://www.ccp4.ac.uk/newsletters/newsletter45/articles/DiffractionImage.html

If you get in touch with Francois Remacle I'm sure
he'll send you everything you need.

Cheers,

Graeme 

==============================================================
Jon Wright wrote: 

Fit2d is perhaps the 'gold standard' for making powder
diagrams:

http://www.esrf.eu/computing/scientific/FIT2D/

See also:

http://www.datasqueezesoftware.com/

For source code try:

http://cctbx.sourceforge.net/current_cvs/python/iotbx.detectors.html

Good luck,

Jon

==============================================================

Thanks a lot,
Lucas Bleicher


       
____________________________________________________________________________________
Novo Yahoo! CadĂȘ? - Experimente uma nova busca.
http://yahoo.com.br/oqueeuganhocomisso 

Reply via email to