From cf88e403a5ac4fd51b473ff4f92c2b0a4aca5e92 Mon Sep 17 00:00:00 2001 From: Toke Eskildsen <te@ekot.dk> Date: Thu, 9 Jan 2014 19:50:36 +0100 Subject: [PATCH] Closes #34 (Count holes in the histogram) --- analyze.sh | 12 ++++++++++-- quack.sh | 4 +++- web/image_template.html | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/analyze.sh b/analyze.sh index 73a2f49..62bc50c 100755 --- a/analyze.sh +++ b/analyze.sh @@ -43,7 +43,7 @@ function im_identify() { # Input: image # Sample: foo.png # Produces foo.grey with $PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY -# Output: $PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY +# Output: $PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY $ZEROES $HOLES function grey_stats() { local SRC="$1" if [ ! -f "$SRC" ]; then @@ -56,6 +56,9 @@ function grey_stats() { local INFO=`cat "$IDENTIFY"` # TODO: No good as the histogram data might be much less than 256 local VALUES=`cat "$IDENTIFY" | grep -A 256 Histogram` + if [ ! "." == ".`echo "$VALUES" | grep Colormap`" ]; then + local VALUES=`echo "$VALUES" | grep -B 256 Colormap` + fi local RAW_VALUES=`echo "$VALUES" | grep "[0-9]\\+: ("` # local VALUES="$INFO" @@ -70,6 +73,11 @@ function grey_stats() { 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 ZEROES=$((256-UNIQUE)) + local SPAN=$((LAST_GREY-FIRST_GREY+1)) + local EDGE=$((256-SPAN)) + local HOLES=$((ZEROES-EDGE)) + 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'` @@ -87,7 +95,7 @@ function grey_stats() { IFS=$SAVEIFS - echo "$PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY $SPIKE_COUNT $SPIKE_PERCENT $SPIKE_GREY" + echo "$PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY $SPIKE_COUNT $SPIKE_PERCENT $SPIKE_GREY $ZEROES $HOLES" } # Produces a histogram over greyscale intensities in the given image diff --git a/quack.sh b/quack.sh index f5cdc1b..a015ead 100755 --- a/quack.sh +++ b/quack.sh @@ -794,7 +794,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 $COUNT_SPIKE $PERCENT_SPIKE $GREY_SPIKE + # $PIXELS $UNIQUE $FIRST_COUNT $PERCENT_FIRST $FIRST_GREY $LAST_COUNT $PERCENT_LAST $LAST_GREY $COUNT_SPIKE $PERCENT_SPIKE $GREY_SPIKE $ZEROES $HOLES # 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` @@ -807,6 +807,8 @@ function makePreviewPage() { GREY_COUNT_SPIKE=`echo "$GREY" | cut -d\ -f9` GREY_PERCENT_SPIKE=`echo "$GREY" | cut -d\ -f10` GREY_SPIKE=`echo "$GREY" | cut -d\ -f11` + GREY_ZEROES=`echo "$GREY" | cut -d\ -f12` + GREY_HOLES=`echo "$GREY" | cut -d\ -f13` local GREY_ALL_SOURCE=`im_identify "$SOURCE_IMAGE"` GREY_ALL=`cat "$GREY_ALL_SOURCE" | grep -A 256 Histogram | tail -n 256` diff --git a/web/image_template.html b/web/image_template.html index 2d97206..6e3d436 100644 --- a/web/image_template.html +++ b/web/image_template.html @@ -30,6 +30,7 @@ Dark ${GREY_FIRST}: ${GREY_PERCENT_FIRST}%<br/> Spike ${GREY_SPIKE}: ${GREY_PERCENT_SPIKE}%<br/> Light ${GREY_LAST}: ${GREY_PERCENT_LAST}%<br/> Unique greyscale values: ${GREY_UNIQUE}<br/> +Histogram holes: ${GREY_HOLES}<br/> ALTO-PC: ${ACCURACY}% <p><input type="checkbox" id="toggle_grid" onClick="toggleGrid();">Grid</input></p> <p><input type="checkbox" id="toggle_textblock" checked="checked" onClick="toggleTextBlock();">TextBlocks</input></p> -- GitLab