0

imagemagick を使用して画像の平均輝度を調整しようとしています。画像のサイズと色を変換したので、以下のようにグレースケールになりました。

body_heavy_female_gray_resize

次に、各画像の輝度を調整して、それらが一致するようにする必要があります (調査用)。ターゲット輝度平均は 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

より良く見えるこの画像を得ました!

4

1 に答える 1