comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: what is the most convenient way to read an image generated by ENVI in IDL
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: what is the most convenient way to read an image generated by ENVI in IDL [message #32590 is a reply to message #32584] Tue, 22 October 2002 01:40 Go to previous messageGo to previous message
Peter Scarth is currently offline  Peter Scarth
Messages: 9
Registered: February 2000
Junior Member
Hi Julia,
Assuming that you have ENVI on the system, you can use something like the
following (pseudocode?) to read an ENVI image, and write the processed
results back to an ENVI format file. Check the ENVI help for more info on
the batch functions. If you don't have ENVI you will have to write some code
to read the header. I have a kludgy solution I can send if you want.

Peter
--
(Change xmg to gmx to reply!)


PRO envi_batch_processing_demo
COMPILE_OPT strictarr

; Restore the ENVI save files and initialise
ENVI, /restore_base_save_files
ENVI_BATCH_INIT

; Open, query and read the entire image into an array
; Change dims and/or the pos variables to read in a subset
ENVI_OPEN_FILE, 'test.img', r_fid=fid
ENVI_FILE_QUERY, fid, ns=ns, nl=nl,nb=nb,$
interleave=interleave,data_type=data_type,offset=offset
dims = [-1, 0, ns-1, 0, nl-1]
imgdata = ENVI_GET_DATA(fid=fid, dims=dims, pos=indgen(nb))

;
; Processing goes here to produce processed_data
;

; Write the output into a file...
; A simpler way might be to use the
; WRITE_ENVI_FILE procedure available at
; http://www.rsinc.com/services/output.cfm?tip_id=2787
fname = 'processed.img'
OPENW, unit, fname, /get_lun
WRITEU, unit, processed_data
FREE_LUN, unit

; Create an ENVI header for convenience
; Change ns, nl, nb, data_type, interleave and offset below
; if your processed_data differs from the input in type or size!

ENVI_SETUP_HEAD, fname=fname, ns=ns, nl=nl, nb=nb, $
interleave=interleave, data_type=data_type,$
offset=offset, /write

ENVI_BATCH_EXIT
END




"Julia" <julia65201@yahoo.com> wrote in message
news:ap2fi4$3oq$1@dipsy.missouri.edu...
> Hi, there,
>
> After some operations in ENVI, I output the resulting image using the
format
> '.img'. It's an multispectral image.
> The '.hdr' head file is like this:
> ENVI
> description = {
> image [Fri Oct 18 11:01:10 2002]}
> samples = 116
> lines = 261
> bands = 4
> header offset = 0
> file type = ENVI Standard
> data type = 4
> interleave = bsq
> sensor type = Unknown
> byte order = 0
>
> My question is: how can I read this file using IDL functions?
> Now I am doing this using the following:
> imgdata = READ_BINARY('test.img', DATA_TYPE = 4, DATA_DIMS = [116, 261,
> 4]).
>
> But I need to specify the data type and dimensions of the image. How can I
> read it more generally that I need to specify nothing? Is there other
> functions in IDL?
>
> Any suggestion will be appreciated.
>
> Regards,
>
> Julia
>
>
>
[Message index]
 
Read Message
Read Message
Read Message
Previous Topic: Re: Finding the mean of a set of images
Next Topic: Re: Image fusion algorithm...

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 13:37:17 PDT 2025

Total time taken to generate the page: 0.79990 seconds