调整图像亮度imagemagick

时间:2018-10-22 18:30:06

标签: imagemagick luminance

我正在尝试使用imagemagick调整图像的平均亮度。我已经转换了图像的大小和颜色,因此它们现在处于灰度状态,如下所示:

enter image description here

接下来,我需要调整每个图像的亮度,以使其匹配(用于研究)。目标亮度平均值为189。

我使用以下代码获取亮度值:

$ convert image -colorspace LAB -channel r -separate +channel -format "%[mean]\n" info:  

从65535(body_heavy_female_gray_resize)中给出哪个值

我使用等式x / 65535 = 189/255来了解我对高质量图像的目标:48,573。

上面的图像当前为29319.5

是否可以在命令行中调整此值并将其设置为48573?

我尝试过:

convert image -colorspace LAB -channel r -evaluate set 48573

AND

convert image -colorspace LAB -channel r -evaluate set "48573"

AND

每次尝试列出的数字有错误时,我都会尝试将最终数字更改为189、89和.89(以防我使用错误的尺寸)。

> convert:  `.89' @ error/convert.c/ConvertImageCommand/3272

我一直在解决这个问题,并根据下面剩下的评论进行了调整,所以现在我在这里:

from this post

我运行了以下脚本:

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

但是这里是target image:,它似乎太暗了。谁能看到错误?

使用下面我写的GeeMac的答案:

casey$ input=F201_background_gray_resized.jpg
casey$ magick $input -brightness-contrast "%[fx:${lumin}-(mean*100)]" ${input}_lumintwo.jpg

得到output image,看起来更好!

1 个答案:

答案 0 :(得分:1)

如果您使用的是IM7,则可以直接在“ magick ...”命令中进行很多计算。例如,此命令读取输入图像并调整亮度,以使输出图像的平均值为74.12%...

lumin=74.12

magick input.jpg -brightness-contrast "%[fx:${lumin}-(mean*100)]" output.jpg

我不知道与“ -modulate N”进行调整相比,但是当我用此检查输出时……

magick output.jpg -format "%[fx:mean*100]\n" info:

...结果为“ 74.1219”,或$ {lumin}的值。它可能会给您另一种考虑的方法。