[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: overlying an image and a contour plot




Getting the right pixel alignment can be a problem.  I also totally
agree with Mr. Bennett's suggestion that you may need to "add" an
extra half-pixel on either side.  

I like to think about it this way: CONTOUR applies to data at the
pixel *centers*, but when displaying an image you want to show every
pixel out to its edges, and that's where the two half pixels comes
from.  I would also like to point out that TVIMAGE uses CONGRID, which
has a bug in the way it interpolates, which *guarantees* that you will
be off by at least a half a pixel.  Not good.

To solve these problems I use the PLOTIMAGE procedure available from
my web page (listed below).  It makes putting images on the screen or
Postscript page easy -- especially aligning everything.

Here's how it works.  This little script assumes you have an image,
and your X and Y values:

;; Usually you want to BYTSCL your image first - I like this algorithm
IDL> b = bytscl(image, min=-100, max=100, top=!d.n_colors-3b)+1b

;; Then you compute your image boundaries.  Remember those half-pixels!
IDL> dx = x(1) - x(0) & dy = y(1) - y(0)
IDL> imgxrange = [min(x)-0.5*dx, max(x)+0.5*dx]
IDL> imgyrange = [min(y)-0.5*dy, max(y)+0.5*dy]

;; Finally, plot the image and overlay the contours
IDL> PLOTIMAGE, b, imgxrange=imgxrange, imgyrange=imgyrange
IDL> CONTOUR, image, x, y, ...

You see, most of it is a little bookkeeping.  PLOTIMAGE is nice
because you can specify an XRANGE and YRANGE independent of the image
boundaries, meaning that you can zoom in to a sub image for example.
And for astronomers, it will automatically reverse the image if
needed!

Good luck,

Craig
http://cow.physics.wisc.edu/~craigm/idl/idl.html

P.S.  PLOTIMAGE uses parts of TVIMAGE.  The good parts.  Thanks David!

-- 
--------------------------------------------------------------------------
Craig B. Markwardt, Ph.D.         EMAIL:    craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
--------------------------------------------------------------------------