'''stdin: crop and file list
x0,y0 : top left (pixels)
xs,ys : size (pixels)
-in.jpg out.jpg
+in.png out.png
...
'''
)
xs, ys = (int(i) for i in sys.stdin.readline().split(','))
images = []
-out_jpgs = []
+out_pngs = []
line = sys.stdin.readline()
while len(line):
fields = line.split()
- in_jpg = fields[0]
- out_jpg = fields[1]
- sys.stderr.write(f'read {in_jpg:s}\n')
- images.append(gamma.read_image(in_jpg)[y0:y0 + ys, x0:x0 + xs])
- out_jpgs.append(out_jpg)
+ in_png = fields[0]
+ out_png = fields[1]
+ sys.stderr.write(f'read {in_png:s}\n')
+ images.append(gamma.read_image(in_png)[y0:y0 + ys, x0:x0 + xs, :3])
+ out_pngs.append(out_png)
line = sys.stdin.readline()
images = numpy.stack(images, 0)
# get standardization parameters and remove from images
-#mean = numpy.mean(numpy.mean(images, 1), 1)
+mean = numpy.mean(numpy.mean(images, 1), 1)
#images -= mean[:, numpy.newaxis, numpy.newaxis, :]
-stddev = numpy.sqrt(numpy.mean(numpy.mean(numpy.square(images), 1), 1))
-images /= stddev[:, numpy.newaxis, numpy.newaxis, :]
+#stddev = numpy.sqrt(numpy.mean(numpy.mean(numpy.square(images), 1), 1))
+#images /= stddev[:, numpy.newaxis, numpy.newaxis, :]
+images /= mean[:, numpy.newaxis, numpy.newaxis, :]
# find a middle ground of standardization parameters and apply to images
-stddev = numpy.mean(stddev, 0)
-images *= stddev[numpy.newaxis, numpy.newaxis, numpy.newaxis, :]
-#mean = numpy.mean(mean, 0)
+#stddev = numpy.mean(stddev, 0)
+#images *= stddev[numpy.newaxis, numpy.newaxis, numpy.newaxis, :]
+mean = numpy.mean(mean, 0)
#images += mean[numpy.newaxis, numpy.newaxis, numpy.newaxis, :]
+images *= mean[numpy.newaxis, numpy.newaxis, numpy.newaxis, :]
-for i in range(len(out_jpgs)):
- sys.stderr.write(f'write {out_jpgs[i]:s}\n')
- gamma.write_image(out_jpgs[i], images[i, :, :, :])
+for i in range(len(out_pngs)):
+ sys.stderr.write(f'write {out_pngs[i]:s}\n')
+ gamma.write_image(out_pngs[i], images[i, :, :, :])