GOES Satellite Downlink Capture

This video is from the GOES Satellite imaging sensor over a 24 hour period.

I captured this using a SawBird LNA, a WiFi dish, an RTL-SDR, and the XRIT decoding software.

 

Screenshot of the “groundstation terminal.”

Source code to compile the video is below.

import os
import glob

import cv2
import matplotlib.pyplot as plt
import numpy as np
import tqdm

data_dir = r'C:\Users\laptop\Desktop\SDR\XRIT-Suite-Winter-20\images'
files = sorted(glob.glob(os.path.join(data_dir, '*full*fsclr*.png')), key=os.path.getmtime) # full disk
files = files[53:53+48+2]
N = len(files)

# Make mask
img = cv2.imread(os.path.join(data_dir, 'G16-Full Disk-FSCLR-202102101800.png'))
mask = np.mean(img, axis=2) == 0
mask[:162,:] = 0 
mask[5617:,:] = 0
mask = (~mask.astype('bool')).astype('uint8')

images = np.zeros((N, 5961//2, 5424//2, 3), dtype='uint8')
for fidx, f in enumerate(files):
   #img = cv2.cvtColor(cv2.imread(f), cv2.COLOR_BGR2RGB)
   img = cv2.imread(f) 
   if img.shape[0] != 5961:
      continue
   # Post process
   img = cv2.medianBlur(img, 7)
   img = img*mask[:,:,None]

   img = cv2.resize(img, (0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
   images[fidx,:,:,:,] = img

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi',fourcc, 30, (5424//2, 5961//2))
for k in tqdm.tqdm(np.linspace(0,N-2,N*15)):
   f = int(np.floor(k))
   offset = k - f
   print(offset)
   frame = ((1-offset)*images[f,:,:,:].astype('float32') + offset*images[f+1,:,:,:].astype('float32')).astype('uint8')
   out.write(frame)

out.release()
print('done')