Как я могу массово конвертировать изображения без цвета в оттенки серого?
-
21-12-2019 - |
Вопрос
У меня есть каталог, содержащий очень большое количество изображений в формате JPG (сканы бумажных документов), которые в настоящее время являются sRGB.
Многие, но не все из них на самом деле не имеют цвета или имеют цвет только в качестве фона (напримерцветная бумага или слегка не совсем белый скан).
Я хотел бы массово преобразовать эти изображения (но не изображения, которые имеют реальный цвет) в оттенки серого, чтобы сэкономить место на диске.
Я предполагаю, что есть какой-то способ сделать это с помощью ImageMagick, но я не знаю как.Предложения?
Решение
Imagemagick's mogrify
утилита была бы самым простым решением.
mogrify -path /path/to/output/dir/ -colorspace Gray /path/to/source/files
Возможность определить, какой документ соответствует реальным цветам, может быть очень ограниченной.Я бы предложил оценить количество цветов для каждого изображения и конвертировать только те изображения, которые опускаются ниже заданного порога.
THRESHOLD=1024
FILES=`ls /path/to/source/files`
for FILE in ${FILES}; do
COLORS=`identify -format %k "$FILE"`
if [[ $COLORS -lt $THRESHOLD ]]; then
mogrify -path /path/to/output/dir/ -colorspace Gray "$FILE"
fi
Также может оказаться разумным оценить варианты предварительной обработки для снижения уровня шума. Монохромный было бы проще всего применить, но другие замечательные решения существует.