#!/usr/bin/env bash
set -e
# hugin command tools script to stitch scanned images, fov unknown
# use of fov >= 10 should be OK, could simply set FOV=10
# Terry Duell 2013, 2014, 2015

usage() {
    self="$(basename "$0")"
    echo "Usage: $self outputprefix image image..."
}

#get the output file prefix
Prefix="$1"
if [ -z "$Prefix" ]; then
    usage
    exit 1
fi
shift

if [ -e "$Prefix.tif" ]; then
    echo "Output file $Prefix.tif already exists, aborting"
    exit 1
fi

# get the fov
FOV=10

WORKSPACE="$(mktemp -d)"
trap 'rm -rf "$WORKSPACE"' EXIT

#export TMPDIR="$WORKSPACE"

pto_gen --projection=0 --fov="$FOV" -o "$WORKSPACE"/project.pto "$@"
#pto_lensstack -o "$WORKSPACE"/project1.pto --new-lens i1 "$WORKSPACE"/project.pto
cpfind -o "$WORKSPACE"/project1.pto --fullscale --multirow --sieve1size 500 --sieve2width 20 --sieve2height 20 "$WORKSPACE"/project.pto
cpclean -o "$WORKSPACE"/project2.pto "$WORKSPACE"/project1.pto
linefind -o "$WORKSPACE"/project3.pto "$WORKSPACE"/project2.pto
pto_var -o "$WORKSPACE"/setoptim.pto --set x=0,y=0 --opt TrX,TrY,TrZ,r,Eev,Ra,Rb,Rc,Rd,Re,!TrX0,!TrY0,!TrZ0,!r0,!Eev0,!Ra1,!Rb1,!Rc1,!Rd1,!Re1 "$WORKSPACE"/project3.pto
autooptimiser -n -o "$WORKSPACE"/autoptim.pto "$WORKSPACE"/setoptim.pto

# --crop=AUTO
pano_modify  --projection=0 --fov=AUTO --center --canvas=AUTO -o "$WORKSPACE"/autoptim2.pto "$WORKSPACE"/autoptim.pto
# Fix some LZW corruption of nona output (110422 b.tif)
sed -i -e 's/^#hugin_outputLayersCompression LZW/#hugin_outputLayersCompression NONE/' "$WORKSPACE"/autoptim2.pto
hugin_executor -s -p "$Prefix" "$WORKSPACE"/autoptim2.pto
cp "$WORKSPACE"/autoptim2.pto "$Prefix.pto"
