First, you need to install a version of IM which is HDRI enabled (see here)
# test for valid version of Image Magick
im_version=`convert -list configure | \
sed '/^LIB_VERSION_NUMBER /!d; s//,/; s/,/,0/g; s/,0*\([0-9][0-9]\)/\1/g'`
[ "$im_version" -lt "06050407" ] && errMsg "--- REQUIRES IM VERSION 6.5.4-7 OR HIGHER ---"
# test for hdri enabled
hdri_on=`convert -list configure | grep "enable-hdri"`
[ "$hdri_on" = "" ] && errMsg "--- REQUIRES HDRI ENABLED IN IM COMPILE ---"
#read $file, load and converting to greyscale
convert $file -colorspace gray in_grey.tiff
# crop image to smallest dimension
min=`convert in_grey.tiff -format "%[fx: min(w,h)]" info:`
# crop image, and convert to png (why?)
convert in_grey.tiff -background white -gravity center -extent ${min}x${min} in_grey_crop.png
# get data, find mean as proportion, convert mean to percent, and de-mean image
data=`convert in_grey_crop.png -verbose info:`
mean=`echo "$data" | sed -n '/^.*[Mm]ean:.*[(]\([0-9.]*\).*$/{ s//\1/; p; q; }'`
m=`echo "scale=1; $mean *100 / 1" | bc`
convert in_grey_crop.png -evaluate subtract ${m}% in_grey_crop_dm.png
# pad to power of 2
p2=`convert in_grey_crop_dm.png -format "%[fx:2^(ceil(log(max(w,h))/log(2)))]" info:`
convert in_grey_crop_dm.png -background white -gravity center -extent ${p2}x${p2} in_grey_crop_dm_pad.png
# fft
convert in_grey_crop_dm_pad.png -fft in_ft.png
# get spectrum
convert in_ft-0.png -contrast-stretch 0 -evaluate log 10000 in_spec.png
... but it's still not quite right. Any tips?
No comments:
Post a Comment