Intro: Satellite Time-Lapse
Overview: I was adding Widgets to my iGoogle one day and found a cool little deal that displayed NOAA weather satellite images taken by the geosynchronous GEOS series. There are nine different views, with three different "spectra" available to each: Visible, Infrared and Water Vapor. Visible of course means half the pictures would be dark. IR is pretty much continuous, but looks like what you would expect clouds would look like from orbit. Pretty boring now days. But the Water Vapor channel... Wow! These looked like black & white images of Jupiter’s cloud tops!
Actually, the WV Channel is simply a narrow band IR view, from 8 km in the atmosphere, "tuned" to water vapor’s frequency. I understand the basics, but not the details. As a visual artist, I’m interested in the images. As an animator, I have always loved those nightly weather report loops. But they never went longer than 24 hours! And they never showed the Water Vapor channel.
After a bit of left & and right clicking on the NOAA images, I eventually found myself at a good old fashioned online directory listing! A true antique, as most servers no longer offer this. What was listed was line after line of .GIF images in sequence. All nine views with their three spectral channels.
The archives only go back 30 days, so for lengthy or on-going work multiple visits are required. The images are taken every 30 minutes, there are about 48 "frames" per day. The filenames are coded to reveal which camera, spectra, time and date each image was taken.
Step 1: Download Images
In theory all I need do is right-click on any image I want and download it to my local computer. But being a lazy human, I figured that there must be a easier way, since I wanted thousands. A short search of the Web turned up “Adsen Image Grab” which as its name would imply, was just the tool I was looking for! Best of all, it was freeware.
You start the program, enter in the Web site, then click whether to download displayed or linked images. However, I soon realized a serious drawback to this approach. If I went to the NOAA directory listing page, I would have to slog through the entire directory listing of a month’s worth of images: 48 per day; times 30 days; times 9 different views; times 3 three differential spectral channels equals a whopping 38,880 .GIF images at 160k per file! And I really only want just the water vapor, and only from the West Coast view, (I live in Oregon).
So I decided the simplest solution would be to create my own temporary Webpage listing of just the images I want. Then have Image Grab go there instead. In the FireFox browser, when you press the CTRL and U keys at the same time, the HTML code of the page you are viewing opens up in a new window. Called “Reveal Codes” the view shows the raw HTML code that makes up the directory listing. Depending on your connection speed, this may take awhile, as there is more than 38,880 lines of code.
Once the listing loads, I select the block of images I want, choose COPY (CTRL / C), then open up my HTML editor, and PASTE in the text, (CTRL / V). One can also choose SELECT ALL (CTRL / A) to copy the entire listing, then edit that down. Your choice.
In the original code, all the links to the images are of course local, or “relative links” as we say in the HTML editing field. This is because the images are on the same server as the Webpage. Once the modified listing is posted on my server, I need to change all those local links to “Absolute” links. A global search and replace editing action does this pretty quick. We need to add the full path to the image name, for example:
"ALIR092950030.GIF" becomes: "http://www.goes-arch.noaa.gov/ALIR092950030.GIF"
The code, generated by the Web server, also displays a generic image icon graphic next to the linked filename. I remove this line at the same time with one process. The result is a new Webpage, with just those images I want to download linked diercetly back to the NOAA server. I load the URL of that page into Adsen Image Grab. First you will need to wait for Image Grab to identify all the linked images. After that you select them all, and start the download process. then wait for the images to download into the pre-configured folder on my local machine. Depending on how many of the images are chosen, the wait can vary quite a bit. I often start these things before I leave for the evening or before I go to bed. But keeping in mind that the archives only go back 30 days, if you wait too long to start the process, older images may no longer be available.
Step 2: Processing the Images
Check for image glitches: I now have a month's worth of pictures, for the most part taken 30 minutes apart and sequentially numbered. At this point I could start Quicktime and import them into a video clip. This is what I did the first time in fact. I soon discovered that there were errors in some of the images. Every so often there would be dark longitudinal black lines that would appear. They varied in position and size, and sometimes appeared in clusters.
Could be indicative of solar activity, and worth further study. But I'm an artist and I think they look ugly! So I have developed a quick procedure to remove these lines. I use Jasc PaintShop Pro 6 for this Instructable, but, pretty much any imaging editing program with layering capability will work for this. PSP has a very nice image browse feature, which allows me to view all the images in a particular folder as tiny thumbnails. I can usually spot the bands by scrolling through the listings.
When found, I load that image, and the one preceding it, (assuming it is band-free). The band free image I choose CTRL / A to select the entire image, then I choose CTRL / C to copy it to the clip board. Close this image. With the image with the band open, I want to make a new layer.
1. To do this I must first convert the 8bit GIF image to a 24bit image that will support layers.
2. Then I paste to a new layer the copied frame over the banded original.
3. Hide the new top layer, and return to the banded bottom layer.
4. Using the magic wand selection tool, (0 Tolerance / 0 Feather), select the black band.
5. Hold the SHIFT key to add new selected elements to the selection.
6. Once all the band is selected, invert the selection.
7. While this is still selected, un-hide and return to the top layer.
8. Press the delete key.
9. Flatten, convert back to 8bit and save.
Depending on how anal the artist is, further tweaking, smudging or selective blurring can be performed before flattening.
Some times, there are blank frames. Fortunately they are few and far between. Sometimes simply removing them will result in a “jump cut" in the video playback. So to fix this, I use a variation of the previous band fix.
1. I load the blank frame with both the preceding and following frames.
2. Convert the blank frame to 24bit
3. Copy the preceding frame, and close that file
4. Paste it to a new layer on top of the blank frame
5. Copy the following frame and close it
6. Paste it to a new layer over the previous day
7. Under the layer properties, change the OPACITY to 50%
8. Flatten, convert back to 8bit and save
And also sometimes frames are just missing completely. Determining how many can help in recreating somewhat the gap, to at least smooth out the final motion. Note the time between images. If there is more than 30 minutes, then a frame is gone.
Step 3: Create a Satellite Time-Lapse Video
We have a folder of over 1400 sequential GIF images, polished and prepped. Next step is to make them into a movie. Again, we load them into Quicktime as an image sequence. Quicktime player is a free, cross-platform video player. But if you upgrade to Quicktime Pro, you unlock a suite of extremely useful video and audio tools. And while not free, the $29.99 price is actually a bargain.
The main unlocked tool we are going to use is the OPEN IMAGE SEQUENCE feature, under the FILE menu. Navigate to the folder where our sequence is and click on the first file. Below the filename is the FRAME RATE selection. This determines how many frames per second, (fps) are played back. On the Windows version, it defaults to 29.97fps, the standard frame rate of U.S. Television. On the Mac version, it comes up as what ever the last setting was. Higher frame rate means faster action. Lower frame rate equals slower action. Too low, (12fps and less) the action appears "choppy" and not smooth. Experiment with different rates.
The final file size is dependent upon the original frames. And with over 1400 images at 160kb per image, file sizes can grow quick. This is why I convert my .GIFs into lightly compressed .JPeGs. The same sequence saved as 1400 .GIF images resulted in a video clip with a size of 124mb, while a .JPeG sequence of the same images was 102mb, with no observable difference in quality. This can be done automagically within PSP via the Batch Convert selection under the File menu. Quicktime Pro also allows for the export to other formats such as Flash video, MP4 or AVI.
Conclusion: This process of course can be expanded upon. One thing I dislike is the "administrative clutter" in the frames, so that I have developed a number of "Cropping Actions" for PhotoShop, that work as macros to selectively crop out and resize various portions of these GOES frames. The Alaska view for example has a large area of the Pacific Ocean, free of those annoying geopolitical lines. I have also experimented with colorizing these clips using various PhotoShop filters with some strange and exotic effects. Below is an extreme example: