Initial commit, sharks and high_five after postprocessing
[stop_motion.git] / post.py
1 #!/usr/bin/env python3
2
3 import gamma
4 import numpy
5 import perspective
6 import scipy
7 import scipy.ndimage
8 import sys
9
10 sys.stderr.write(
11   '''stdin: crop and file list
12 x0,y0 : top left (pixels)
13 xs,ys : size (pixels)
14 in.jpg out.jpg
15 ...
16 '''
17 )
18
19 x0, y0 = (int(i) for i in sys.stdin.readline().split(','))
20 xs, ys = (int(i) for i in sys.stdin.readline().split(','))
21
22 images = []
23 out_jpgs = []
24 line = sys.stdin.readline()
25 while len(line):
26   fields = line.split()
27   in_jpg = fields[0]
28   out_jpg = fields[1]
29   sys.stderr.write(f'read {in_jpg:s}\n')
30   images.append(gamma.read_image(in_jpg)[y0:y0 + ys, x0:x0 + xs])
31   out_jpgs.append(out_jpg)
32   line = sys.stdin.readline()
33 images = numpy.stack(images, 0)
34
35 # get standardization parameters and remove from images
36 #mean = numpy.mean(numpy.mean(images, 1), 1)
37 #images -= mean[:, numpy.newaxis, numpy.newaxis, :]
38 stddev = numpy.sqrt(numpy.mean(numpy.mean(numpy.square(images), 1), 1))
39 images /= stddev[:, numpy.newaxis, numpy.newaxis, :]
40
41 # find a middle ground of standardization parameters and apply to images
42 stddev = numpy.mean(stddev, 0)
43 images *= stddev[numpy.newaxis, numpy.newaxis, numpy.newaxis, :]
44 #mean = numpy.mean(mean, 0)
45 #images += mean[numpy.newaxis, numpy.newaxis, numpy.newaxis, :]
46
47 for i in range(len(out_jpgs)):
48   sys.stderr.write(f'write {out_jpgs[i]:s}\n')
49   gamma.write_image(out_jpgs[i], images[i, :, :, :])