imagemagick を使用して画像の平均輝度を調整しようとしています。画像のサイズと色を変換したので、以下のようにグレースケールになりました。
次に、各画像の輝度を調整して、それらが一致するようにする必要があります (調査用)。ターゲット輝度平均は 189 です。
このコードを使用して輝度値を取得しました。
$ convert image -colorspace LAB -channel r -separate +channel -format "%[mean]\n" info:
これにより、65535 の値が得られます (この投稿から)
式 x/65535 = 189/255 を使用して、高品質の画像の目標値である 48,573 を理解しました。
上の画像は現在29319.5
この値を調整して、コマンド ライン内で 48573 に設定する方法はありますか?
私は試した:
convert image -colorspace LAB -channel r -evaluate set 48573
と
convert image -colorspace LAB -channel r -evaluate set "48573"
と
エラーがリストされた数値に含まれるたびに、最終的な数値を 189、89、および .89 に変更してみました (寸法が間違っていた場合に備えて)。
> convert: `.89' @ error/convert.c/ConvertImageCommand/3272
私はこの問題に取り組み続け、以下に残されたコメントに基づいて調整したので、今ここにいます:
次のスクリプトを実行しました。
target_percent_luminance=74.12
hundred=100
echo "working on ${target_pic}"
gray_mean_val=$(magick identify -verbose ${target_pic} | grep mean | awk '{print $2}' | sed -n '1p')
percent_gray_mean_val=$(echo $hundred\*$gray_mean_val/255 | bc)
echo $percent_gray_mean_val
difference=$(echo 74.12-$percent_gray_mean_val | bc)
echo $difference
magick convert ${target_pic} -modulate ${difference}% ${target_pic}_luminance.jpg
各行が機能しました -- 出力:
casey$ target_percent_luminance=74.12
casey$ hundred=100
casey$ echo "working on ${target_pic}"
working on F201_background_gray_resized.jpg
casey$ gray_mean_val=$(magick identify -verbose ${target_pic} | grep mean | awk '{print $2}' | sed -n '1p')
casey$ percent_gray_mean_val=$(echo $hundred\*$gray_mean_val/255 | bc)
casey$ echo $percent_gray_mean_val
40
casey$ difference=$(echo 74.12-$percent_gray_mean_val | bc)
casey$ echo $difference
34.12
casey$ magick convert ${target_pic} -modulate ${difference}% ${target_pic}_luminance.jpg
しかし、ここに出力画像がありますが、これは暗すぎるようです。誰でもエラーを見ることができますか?
以下のGeeMacの回答を使用して、次のように書きました。
casey$ input=F201_background_gray_resized.jpg
casey$ magick $input -brightness-contrast "%[fx:${lumin}-(mean*100)]" ${input}_lumintwo.jpg
より良く見えるこの画像を得ました!