From 0b7f3e2285594c9c449d61695711690981143cb6 Mon Sep 17 00:00:00 2001
From: Toke Eskildsen <te@ekot.dk>
Date: Wed, 4 Dec 2013 14:43:55 +0100
Subject: [PATCH] Grey stats shows highest spike

---
 analyze.sh          | 21 +++++++++++++--------
 image_template.html |  5 +++--
 quack.sh            |  5 ++++-
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/analyze.sh b/analyze.sh
index e4c6dd6..b741bcb 100755
--- a/analyze.sh
+++ b/analyze.sh
@@ -51,21 +51,25 @@ function grey_stats() {
     local IDENTIFY=$(im_identify "$SRC")
     local GREY=${SRC%%.*}.grey
     local INFO=`cat "$IDENTIFY"`
-    # TODO: No good as large images does not produce a Colormap
+    # TODO: No good as the histogram data might be much less than 256
     local VALUES=`cat "$IDENTIFY" | grep -A 256 Histogram`
+    local RAW_VALUES=`echo "$VALUES" | grep "[0-9]\\+: ("`
 #    local VALUES="$INFO"
 
     local SAVEIFS=$IFS
     IFS=$(echo -en "\n")
     
-    local UNIQUE=`echo $VALUES | grep "[0-9]\\+: (" | wc -l`
+    local UNIQUE=`echo $RAW_VALUES | wc -l`
 
-    local FIRST_COUNT=`echo $VALUES | grep "[0-9]\\+: (" | head -n 1 | grep -o " [0-9]\\+:" | grep -o "[0-9]\\+"`
-    local FIRST_GREY=`echo $VALUES | grep "[0-9]\\+: (" | head -n 1 | grep -o " ([0-9 ,]*)" | sed 's/ //g'`
-    
-    local LAST_COUNT=`echo $VALUES | grep "[0-9]\\+: (" | tail -n 1 | grep -o " [0-9]\\+:" | grep -o "[0-9]\\+"`
-    local LAST_GREY=`echo $VALUES | grep "[0-9]\\+: (" | tail -n 1 | grep -o " ([0-9 ,]*)" | sed 's/ //g'`
+    local FIRST_COUNT=`echo $RAW_VALUES | head -n 1 | grep -o " [0-9]\\+:" | grep -o "[0-9]\\+"`
+    local FIRST_GREY=`echo $RAW_VALUES | head -n 1 | grep -o " ([0-9 ,]*)" | sed 's/ //g'`
     
+    local LAST_COUNT=`echo $RAW_VALUES | tail -n 1 | grep -o " [0-9]\\+:" | grep -o "[0-9]\\+"`
+    local LAST_GREY=`echo $RAW_VALUES | tail -n 1 | grep -o " ([0-9 ,]*)" | sed 's/ //g'`
+
+    local SPIKE_COUNT=`echo $RAW_VALUES | sort -n | tail -n 1 | grep -o " [0-9]\\+:" | grep -o "[0-9]\\+"`
+    local SPIKE_GREY=`echo $RAW_VALUES | sort -n | tail -n 1 | grep -o " ([0-9 ,]*)" | sed 's/ //g'`
+
     local GEOMETRY=`echo $INFO | grep "Geometry: [0-9]\\+x[0-9]\\+" | grep -o "[0-9]\\+x[0-9]\\+"`
     local X=`echo $GEOMETRY | grep -o "[0-9]\\+x" | grep -o "[0-9]\\+"`
     local Y=`echo $GEOMETRY | grep -o "x[0-9]\\+" | grep -o "[0-9]\\+"`
@@ -74,12 +78,13 @@ function grey_stats() {
     # http://stackoverflow.com/questions/8402181/how-do-i-get-bc1-to-print-the-leading-zero
     local PERCENT_FIRST=`echo "scale=2;x=$FIRST_COUNT*100/$PIXELS; if(x<1) print 0; x" | bc`
     local PERCENT_LAST=`echo "scale=2;x=$LAST_COUNT*100/$PIXELS; if(x<1) print 0; x" | bc`
+    local SPIKE_PERCENT=`echo "scale=2;x=$SPIKE_COUNT*100/$PIXELS; if(x<1) print 0; x" | bc`
     
     echo "$PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY" > "$GREY"
 
     IFS=$SAVEIFS
 
-    echo "$PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY"
+    echo "$PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY $SPIKE_COUNT $SPIKE_PERCENT $SPIKE_GREY"
 }
 
 # Produces a histogram over greyscale intensities in the given image
diff --git a/image_template.html b/image_template.html
index 68f59c1..469f396 100644
--- a/image_template.html
+++ b/image_template.html
@@ -26,8 +26,9 @@ ${IDPREVS}
 ${ALTERNATIVES}
 <p class="histogram"><img src= "${HISTOGRAM}" width="256" height="200" alt="histogram"/></p>
 <p class="greystats">
-${GREY_FIRST}: ${GREY_PERCENT_FIRST}%<br/>
-${GREY_LAST}: ${GREY_PERCENT_LAST}%<br/>
+Darkest ${GREY_FIRST}: ${GREY_PERCENT_FIRST}%<br/>
+Spike ${GREY_SPIKE}: ${GREY_PERCENT_SPIKE}%<br/>
+Lightest ${GREY_LAST}: ${GREY_PERCENT_LAST}%<br/>
 Unique greyscale values: ${GREY_UNIQUE}<br/>
 ALTO-accuracy: ${ACCURACY}%
 <p><input type="checkbox" id="toggle_grid" onClick="toggleGrid();">Grid</input></p>
diff --git a/quack.sh b/quack.sh
index a7eb86c..b5603bf 100755
--- a/quack.sh
+++ b/quack.sh
@@ -700,7 +700,7 @@ function makePreviewPage() {
     # TODO: Use destination if that is lossless and faster to open?
     local GREY=`grey_stats "$SOURCE_IMAGE"`
 
-    # $PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY
+    # $PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY $COUNT_SPIKE $PERCENT_SPIKE $GREY_SPIKE
     # 1000095 512 82362 8.23 (0,0,0) 255 .02 (255,255,255)
     GREY_PIXELS=`echo "$GREY" | cut -d\  -f1`
     GREY_UNIQUE=`echo "$GREY" | cut -d\  -f2`
@@ -710,6 +710,9 @@ function makePreviewPage() {
     GREY_COUNT_LAST=`echo "$GREY" | cut -d\  -f6`
     GREY_PERCENT_LAST=`echo "$GREY" | cut -d\  -f7`
     GREY_LAST=`echo "$GREY" | cut -d\  -f8`
+    GREY_COUNT_SPIKE=`echo "$GREY" | cut -d\  -f9`
+    GREY_PERCENT_SPIKE=`echo "$GREY" | cut -d\  -f10`
+    GREY_SPIKE=`echo "$GREY" | cut -d\  -f11`
     local GREY_ALL_SOURCE=`im_identify $SOURCE_IMAGE`
     GREY_ALL=`cat "$GREY_ALL_SOURCE" | grep -A 256 Histogram | tail -n 256`
 
-- 
GitLab