Это довольно сложная проблема, и решение, которое работает лучше всего, будет зависеть от характеристик изображения - какой масштаб является типом? как ухудшилось изображение? Граница между деталями, которые вы хотите сохранить и ухудшить, которые вы хотите исправить, - это то, что может решить только человеческий оператор, поэтому для этой проблемы не существует автоматизированного решения для решения одного размера, и вы должны ожидать некоторые экспериментирование.
Основной метод заключается в том, что вы хотите настроить значение каждого пикселя в изображении, чтобы оно было похоже на пиксели, которые его окружают. Положите эти термины, вы можете понять, что это просто операция размытия. После того, как вы размыли изображение, вы оставили буквы с нечеткими краями, чтобы снова получить четкие буквы, это пороговая операция - вы устанавливаете пороговый уровень серого цвета, и все светлее, чем оттенок серого, становится белым и все темнее, чем порог становится черным. Комбинация blur plus threshold дает вам широкий спектр эффектов, которые вы можете использовать, чтобы сделать текст более (или менее) разборчивым. Для примера приведенного изображения у меня были неплохие результаты с радиусом размытия 5 и пороговым уровнем 70%.
convert QFSimZX.jpg -blur 5 -threshold 70% output.png
Вы можете получить более сложным, чем это в случае необходимости, путем реализации пользовательской функции размытия с оператором -fx
. Fx мощный, но несколько сложный, и вы можете прочитать об этом здесь: http://www.imagemagick.org/script/fx.php. Я попробовал быстрое выражение fx, которое заполнило пиксель, основанный сначала на его выше и ниже соседи, а затем на его левом и правом соседях. Этот метод действительно позволяет точно настроить, какие пиксели считаются при вычислении размытия:
convert QFSimZX.jpg -monochrome \
-fx 'p[0,-1]+p[0,1] >= 2 ? 1 : 0' \
-fx 'p[-1,0]+p[1,0] >= 2 ? 1 : 0' \
output.png
Этот ответ устарело, как Imagemagick теперь имеет лучший инструмент для этого под названием морфологии. – retroj