[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SHOWIMAGE posted (companion to SAVEIMAGE)
- Subject: Re: SHOWIMAGE posted (companion to SAVEIMAGE)
- From: davidf(at)dfanning.com (David Fanning)
- Date: Thu, 5 Aug 1999 18:25:01 -0600
- Newsgroups: comp.lang.idl-pvwave
- Organization: Fanning Software Consulting
- References: <37AA08B4.AEA9F5B5@ssec.wisc.edu>
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:16006
Liam Gumley (Liam.Gumley@ssec.wisc.edu) writes:
> I just posted a new procedure named SHOWIMAGE at
>
> http://cimss.ssec.wisc.edu/~gumley/imagetools.html
Really nice programs, Liam. I like them a lot. And
I'm bummed I didn't think of the idea. :-)
I have a couple of questions and a bug report. :-(
Why are you doing this in ShowImage:
;- Sort the color table from darkest to brightest
table_sum = total([[long(r)], [long(g)], [long(b)]], 2)
table_index = sort(table_sum)
image_index = sort(table_index)
r = r[table_index]
g = g[table_index]
b = b[table_index]
oldimage = image
image[*] = image_index[temporary(oldimage)]
I just can't figure out what this does.
And why do you reduce the number of colors on an 8-bit
display? Is it because a GIF image, for example, may have
more colors than your IDL session? What if it does and you
can't reduce the number of colors? Is there any way to
display the GIF image correctly then?
I happened to be fooling around in IDL when this post
showed up, so I just downloaded the code and tried it
out. I'm running IDL 5.2 in 24-bit mode. I thought I
would see how it did on a 24-bit image, so I chose
the rose.dat file in the IDL/examples/data directory:
ShowImage, 'C:\RSI\IDL52\EXAMPLES\DATA\ROSE.JPG'
It worked great, except the colors were all screwed up. :-(
The problem, of course, is that I had a color table loaded
in my IDL session (and the DECOMPOSED keyword set to 0,
naturally), and IDL took these RGB colors through
the color tables because in this Windows version of
IDL it does that.
Here is your code:
;- Display 8-bit or 24-bit image
if info.channels eq 1 then begin
;- Display 8-bit image
device, get_decomposed=current_decomposed
device, decomposed=0
tvlct, r, g, b
tv, image
device, decomposed=current_decomposed
endif else begin
;- Display 24-bit image
tv, image, true=1
endelse
But, unfortunately, you have to do the same DECOMPOSED trick
for 24-bit displays:
;- Display 24-bit image
device, get_decomposed=current_decomposed
device, decomposed=1
tv, image, true=1
device, decomposed=current_decomposed
But here is the REALLY good news! Your program works *perfectly*
in IDL 5.2.1, because the folks at RSI really do listen to users
sometimes, and they fixed this annoying bug! :-)
But all in all, some really nice, extremely useful software.
Thanks for taking the time to do it. I have a feeling I'm going
to be using it just about every day. :-)
Best Regards,
David
P.S. Martin Schultz hasn't been in contact with you, has he?
I used to hear from him several times a day for a week after
I posted new software. I hope he's not going soft back there
in Germany. :-)
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155