summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorjules <jules@asdf.us>2018-05-01 20:28:52 +0200
committerjules <jules@asdf.us>2018-05-01 20:28:52 +0200
commit956a336c0d1f6ce34cda072b542fd483f241a673 (patch)
tree6818baee3b3f928c56ed1842806ac6052530d71b /scripts
parent20662ee305cd21838078eab97568bbbbb9acffd0 (diff)
dataset build scripts
Diffstat (limited to 'scripts')
-rw-r--r--scripts/builders/canny-dir.py40
-rw-r--r--scripts/builders/flow-dir.py75
-rw-r--r--scripts/builders/pair-dataset.pl55
3 files changed, 170 insertions, 0 deletions
diff --git a/scripts/builders/canny-dir.py b/scripts/builders/canny-dir.py
new file mode 100644
index 0000000..ae1bd62
--- /dev/null
+++ b/scripts/builders/canny-dir.py
@@ -0,0 +1,40 @@
+import os
+from shutil import move, copyfile
+from PIL import Image, ImageOps
+from shutil import copyfile, rmtree
+import numpy as np
+import cv2
+
+work_dir = "woodsized/"
+render_dir = "woodcanny/"
+
+if os.path.exists(render_dir):
+ rmtree(render_dir)
+
+os.makedirs(render_dir)
+os.makedirs(render_dir + "A/")
+os.makedirs(render_dir + "A/train/")
+os.makedirs(render_dir + "A/test/")
+os.makedirs(render_dir + "A/val/")
+os.makedirs(render_dir + "B/")
+os.makedirs(render_dir + "B/train/")
+os.makedirs(render_dir + "B/test/")
+os.makedirs(render_dir + "B/val/")
+
+for i,fn in enumerate(sorted(os.listdir(work_dir))):
+ pil_image = Image.open(work_dir + fn).convert('RGB')
+ opencv_image = np.array(pil_image)
+ opencv_image = opencv_image[:, :, ::-1].copy()
+ opencv_image = cv2.GaussianBlur(opencv_image, (3,3), 1)
+ opencv_image = cv2.Canny(opencv_image, 100, 200)
+ ren = "frame_{:05d}.png".format(i)
+ if (i % 10) == 3:
+ wd = "test/"
+ elif (i % 10) == 6:
+ wd = "val/"
+ else:
+ wd = "train/"
+ cv2.imwrite(render_dir + "A/" + wd + ren, opencv_image)
+ copyfile(work_dir + fn, render_dir + "B/" + wd + ren)
+
+
diff --git a/scripts/builders/flow-dir.py b/scripts/builders/flow-dir.py
new file mode 100644
index 0000000..da35fbd
--- /dev/null
+++ b/scripts/builders/flow-dir.py
@@ -0,0 +1,75 @@
+import os
+import sys
+from shutil import move, copyfile
+from PIL import Image, ImageOps
+from shutil import copyfile, rmtree
+import numpy as np
+import cv2
+
+work_dir = "woodsized/"
+render_dir = "woodflow/"
+
+if os.path.exists(render_dir):
+ rmtree(render_dir)
+
+os.makedirs(render_dir)
+os.makedirs(render_dir + "A/")
+os.makedirs(render_dir + "A/train/")
+os.makedirs(render_dir + "A/test/")
+os.makedirs(render_dir + "A/val/")
+os.makedirs(render_dir + "B/")
+os.makedirs(render_dir + "B/train/")
+os.makedirs(render_dir + "B/test/")
+os.makedirs(render_dir + "B/val/")
+
+hsv = []
+
+for i,fn in enumerate(sorted(os.listdir(work_dir))):
+ # load image and convert to grayscale
+ pil_image = Image.open(work_dir + fn).convert('RGB')
+ im = np.array(pil_image)
+ im = im[:, :, ::-1].copy()
+ im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
+
+ # store first frame
+ if i == 0:
+ prev = im
+ hsv = np.zeros((256,256,3))
+ hsv[...,1] = 255
+ continue
+
+ # compute optical flow
+ flow = cv2.calcOpticalFlowFarneback(prev, im, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+
+ # turn into magnitude/angle
+ mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
+
+ # store angle as hue
+ hsv[...,0] = ang * 180 / np.pi / 2
+
+ # store magnitude as lum
+ hsv[...,2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX)
+
+ # convert this HSL to BGR
+ bgr = cv2.cvtColor(hsv.astype('uint8'), cv2.COLOR_HSV2BGR)
+
+ ren = "frame_{:05d}.png".format(i)
+ if (i % 10) == 3:
+ wd = "test/"
+ elif (i % 10) == 6:
+ wd = "val/"
+ else:
+ wd = "train/"
+
+ if i == 1:
+ prev_hsv = np.copy(hsv)
+ prev_bgr = np.copy(hsv)
+ continue
+
+ cv2.imwrite(render_dir + "A/" + wd + ren, prev_bgr)
+ cv2.imwrite(render_dir + "B/" + wd + ren, bgr)
+ # copyfile(work_dir + fn, render_dir + "B/" + wd + ren)
+ prev = im
+ prev_hsv = hsv
+ prev_bgr = hsv
+
diff --git a/scripts/builders/pair-dataset.pl b/scripts/builders/pair-dataset.pl
new file mode 100644
index 0000000..06c40c0
--- /dev/null
+++ b/scripts/builders/pair-dataset.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+use strict;
+
+our $images_dir = "/home/ubuntu/Desktop/wood/";
+our $thumbs_dir = "/home/ubuntu/Desktop/thumbs/wood/";
+
+our $dt = 1;
+
+mkdir($thumbs_dir);
+mkdir($thumbs_dir . "A/");
+mkdir($thumbs_dir . "B/");
+mkdir($thumbs_dir . "A/train/");
+mkdir($thumbs_dir . "B/train/");
+mkdir($thumbs_dir . "A/val/");
+mkdir($thumbs_dir . "B/val/");
+mkdir($thumbs_dir . "A/test/");
+mkdir($thumbs_dir . "B/test/");
+
+our @files = ();
+
+opendir DIR, $images_dir;
+while (readdir DIR) {
+ next if /^\./;
+ push(@files, $_);
+}
+closedir DIR;
+
+our @images = sort @files;
+
+my $count = scalar(@images) - $dt;
+
+my $i; my $x; my $y; my $dir;
+for ($i = 0; $i < $count; $i++) {
+ my $id = $i;
+ if ( ($id % 7) == 3) {
+ $dir = "test/";
+ } elsif ( ($id % 7) == 6) {
+ $dir = "val/";
+ } else {
+ $dir = "train/";
+ }
+ if ( $i && ($i % 1000) == 0) {
+ print($id . "...\n")
+ }
+
+ my $a_frame = $images_dir . $images[$id];
+ my $b_frame = $images_dir . $images[$id+$dt];
+ my $fn = sprintf("frame_%05d.png", $i);
+ #print "$fn $x $y $a_frame\n";
+ system("convert", $a_frame, "-resize", '256x256!', '-canny', '0x1+10%+30%', $thumbs_dir . "A/" . $dir . $fn);
+ system("convert", $b_frame, "-resize", '256x256!', $thumbs_dir . "B/" . $dir . $fn);
+}
+print $count . "\n";
+