Я бы предложил выделить рассматриваемые пиксели с помощью ImageMagick FX .
. Как отметил Марк в комментариях, мы не совсем понимаем следующее требование.
выберите первые n% красного, зеленого и синего
Что может означать что угодно.Я предполагаю, что вы нацеливаетесь на низкие значения или низкую интенсивность пикселей.Я покажу пример для последнего;На мой взгляд, это имеет больше смысла для настройки гаммы на изображениях с плохим динамическим диапазоном.
Для изображения со случайными значениями n%
.
convert -size 250x250 plasma: plasma.png
Создайте маску изображения, выделив пиксели, на которые вы хотите наложить, и сделайте их WHITE
.Используйте BLACK
, чтобы пиксели игнорировались.
convert plasma.png -fx 'intensity<0.4?1:0' -blur 1x3 mask.png
# Or use threshold, as pointed out in the comments.
convert plasma.png -threshold 40% -negate -blur 1x3 mask.png
С данным изображением клонируйте его и примените гамма-коррекцию.Используйте сгенерированную ранее маску, чтобы установить альфа / прозрачность, и составьте поверх исходного изображения.
convert plasma.png \( \
+clone -gamma 1.6 \
-compose copy_opacity mask.png -composite \
\) \
-compose ATop -composite output.png