Adding scripts to generate rd-curves.
This commit is contained in:
15
rd_average.sh
Executable file
15
rd_average.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
if [ $# == 0 ]; then
|
||||
echo "usage: OUTPUT=<label> $0 *.out"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TOTAL=total.out
|
||||
|
||||
if [ -n "$OUTPUT" ]; then
|
||||
TOTAL="$OUTPUT.out"
|
||||
fi
|
||||
|
||||
awk '{size[FNR]+=$2;bytes[FNR]+=$3;psnr[FNR]+=$2*$4;psnrhvs[FNR]+=$2*$5;ssim[FNR]+=$2*$6;fastssim[FNR]+=$2*$7;}END{for(i=1;i<=FNR;i++)print i-1,size[i],bytes[i],psnr[i]/size[i],psnrhvs[i]/size[i],ssim[i]/size[i],fastssim[i]/size[i];}' $@ > $TOTAL
|
||||
106
rd_collect.sh
Executable file
106
rd_collect.sh
Executable file
@@ -0,0 +1,106 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
if [ $# == 0 ]; then
|
||||
echo "usage: DAALA_ROOT=<daala_root> MOZJPEG_ROOT=<mozjpeg_root> $0 *.y4m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $MOZJPEG_ROOT ]; then
|
||||
MOZJPEG_ROOT=.
|
||||
fi
|
||||
|
||||
if [ -z $DAALA_ROOT ]; then
|
||||
echo "DAALA_ROOT not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$PLANE" ]; then
|
||||
export PLANE=0
|
||||
fi
|
||||
|
||||
if [ $PLANE != 0 ] && [ $PLANE != 1 ] && [ $PLANE != 2 ]; then
|
||||
echo "Invalid plane $PLANE. Must be 0, 1 or 2."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$YUVJPEG" ]; then
|
||||
export YUVJPEG=$MOZJPEG_ROOT/yuvjpeg
|
||||
fi
|
||||
|
||||
if [ -z "$JPEGYUV" ]; then
|
||||
export JPEGYUV=$MOZJPEG_ROOT/jpegyuv
|
||||
fi
|
||||
|
||||
if [ ! -x "$YUVJPEG" ]; then
|
||||
echo "Executable not found YUVJPEG=$YUVJPEG"
|
||||
echo "Do you have the right MOZJPEG_ROOT=$MOZJPEG_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$JPEGYUV" ]; then
|
||||
echo "Executable not found JPEGYUV=$JPEGYUV"
|
||||
echo "Do you have the right MOZJPEG_ROOT=$MOZJPEG_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# TODO refactor these out of the daala project into a metrics project
|
||||
|
||||
if [ -z "$YUV2YUV4MPEG" ]; then
|
||||
export YUV2YUV4MPEG=$DAALA_ROOT/tools/yuv2yuv4mpeg
|
||||
fi
|
||||
|
||||
if [ -z "$DUMP_PSNR" ]; then
|
||||
export DUMP_PSNR=$DAALA_ROOT/tools/dump_psnr
|
||||
fi
|
||||
|
||||
if [ -z "$DUMP_PSNRHVS" ]; then
|
||||
export DUMP_PSNRHVS=$DAALA_ROOT/tools/dump_psnrhvs
|
||||
fi
|
||||
|
||||
if [ -z "$DUMP_SSIM" ]; then
|
||||
export DUMP_SSIM=$DAALA_ROOT/tools/dump_ssim
|
||||
fi
|
||||
|
||||
if [ -z "$DUMP_FASTSSIM" ]; then
|
||||
export DUMP_FASTSSIM=$DAALA_ROOT/tools/dump_fastssim
|
||||
fi
|
||||
|
||||
if [ ! -x "$YUV2YUV4MPEG" ]; then
|
||||
echo "Executable not found YUV2YUV4MPEG=$YUV2YUV4MPEG"
|
||||
echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$DUMP_PSNR" ]; then
|
||||
echo "Executable not found DUMP_PSNR=$DUMP_PSNR"
|
||||
echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$DUMP_PSNRHVS" ]; then
|
||||
echo "Executable not found DUMP_PSNRHVS=$DUMP_PSNRHVS"
|
||||
echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$DUMP_SSIM" ]; then
|
||||
echo "Executable not found DUMP_SSIM=$DUMP_SSIM"
|
||||
echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$DUMP_FASTSSIM" ]; then
|
||||
echo "Executable not found DUMP_FASTSSIM=$DUMP_FASTSSIM"
|
||||
echo "Do you have the right DAALA_ROOT=$DAALA_ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RD_COLLECT_SUB=$(dirname "$0")/rd_collect_sub.sh
|
||||
|
||||
if [ -z "$CORES" ]; then
|
||||
CORES=`grep -i processor /proc/cpuinfo | wc -l`
|
||||
#echo "CORES not set, using $CORES"
|
||||
fi
|
||||
|
||||
find $@ -type f -name "*.y4m" -print0 | xargs -0 -n1 -P$CORES $RD_COLLECT_SUB
|
||||
28
rd_collect_sub.sh
Executable file
28
rd_collect_sub.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
FILE=$1
|
||||
|
||||
BASENAME=$(basename $FILE)
|
||||
rm $BASENAME.out 2> /dev/null || true
|
||||
echo $BASENAME
|
||||
tail -n+3 $FILE > $BASENAME-in.yuv
|
||||
WIDTH=$(head -1 $FILE | cut -d\ -f 2 | tr -d 'W')
|
||||
HEIGHT=$(head -1 $FILE | cut -d\ -f 3 | tr -d 'H')
|
||||
|
||||
for x in {0..100}; do
|
||||
$YUVJPEG $x "$WIDTH"x$HEIGHT $BASENAME-in.yuv $BASENAME.jpeg
|
||||
$JPEGYUV $BASENAME.jpeg $BASENAME.yuv
|
||||
$YUV2YUV4MPEG $BASENAME -w$WIDTH -h$HEIGHT -an0 -ad0 -c420mpeg2
|
||||
PIXELS=$(($WIDTH*$HEIGHT))
|
||||
SIZE=$(wc -c $BASENAME.jpeg | awk '{ print $1 }')
|
||||
PSNR=$($DUMP_PSNR $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
|
||||
PSNRHVS=$($DUMP_PSNRHVS $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
|
||||
SSIM=$($DUMP_SSIM $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
|
||||
FASTSSIM=$($DUMP_FASTSSIM -c $FILE $BASENAME.y4m 2> /dev/null | grep Total | tr -s ' ' | cut -d\ -f $((4+$PLANE*2)))
|
||||
rm $BASENAME.jpeg $BASENAME.yuv $BASENAME.y4m
|
||||
echo $x $PIXELS $SIZE $PSNR $PSNRHVS $SSIM $FASTSSIM >> $BASENAME.out
|
||||
#tail -1 $BASENAME.out
|
||||
done
|
||||
|
||||
rm $BASENAME-in.yuv
|
||||
47
rd_plot.sh
Executable file
47
rd_plot.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Use this to average data from multiple runs
|
||||
#awk '{size[FNR]+=$2;bytes[FNR]+=$3;psnr[FNR]+=$2*$4;psnrhvs[FNR]+=$2*$5;ssim[FNR]+=$2*$6;fastssim[FNR]+=$2*$7;}END{for(i=1;i<=FNR;i++)print i+1,size[i],bytes[i],psnr[i]/size[i],psnrhvs[i]/size[i],ssim[i]/size[i],fastssim[i]/size[i];}' *.out > total.out
|
||||
|
||||
if [ -n "$IMAGE" ]; then
|
||||
IMAGE="$IMAGE-"
|
||||
fi
|
||||
|
||||
if [ $# == 0 ]; then
|
||||
echo "usage: IMAGE=<prefix> $0 *.out"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$GNUPLOT" -a -n "`type -p gnuplot`" ]; then
|
||||
GNUPLOT=`type -p gnuplot`
|
||||
fi
|
||||
if [ ! -x "$GNUPLOT" ]; then
|
||||
echo "Executable not found GNUPLOT=$GNUPLOT"
|
||||
echo "Please install it or set GNUPLOT to point to an installed copy"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CMDS="$CMDS set term pngcairo dashed size 1024,768;"
|
||||
CMDS="$CMDS set log x;"
|
||||
CMDS="$CMDS set xlabel 'Bits/Pixel';"
|
||||
CMDS="$CMDS set ylabel 'dB';"
|
||||
CMDS="$CMDS set key bot right;"
|
||||
|
||||
for FILE in "$@"; do
|
||||
BASENAME=$(basename $FILE)
|
||||
PSNR="$PSNR $PREFIX '$FILE' using (\$3*8/\$2):4 with lines title '${BASENAME%.*} (PSNR)'"
|
||||
PSNRHVS="$PSNRHVS $PREFIX '$FILE' using (\$3*8/\$2):5 with lines title '${BASENAME%.*} (PSNR-HVS)'"
|
||||
SSIM="$SSIM $PREFIX '$FILE' using (\$3*8/\$2):6 with lines title '${BASENAME%.*} (SSIM)'"
|
||||
FASTSSIM="$FASTSSIM $PREFIX '$FILE' using (\$3*8/\$2):7 with lines title '${BASENAME%.*} (FAST SSIM)'"
|
||||
PREFIX=","
|
||||
done
|
||||
|
||||
SUFFIX="psnr.png"
|
||||
$GNUPLOT -e "$CMDS set output \"$IMAGE$SUFFIX\"; plot $PSNR;" 2> /dev/null
|
||||
SUFFIX="psnrhvs.png"
|
||||
$GNUPLOT -e "$CMDS set output \"$IMAGE$SUFFIX\"; plot $PSNRHVS;" 2> /dev/null
|
||||
SUFFIX="ssim.png"
|
||||
$GNUPLOT -e "$CMDS set output \"$IMAGE$SUFFIX\"; plot $SSIM;" 2> /dev/null
|
||||
SUFFIX="fastssim.png"
|
||||
$GNUPLOT -e "$CMDS set output \"$IMAGE$SUFFIX\"; plot $FASTSSIM;" 2> /dev/null
|
||||
Reference in New Issue
Block a user