#image-processing #imagemagick #image-resizing #logarithm
#обработка изображений #imagemagick #изменение размера изображения #логарифм
Вопрос:
Я хотел бы изменить масштаб изображения в одном измерении, используя логарифмический масштаб. Я искал какую-то идею о том, как это сделать. Некоторые параметры:
-evaluate
кажется, принимаетPow
и другие функции-fx
кажется, это вариант, и / или я все еще работаю над его пониманием
Оба вышеперечисленных параметра могут быть недоступны для -size
операций изменения размера или.
Комментарии:
1. Можете ли вы опубликовать пример ввода и вывода? Я не понимаю вашего последнего утверждения о размере. Пожалуйста, уточните.
Ответ №1:
Я не уверен, о чем вы спрашиваете. Но вот как применить логарифмическое преобразование к изображению в ImageMagick. Поскольку геометрические преобразования являются обратными преобразованиями (укажите выходной пиксель и найдите, откуда он взялся на входном изображении), мы должны использовать обратную логарифму величину, которая является экспонентой. Например, для горизонтального преобразования:
Ввод:
convert lena.png -virtual-pixel black -fx "u.p{exp(6*i/(w-1)),j}" lena_ln.png
Теперь, если вы хотите, чтобы оно точно соответствовало 256 пикселям по горизонтали без черной области справа, нам нужно вычислить логарифм:
ln(x 1) for x=0 to 255
ln(0 1) = ln(1) = 0
ln(255 1) = ln(256) = 5.545
Теперь нам нужна обратная операция для -fx , которая является экспоненциальной,
ln(x 1) = 5.545
x 1 = exp(5.545)
x = exp(5.545) - 1
convert lena.png -virtual-pixel black -fx "u.p{exp(5.545*i/(w-1))-1,j}" lena_ln2.png